As a developer and later as Architect, I have, many times had this deja-vu feeling about making some changes to the software and getting caught unaware when the change made has some impact in some other area. Sometimes the effect isn’t immediate. A fair amount of time elapses since the cause (ie., my code changes) has been introduced for the effect to take place.
Some of these have been sheer lack of adequate knowledge. But most of the times it has been a kind of reductionist approach. An assumption that the changes are local ( local to a module, say) and so it may not impact anything else anywhere. In other words, it is the difficulty in seeing the whole which leads to such problems.
I was fortunate to come across this wonderful discipline which deals with and only with seeing the whole. This discipline is called Systems Theory. The kind of thinking that leads to seeing problem and solving them by applying Systems Theory principles is known as Systems Thinking. It is about a holistic way of looking at things. These principles are so generic that it can be applied to technological as well as personal issues.
Certain kinds of problem are simple by nature or atleast certain simplifying assumptions would make it much easier to solve. For example, Newton’s Law of gravitation states that two masses attract each other in inverse proportion of the square of the distance between them. This is neatly summed as
F = GMm/r^2
[ M and m are mass of the two bodies separated by a distance r
G is a constant ]
The above discovery assumes point masses and that the interaction between point masses is to be considered in pairs. If lot of objects with various masses are around, then it is just a matter of considering one pair at a time and then vector summing their force of attraction. Such kinds of problems are classified as Organised Simplicity.
The other end of this spectrum are problems where huge numbers and random behaviour is involved. Such problems are amenable to statistical treatment. The laws of physical chemistry are good examples. The molecules are in random motion and distribution and yet certain simple laws govern their behaviour (like density, pressure etc). The qualities that make statistical treatment possible is large numbers and randomness. Such class of problems are classified as Unorganised Complexity.
But what has all these got to do with Systems theory ? Well, that is where I am coming to.
There is yet another class of problems called Organised Complexity where Simple laws wont suffice and Statistical treatment is not possible. It is such class of problems that come under the domain of Systems Theory. Some examples of Organised Complexity can be found in Biology, Economics, Computers, Social Psychology etc.
Systems Theory and Systems Thinking are helpful not only in Technical areas but also non Technical. There is lot of Systems thinking going on in Team Building, Building learning organizations etc.
I recommend the following books for further study.
An Introduction to General Systems Thinking by Gerald M. Weinberg
The Fifth Discipline by Peter Senge
Thinking in Systems – A Primer by Donella H.Meadows