It’s all about the System: Systems Thinking and Scrum
This blog entry is a summary of my session in Scrum Gathering Las Vegas. You can view a video of the session (31 minutes) in YouTube and the slides are available in SlideShare.
1. Systems Thinking
Systems Thinking is an approach to understand the performance of organizations. It looks at organization as a System which consist of interconnected parts that together create the characteristics of the entire system. Instead of looking at the parts separated, Systems Thinking takes a holistic view to understand how the parts fit together.
Parts of the system affect each others. This means that cause-effect relations in a system are cyclic: a results of an event can be also the cause of the event. For example, development team doesn’t automate tests. Team analyzes the causes and finds that problem is the excessive workload causing lack of time. However, when they study consequences of missing tests, they notice that their product has lot of bugs which causes extra work. The effect of a problem is also a cause for the problem.
This brings up an important lesson about system improvement: Getting rid of what you don’t want does not give you what you do want.
Organizations as systems have a Purpose. A system as a whole works to achieve the purpose.
Why it is important to understand Systems? W. Edwards Deming has said that 95% of variation in the performance of the system is caused by the system itself and only 5% can be accounted for the people. This may sound counter-intuitive. You can check my blog post about “Exercise to illustrate 95/5 rule” to see that it is actually quite true. “A bad system beats a good person every time“, says Deming. Similarly, bad people fail in a good system. We need to create a good system and find good people to work there.
2. Thinking – System – Performance
Organizations are created by Thinking: the way we understand cause-effect relations. Thinking creates the system which creates the sustainable performance of an organization.
Unless we change our thinking we are constrained to create systems that repeat the errors of previous systems. For example, if we think all work should be done in projects then we are constrained to fiddle with project details rather than find radical improvement through new thinking (for example continuous delivery).
In order to improve we must have two things
- See the system to understand it
- Change thinking to improve
3. System Conditions
How can we see the system?
System Conditions are visible, tangible things that help to see the system. They are direct or indirect results of design and management of work. Here are some common System Conditions (click to enlarge).
Picture by Hermanni Hyytiälä (Twitter @hemppah)
System Conditions are important for several reasons: (i) They drive the performance of the organization, (ii) In order to improve at least some of them needs to be changed and (iii) They tell us about management thinking.
Everyone wants good for the company so why do we have harmful system conditions? The reason is that people who are responsible for system lack knowledge about the nature of work being done. They do not know how the work works.
4. Change strategies
How can we change something once we see it?
We can change with three strategies. Power-Coercive strategy uses carrot and stick, it rewards following the new rules and punishes for disobedience. Empirical-Rational uses logical arguments to rationalize the benefits of new behavior. Normative-Reeducative uses observation and action, collects information and understanding before changing.
Normative is the only strategy that creates sustainable change.
Imagine 3 year old child learning that fire can be dangerous. Coercive learning would be telling him that touching the fire will result a punishment. Rational learning is telling him that fire is hot. Normative learning is that he sticks his finger in the fire, immediately changes his assumptions about safety of fire, cries a little and learns a lot.
5. Systems Thinking and Scrum
Scrum allows two paths to improve the system. We can deploy Scrum and immediately get rid of some harmful system conditions. Secondly, we can use Scrum as to see the system and experiment with new thinking.
When deploying Scrum, we can have the following improvement just by doing Scrum
- From competing projects to single product backlog
- From functional silos to cross-functional teams
- From long feedback cycles to daily feedback
- From project model to continuous delivery
However, deploying Scrum sounds like a Coercive change. At its best is will be Rational. By it is not Normative, especially if “deployment” involves harmonization of practices or top-down push for Scrum.
A better way to use Scrum is to get transparency, see the system and learn through experiments.
Scrum creates transparency to the work at hand. How do you know Scrum works? If you know, at the end of each Sprint, exactly where you are — then Scrum is working.
Systems have a Purpose. Purpose comes from understanding demand that customers have. Scrum allows teams self-organize to fulfill the Purpose.
Teams and organizations should measure their performance against the purpose. Unfortunately, teams often measure some proxy variable that has no value for the end customer, e.g. velocity.
Second effective pattern in Scrum is experiments. Each Sprint is an experiment. Each improvement that team does is an experiment. This pattern has two benefits. First, it allows to change harmful system conditions gradually through experimentation. For example, “Let’s try to limit work-in-progress in the next Sprint and work on one item at the time”. Usually this has better buy in that pushing changes.
Another benefit of experiments is that it creates culture of experimentation in organization. When teams are doing enough experiments, also management moves away from “analysis paralysis” towards trying new things.
- Organizations are systems, created by Thinking
- System Conditions help to see the System
- Scrum helps to see the system
- Scrum can be used to create Normative change in Thinking