Question: Would you rather be hit by a ton of feathers or by a ton of bricks?
Most people answer “A ton of feathers”. Some people – usually ones who have been accosted by this question before – answer “It doesn’t matter, a ton is a ton”.
I answer “It depends!” (Are you at all surprised? <g/>)
If the ton of bricks are stacked on a pallet and the ton of feathers are loosely gathered in a bag hundreds of feet on a side, I’ll take the feathers. (And an oxygen mask so I don’t suffocate while I burrow out from under them.)
If the feathers are compressed into a one foot cube and the bricks have been powdered, I’ll take the bricks. (And a breathing filter so I don’t suck all that brick dust into my lungs.)
If I have time to dig a trench first so nothing actually touches me, I don’t much care which is dropped on me.
If I can arrange to receive only a glancing blow I’ll take the feathers, since they are likely to hurt less. Unless the feathers are made out of lead and the bricks are made out of Styrofoam, in which case I’ll take the bricks.
If I spent all morning plucking chickens for the family reunion feast I may choose the bricks simply because I am sick of feathers. Or I may choose the feathers because I have become inured to them by then. Or I may be so exhausted that I don’t care.
You might consider this a rhetorical question, since we are not generally in danger of having tons of anything dropped on our heads. Even so, there are lessons to be learned here. I have not yet found a question whose answer does not depend on its context. Some possibly more relevant examples:
- Should you automate your testing? Always! Never!
- Might model-based testing be helpful? If you are testing a random number generator, then probably not.
- Do you need a tester on your team? Not if your developers never write a bug or misunderstand your specifications. Not if your customers want your software so badly they are willing to do your testing for you. Not if you don’t care whether your product contains customer-losing bugs.
- Must you scrub before surgery? Not if the patient is more likely to die if you take the time to do so. Not if you are already scrubbed. Not if the surgery is a computer-based simulation.
As testers it behooves us to remember that there are almost always reasons to do and to not do any particular action. Yes, even to log a bug, fix a bug, or ship a bug. The next time you are about to raise a ruckus over a bug being Won’t Fix’d or some other stupendously insane decision, take a moment to think of some reasons why the decision could actually make sense. (I guarantee there at least three reasons; probably there are ten or more.) Maybe this exercise will change your intent to protest, maybe it won’t. Regardless, you will have taken some time to think, and that is (almost) always a good thing!