Tuesday, January 5, 2010

Why don't more engineers follow the KISS principle?

I was having a drink with some colleagues last night, and the subject of the over-use of high-availability environments came up.   At too many customer sites we see requirements that the system must have 5 9s uptime (approximately 15 minutes a year downtime) when there is patently no reason for such a requirement.  As a result, we end up spending far more time, more hardware, and more software licenses on the solution than is required.  This not only hurts the project during development, but also during maintenance as a more complex solution requires more maintenance.  This problem isn't limited only to HA, but extends to all areas of design.  In my opinion, this tendency to over-complicate projects is more responsible for project overruns and failures than any other cause.  To make things even worse, organisations who decide to do things "just because" tend to under-invest in them which means that the result is half-arsed and doesn't work properly anyway.

In a quick survey that I conducted of the people around the table at the pub, all of us subscribe to the KISS principle, and I suspect that most engineers would agree with us.  So why do so many projects end up bloated and lumbering?  The knee jerk reaction that everyone other than myself is an idiot just doesn't hold water.  Chances are the next enterprise architect that I meet will be almost as smart as me (even if my ego tells me otherwise), so what is it?  Here's a couple of theories.

Firstly, keeping things simple means that you will be done quickly, but you may need to come back later to make changes or to add functionality.  This is normal and expected within an Agile development methodology, but more problematic in big institutions that take ages to approve budgets and have difficulty dealing with change.  In many organisations it is easier to ask for $1M in one go, rather than ask for 10 $100K budgets. This sucks, but it is the way things go.

Secondly, companies contain many individuals, each of which has their own view on what is important. The reporting guy thinks that all his reports are the most important thing.  The IT guy thinks that good data architecture is the be all and end all.  If one constructs a plan by consulting everybody in the organisation you will end up with gold plating and and a very very long build cycle.

In order for KISS to reign a project needs ruthless leadership.  They need to make sure that their staff understand the principles by which the project is being run, and the intended goal. Knowing what you want to achieve is very important.

P.S. Happy new year!
blog comments powered by Disqus