Tim Ross pointed me in the direction of a truly mind blowing documentary on the BBC iPlayer about the nature of chaos, it’s fundamental role in the universe and how it explains the behaviour of complex systems such as the way birds fly in flocks and how we evolve. If you’re in the UK I’d highly recommend watching it before it gets taken down next Sunday (24th Jan 2010). It’s called The Secret Life of Chaos.
What, you may ask, has it got to do with software development? Everything actually. If you recognise that you’re working within a complex system, then you must accept the results will be totally unpredictable (that’s the chaos element), because the laws of nature say it will be so. Instead of trying to force it to be predicable (e.g long term planning, estimation based planning etc.) you allow it to behave like a complex system, which is very simple:
- self-organisation e.g. A flock of birds organise themselves into the most appropriate formation, no one tells them how to do it – there’s no “head bird” orchestrating things.
- simple rules e.g. Animals are impelled to mate with each other, which results in evolution.
- feedback e.g. Mating results in offspring which, if they are successful within their system also mate and produce offspring, resulting in animals more suited to their system.
There are a lot of people within software development starting to talk about how we can harness complexity science to create better organisations and software. Here are some examples:
Jim Al-Khalili was a lecturer on my course at university. I really enjoyed his books and this was a great documentary, especially as some of it was filmed at Bletchley Park. Interestingly, chaos theory’s roots go right back to Alan Turing and the birth of computing, and it’s a science we probably could never have had without computing’s number crunching power.
Folk have been exploring complexity science in management and software development for quite some time now.
For a discussion of a suite of effective theories that describe the behavior of software, see my blog on softwarephysics at:
Specifically, take a look a this posting: