There’s a old saying that when the only tool you have is a hammer, every problem looks like a nail, but you can’t fall into the trap of using the same approach for every problem and hope to have much success. In fact, most problems or projects have several possible solutions. The trick is finding the right one for the situation.
I’ve spent over a dozen years working in software development, and over those years I’ve found that a fix for any problem tends to fall into one of five categories: Brute Force, Kludge, Hack, Elegant and Ideal.
There is a project management concept called the “Golden Triangle”. At each of its points are Time, Money and Resources. Shrinking any one side will expand the others. Shorten time and you’ll need more money and resources. Take away resources and you’ll need more time. The right solution depends on the constraints you are working under. First though, let’s take away any constraints for a minute and consider five approaches to solving any problem.
Brute Force. The “just make it work” approach. This is the quickest, but a brute force solution is probably not a long-term fix. The Brute Force solution is putting plywood up over a broken window or wrapping duct tape around a broken radiator hose. If your only tool is the hammer, when using the brute force approach it’s probably a sledge hammer!
Kludge. This approach is a often a better choice than brute force, but is still usually a temporary solution. A kludge is far from elegant, but does give you a quick and dirty option. The biggest drawback of a Kludge is that it often can cause new problems, ending up in layer after layer of Kludges cobbled together until the problem is solved.
Hack. A hack is a clever approach to a problem, using something in a way other then its intended use. The Hack is quick and clean, but future changes may break it, or it may break the way something else is supposed to work.
Elegant. An elegant solution not only solves the problem, but does so in a fancy way. The Elegant approach is costly and time-consuming but the result is top-quality. When striving for an Elegant solution you run the risk of “Gold Plating” or adding things that aren’t necessary.
Ideal. The Ideal solution does just enough to provide a solid result to the problem. Any more and you introduce new risks, any less and you’ll need to go back and address the problem again later. It is the right solution given the constraints you are working under.
Remember the words of French writer and aviator Antoine de Saint-Exupery:
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Occam’s Razor, based on the work and philosophy of medieval English philosopher and Franciscan monk William of Ockham, is commonly interpreted as “the simplest answer is usually the right one”. You can also remember this by giving every solution a KISS! (Keep It Simple, Stupid.)
So how can you put these into action? Next time you are faced with a particularly tough problem, grab a sheet of paper and write a very brief description if the problem you’re faced with. Beneath that, write out any constraints such as deadline, project budget, etc.
Now write out each of the five approaches listed above and how you could solve your problem using each approach. It doesn’t need to e detailed, just enough to get the thought process going.
By the time you’ve gotten to writing down the Ideal solution you should have a pretty good idea where you’re going with it. Now take into consideration the constraints you are working with and figure out what will or won’t work with each other type of approach. The final answer may very well be a combination of approaches too!