Canary in the code mine

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:

  1. Take the thing or event to be understood apart, preferably down to its indivisible parts.
  2. Explain the behavior of each part taken separately.
  3. 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.

Synthetic thinking

Synthetic thinking process is:

  1. Identify the whole of which the system o be explained is a part.
  2. Explain the behavior or properties of the containing whole.
  3. 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: