There is an old axiom that if the only tool you have is a hammer, you tend to approach every problem as if it were a nail. While there is a great deal of truth in that, I believe it does the hammer a bit of a disservice. First, it casts the hammer in a bit of a negative light, which is not fair to the hammer, a marvelous and ubiquitous tool whose longevity alone is testimony to its usefulness. Second, it implies that the ONLY time you need a hammer is when you are faced with a nail, and that is simply not true. Finally, it also implies that if you have a nail, you need a hammer; again, the world is not so simple.
A carpenter understands that building a house is a complicated task. It requires many specialized skill sets, and many of those skill sets have specialized tools associated with them. Now, no one could argue that we have been building houses far longer than those specialized tools have existed; so why, then, do we feel we need them?
The answer is that specialized tools, in the hands of skilled craftsmen, applied appropriately, bring efficiency. If we have the right tool, in the hands of the right person, and we use it at the right time, we will do a better job, and probably do it more quickly as well.
Let's suppose that our carpenter has the choice between a hammer and a nail gun. They both drive nails, but one does it much faster–which should he choose? The answer, of course, is, "It depends". If our carpenter is installing a sub floor, and needs to drive a lot of big nails through hard wood in a straight line as fast as he can over and over, then he would likely want the nail gun. On the other hand, if he is installing a delicate piece of wood trim in a tight corner, he may prefer the delicate touch of a light hammer. Perhaps something is not lined up properly, and needs some encouragement to put itself in the proper position...(Hey, these things happen in the real world)...a nail gun would do him no good at all there, but the not so delicate touch of a larger hammer could save the day.
What if, in the midst of using our nail gun to lay down the flooring, something goes wrong, and a nail goes halfway in and then bends? The nail gun is not broken, and the process we really need to accomplish is still best served by the nail gun; but the nail gun is not going to help resolve our current problem, which is preventing us from completing our current task. With a hammer, we could straighten and finish driving the errant nail, or simply pull it out and drive a fresh one, then continue on with our nail gun.
So why all this talk about houses, carpenters, nails and hammers?
Because, just like building a house, building complex software systems is a complicated task. We hire experienced people, with specialized skill sets, and buy very expensive tools to support those skill sets to help those people be highly productive. But I am concerned that sometimes, we loose sight of the basic skill sets and tools that are also required, and fail to provide the proper tools to extract the true value from those skill sets. Have you ever had to work with someone who knew a lot about an automated testing tool, but really did not understanding testing? Sadly, if you have been in this business long, the answer to that question is yes. What about the situation where you are working with a very skilled and knowledgeable team, but still are not as successful as you should be because even in light of financial and managerial support, for whatever reason, you could not get the right tool for the right job at the right time? The company had spent hundreds of thousands of dollars on nail guns...but no one thought to buy hammers.
The corollary here is obvious...nail guns are automation tools, and hammers are for doing manual work. But aside from being obvious, it is also accurate. And that is why, if our carpenter has the choice between a hammer and a nail gun, he should choose both. Because you are truly most efficient when you have the right tool for the right job at the right time.