Synthetic thinking
The most important lesson I got from systems theory is the opposite of analytical thinking: synthetic thinking. Most systems theory resources talk about stocks, flows and feedback loops, but that is missing the forest for the trees. The best resource I have found that starts with what matters most is Dr. Russel Ackoffs material. Historical intro into systems theory Intro into systems theory with stories from his management consulting work Part 2 of the above video Here is the part of the video where Prof. Ackoff talks about the difference between analytical and synthetic thinking
Analytical way of thinking
Analysis is a three step process:
- Take the thing or event to be understood apart, preferably down to its indivisible parts.
- Explain the behavior of each part taken separately.
- Aggregate the explanations of the parts into an explanation of the whole.
What is a system?
A system is a whole that is defined by its function in a larger system (or systems) of which it is a part and that consists of at least two essential parts. These parts must satisfy these three conditions.
- each part can affect the behavior of the whole
- no parts have an independent effect on the whole
- every subset of parts can affect the behavior or properties of the whole, and none have an independent effect on the whole When a system is taken apart, it looses all its essential properties, and so do its parts. That is why analytical thinking does not work. So we need a different way of thinking.
Synthetic thinking
Synthetic thinking process is:
- Identify the whole of which the system o be explained is a part.
- Explain the behavior or properties of the containing whole.
- Disaggregate the containing whole so as to identify the role or function in the whole of which the system to be explained is a part.
Two sides of the same coin
Analytical thinking and synthetic thinking are two sides of the same coin. With analytical thinking we ask "How?" and go down to the components, to get knowhow. With synthetic thinking we ask "Why?" and go up to the embedding system (or systems), and get understanding. You can take apart all the cars in the world, and never understand why some have the steering wheel on the right, and others on the left, because that information is not in the components, but the embedding system of human society.
Here are some of the important concepts I learned from Prof. Ackoff about synthetic thinking that should be guiding principles in programming:
- The most effective solution to a problem is rarely if ever found at the place where the symptom occurs.
- Combining the best parts does not make the best system or even a working system.
- Making a subsystem worse can make the whole system better.