Systems Thinking is becoming one of the hottest topics in Lean and Agile software development – despite the fact that it is over 50 years old.
Systems Thinking is, unsurprisingly, thinking about systems. Most thinking that is done and taught in organisations around the world is not based on systems – it is analytical thinking.
Systems, as opposed to collections, are a group of interrelated entities. Unlike collections, systems:
All human organizations are, of course, systems. Many physical things are systems too, but some are just collections (see below). Many organizations get into problems when they treat themselves as collections, not as systems. Systems Thinking tries to solve this problem by looking at the properties of systems and the important ways in which they differ from collections.
One of the key characteristics of systems is “emergent properties”. These are properties that only come about by the interactions of the parts of the system. That is to say, the properties are themselves not to be found in any of the individual components of the system.
This is a crucial point. It means that if you take a system apart and analyse the individual components in isolation (which most people do when studying a system), you will never, ever discover the emergent properties, no matter how carefully you study the components.
As Buckminster Fuller once said, “there is nothing in a caterpillar that tells you it will become a butterfly”.
Another important aspect of systems is that they attempt to maintain stability and equillibrium, through feedback processes. Feedback is at a basic level, the recording and transmission of information. In the case of a system, feedback is information provided to the system in regards to how it is tracking to its desired state. Systems use balancing feedback loops to maintain equillibrium or homeostasis. The usual example is of a thermostat, but you can probably think of lots of examples, especially in biological or organizational systems.
The principles of Systems Thinking are about understanding the nature of systems, and the interrelationships between the parts of a system.
It is important to understand what systems really are and are not. Remember, systems are a group of entities that are related to each other and affect each other.
An example of a system would be a football team, or a computer. An example of a collection (a group unrelated entities) would be all the people in the world with a certain birthday. Or a pile of books on a floor.
An interesting example that can catch people out is the fruit in a fruit bowl. While this might at first seem like a collection, it is in fact a system. As one piece of fruit starts decomposing, that can accelerate the decomposition of all the other fruit. This goes to show that there are often subtle interrelationships that we might at first miss. Many things that at first seem like collections can actually turn out to be systems.
Systems Thinking encourages people to “zoom out”, to see the broader picture, and to understand the relationships between entities.
Most people use Analytical Thinking in their jobs. This is a type of thinking that “zooms in” and breaks complex things down into sub-components. Systems Thinking is the opposite of this: it is where you try and view the system within which an entity operates.
Analytical Thinking is not inherently bad or wrong. And it is perfectly suitable for scientific purposes, for example engineering or chemistry. However, when looking at human systems such as organisations, Systems Thinking is often helpful. Analytical Thinking can result in missing the bigger picture and the causal interactions between people.
One of the great tragedies of analytical thinking is favoring local optmizations. People everywhere are encouraged (through KPIs, bonuses and other incentives) to optimize their local parts, rather than the broader whole.
What is vital is that an organization chooses its “system optimizing goal”, i.e. the over-arching goal that all sub-goals should be contributing towards (e.g. “increase company net profit” or “acquire more customers each month”), and then get all parts of the organization to optimize towards that goal.
What often happens instead is that individual business units or departments are incentivized to boost their own localized metrics, and will interfere or sometimes outright sabotage other parts of the organization in order to beat their targets and get their bonuses. This infighting is of course bad for everybody.
Rather than focus on short-term gains or local optimizations, Systems Thinking encourages a broader view. And it’s not just global optimizations either – it’s also about considering the deeper causes and consequences of actions in a system.
One of the maxims of Systems Thinking is “today’s solutions are tomorrow’s problems”. Often people bring in quick hacks and fixes to solve problems, that cause knock-on effects on the broader system. And these cures can end up being worse than the disease.
There are some ways you can apply Systems Thinking in your organization right away.
Move away from local KPIs
Local KPIs and similar incentives can be very damaging to organisations. They encourage infighting, squabbling, and sabotage, and they result in global sub-optima.
Some recommend instead to always “measure up”: instead of measuring a person, measure the team they are in. Instead of measuring a team, measure the department they are in. Instead of measuring the department, measure the business unit it is in.
By always “measuring up” one level, you are discouraging local optimizations and encouraging people to work for the greater good of the people around them.
There is a related body of thinking called Theory of Constraints, developed by an Israeli writer called Eli Goldman (and described in his excellent book “The Goal“, which I really recommend everyone read). This theory says that any system has a constraint, or bottleneck, on its throughput. Instead of performing local optimizations at various parts of the system, the system should be optimized overall by focusing on that particular constraint.
Once that constraint has been optimized and overcome and is no longer the constraint, another part of the system will become the next constraint. So efforts should then focus on removing that constraint on throughput, and so on.
The Theory of Constraints has some similarities and important lessons for systems thinking, and should be definitely applied in combination.
Be careful when fixing problems
Often, people apply quick fixes and bandaid solutions in an organization. These can actually end up causing wider and more serious problems in other parts of the system, due to the interrelatedness of the parts. The cure can often turn out to be worse than the disease!
This excellent video shows some bizarre and interesting examples of this problem.
I hoped you found this short article interesting – Systems Thinking is a fascinating and powerful tool for anyone interested in software development (or management overall, for that matter).