There is a lot of confusion about complexity. Chaos about chaos. Sorry that’s not helping is it. You see the point?
No. OK here goes.
Let us start simply. There are random systems. Systems where the next thing that is going to happen can’t be predicted. The mathematicians call these systems stochastic. Some people like to use the term non-deterministic. If you want to work with these kind of systems you use something called probability theory. The classic example of a stochastic system is the coin flip. Probability of heads or tails is 50%.
So there are also non-random systems. These systems are deterministic. That is the future state of the system is not random. A deterministic system will always produce the same behaviour given the same starting position. Newton’s laws of motion are classically deterministic.
Now the confusion Chaos theory brings is that it is possible to have a deterministic system in theory, which in practise behaves like a non-deterministic system. This was best illustrated by the butterfly effect. Where very small changes in the initial conditions of a system have a significant effect on the outcome.
It turns out even the coin-toss is actually a deterministic system that behaves randomly.
OK see why I was confused?
Now add into the mix linear and non-linear systems. Linear systems are simple. The input into these systems are proportional to the output. You turn a tap a little bit, some water comes out. You turn it more. More water. Non-linear systems don’t work like these. The link between input and output is more complicated. These non-linear functions are very hard to work with mathematically.
So what happens? Well it just so happens that most non-linear systems can be approximated with a linear model of the system. That means you get nice simple maths to work with. Great.
However the problem is chaotic behaviour (the stuff that makes a deterministic system look non-deterministic) is neatly hidden when using a linear model. Taking a software-engineering example. If you have a linear model of a team. Then adding more people to a team will increase the amount of work that team can do in a linear way. In practice we have know since at least 1975 when The Mythical Man-Month was published that this is not true. Counter-intuitively adding more people to a software-development team can actually slow down the team.
So what does it take for a system to move from something we can model usefully in a deterministic way to one that must then be tamed using probability? It was Newton who first noticed the problem way back in 1687. Newton noticed his mathematics worked brilliantly for 2 objects failed once he tried to model 3 (the three-body problem).
It wasn’t until 1887 that Poincaré was able to understand what was going on with three-body problem. 200 hundred years. It only takes three inter-dependant objects to create chaotic behaviour that appears in practice to be random. This is why both in software-engineering and in project management people have a principle to remove dependencies wherever possible.