A good tool does two jobs. It finishes the work in front of you, and it
changes what you believe the work is. The first job is the one we shop for.
The second is the one that shapes us.
A hand plane teaches grain. A debugger teaches that a program is a sequence
of states rather than a paragraph of intentions. Neither lesson appears in
the manual, and both survive long after the particular task is forgotten.
So I have grown suspicious of tools that finish the work without teaching
anything. They are not evil; they are simply expensive in a currency that
does not show up on the invoice. When the tool leaves, the understanding
leaves with it, and I am exactly as capable as I was before I began.
The test I apply now is small: after using this thing for a month, will I
know something I could explain to another person? If the answer is no, I try
to keep the tool at arm’s length, and do at least one pass by hand.