Tuesday, September 23, 2008

Keep it simple stupid

Complexity and chaos surrounds us as we try to steer our organisations through these uncertain economic times. The Utopian solution seems to be simplicity and calm which has a compelling magnetism for those exhausted by the rough seas of change or the choppy waters of the stock market. So can we engineer simplicity in and complexity out of our lives?

As a former system designer I applied three simple principles to tame complexity:

1) Do as much as you have to and no more. Minimalism is good; don't add bells and whistles until someone says they will pay for them. Technical people always want to over engineer things.
2) Seek functional cohesion by solidifying related activities into one place or unit so complexity is hidden inside rather than exposed to the poor consumer of the service. It's better that every body does just one thing well rather than lots of people doing the same thing a number of different ways twice. I'm not saying redundancy is bad, rather replication is good!
3) Decouple things so there are not intimate links between components. If you then want to swap one thing for another the whole can be oblivious to the change as everything carries on working as it should.

The key is to hide necessary complexity from the end user/consumer, but remember doing clever things is difficult and complex otherwise everyone would be doing them. Removing complexity can have its costs and can be far from a simple matter. As Einstein famously said "Make everything as simple as possible, but no simpler". I'll take capably complex over stupidly simple any time.