I recently read the book “Systems Thinking for Curious Managers”  and found this good quote:
“Complexity is not a property of problems but of those looking at problems.”
After I finished reading the book, I decided to explore this idea further and found the research paper “A Subjective Measurement of Complexity” . It contains a lot of good ideas. The most important of them is that complexity is subjective and that there is a distinction between the notion of a complex system, a complicated system and a simple system.
Note that Ackoff talks about problems and Fioretti talk about systems. My gut feeling is that there is not much difference between a problem and a system: A problem is a question about a system that we want an answer to, possibly because we want to get more value out of the system or that we want to understand the system better (which gives us value personally). It is also likely that the question and the system will be better defined as we learn about the system along the way.
The paper begins with:
“Complexity is often thought as a property of the system under observation, much in the same way as its mass or its volume.”
And then he states a similar idea as Ackoff:
“An alternative approach […] is that of viewing complexity as a property of the relationship between a system and its observer: the person who is observing a system says that ‘this system is complex’ when she is not satisfied with the mental model she has of it.”
In the end of the introduction, Fioretti makes the distinction between complex, complicated and simple systems:
“If the observer knows that he did not identify all the relevant elementary particles, or if he knows that he did not identify all the causal relationships that link the events these particles generate to the actions he undertakes upon the system, or both, then he says that the system is complex.
If the observer did identify all the relevant elementary particles, as well as the causal relationships that link the events that these particles generate to the actions he undertakes upon the system, but he is not able to express all these relationships by means of a universal law, then he says that the system is complicated.
If the observer identified all the relevant elementary particles as well as the causal relationships that link the events these particles generate to the actions he undertakes upon the system, and if he is able to express these relationships by means of a universal law, then he says that the system is simple.”
I interpret the statements as:
- Complex: We get surprised of the behavior of the system
- Complicated: We understand the system and can predict the behavior of the system, but cannot express it in one or more laws
- Simple: We can express the system in one or more laws
When building software, I think that the “complexity is subjective” idea could be useful. For example:
- “Staff turnover” – getting new members in a team would most likely increase the mean complexity of the software.
- “Code rot” – when code is forgotten by the team, changing the code could lead to unpleasant surprises
- “Size matters” – our brains have a limited working memory, it is difficult to predict how a large system will react to change
There are probably more examples in software. And in other systems too.
(Note: I plan to write more about surprise in the future and how surprise relates to quality. I also plan to write about system boundaries in the future.)