A colleague recently introduced me to the phrase ‘Golden Hammer’ in relation to software development. I’d never heard the phrase before, though the actual concept it represents is all too familiar in web and software development circles, and in fact, anybody who is halfway to being IT literate can probably identify a company that is applying the principle of a Golden Hammer. And this is not a Good Thing.
The concept of the Golden Hammer can be traced back to the psychologist Abraham Maslow, who wrote:
I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.
Maslow was trying to illustrate a most fundamental error in human perception, that just because a person is an expert at a particular subject, or that something they did or used was successful in the past, they may be biased to think that that particular field of expertise or tool may contain the answer to everything.
Even though this is a very simple concept to comprehend at the conscious intellectual level, many web and software developers regularly fail to identify that they are in fact guilty of using the Golden Hammer approach to what they do. And it is easy to understand why this is the case. If you are writing software you are consistently reminded that taking a modular approach to development is preferred, and that code should be as reusable as possible so that a single snippit of code, let us say for instance, a piece of code that ensures an e-mail address is properly formed, can be used again and again. In theory this is a perfectly acceptable approach. It should, in theory, reduce development time. And it should, in theory, increase the stability of software. And, in theory at least, software should be less costly to develop and maintain because it has suddenly become faster to develop and more stable to boot.
But we know this not to be the case in practice.
I’m not just pointing the finger at web and software developers. This mindset is not the product of single-minded IT teams holed up with too many computers and dosed up on too much caffeine, though this can sometimes be the case. We have all been guilty of this behaviour at some point or another. Golden Hammer behaviour is a classic anti-pattern, that is to say, a pattern of behaviour or development which, in practice, is ineffectual and possibly even counter-productive.
Often, the Golden Hammer mindset has a partner in crime, that of the “Quick Win”. Some organisations feel that they should not spend the time or resources on web or software development, or if they do, they place enormous emphasis on the speed of implementing a technology solution, rather than taking a long term perspective and ensuring that the solution meets the longer-term strategic needs of the business. Very often, even when development teams break free of the curse of the Golden Hammer, they are constrained by business imperatives (“we need a Quick Win!”) which force them to compromise what they know is better for the business, and instead to carry on striking the Golden Hammer (often outdated corporate software) against any and all obstacles in their way. A series of Quick Wins may do the IT department some good in terms of reputation around the business, but often, the Quick Wins will lead to a cycle of Golden Hammer thinking.
My colleague also informed me of the time he was told that a newly acquired business required a certain piece of software and it would take six months to purchase, install and configure the software. The software being touted was an industry leading heavyweight in help desk software that was in use elsewhere in the business, but six months was far too long to wait. In just two weeks my colleague built some simple software based upon the new (at the time) Microsoft .NET framework. By ditching the Golden Hammer thinking he still achieved a Quick Win. His software did the job and was refined over time as new requirements came to light.
Perhaps there is a serious message here for us all. Even a Golden Hammer gets worn out over time when you rely on it to do everything.