Automation is a great thing properly applied, but most companies lose sight of the value good manual testing brings. This paper uses a simple analogy to try and stress the importance of good basic skills and the tools to support them.
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