Published by Fabian on 17 Apr 2009
Keep it simple!
I had troubles choosing the title for this post. Isn’t “Keep it simple” common sense?
No its not. I had once to deal with a customer that had some good business analysts working with me. However they had troubles understanding software development. Its not that they were not right but one of them made a quote which we talk at work a lot about it:
A simple solution is never a good solution
The rationale is the following: Because the business problem is so complex, the solution must be complex to cover all the nuances of the problem.
It often led to spaghetti code when developing with them. It was hard to convince them that a simple well thought smart solution would cover much better most of the use cases and is extendable to cover everything that is needed.
basically I said the main problem was that we were unable to find a simplified description of the business issue to tackle.
The reason why I post this is that I read today an interview with Paul Buchheit on crazyengineers.com. Paul created Google offerings like Google Mail and Adsense, something we for sure consider as big stuff with many complex use cases. However he also says:
CE: What are your tips to software engineers on building highly scalable software?
Mr. Buchheit: Keep it simple. A lot of times people think that hard problems demand complex solutions, but we’ve found that the opposite is often the case, because complex things quickly become unmanageable and incomprehensible. If the system is simple, then it’s generally easier to understand and easier to scale.
Perhaps it helps to convince people that simple is better when we are able to tell success stories of products that are developed with the KISS paradigm.
Oh wait, perhaps the problem isn’t really KISS, but that “simple” implies for some people that the solution is not thought through well enough?
In fact it often takes a lot of time to develop a simple solution. Simple in terms of lines of code, code complexity, configuration, parameters etc. But not simple in terms of thought spend on developing the solution.
Perhaps this blog title should be called “Keep it smart!”
What do you think?