The Right Tool for the Job

2020-04-13

The advice “Use the right tool for the job” sounds inarguable, and that is what makes it a vacuous piece of pseudo-wisdom most of the time it is used. (This short note expands on a brief exchange on Mastodon.)

Who Could Argue With That?

Programmer debates about tool and technology choices are interminable, but not entirely idle: familiarity with different technologies can be a power lever, letting you accomplish more in less time. A problem, though, is that so many of our tools significantly overlap in applicability. This is especially the case when figuring out what programming language to use, making it a favorite argument among programmers because it can never possibly come to any conclusion.

The problem with using the phrase “use the right tool for the job” in a prescriptive manner is that the word “right” is carrying too much weight. In most situations, the right tool for you is something you already know how to use. Most time budgets do not include the 10x padding needed to let you learn something substantially new to you, and then finish the desired task. Of course, never learning new things is surely too limiting, you will miss out on the potential benefits of new tools and techniques.

And this is precisely where the phrase “use the right tool for the job” does make sense: as an explanation for why something took longer than expected. If you’ve read about some new-to-you technology that you think might be a better fit for a task, and you have the novelty budget left over to try something new, give that new thing a shot! Learning the new tool will take some time, but it may prove to be a truly useful addition to your tool belt. In that situation, the task took the extra time needed for you to learn a new thing, which you can file under Using the Right Tool for the Job, and then the next time you undertake a similar task you will use this new tool to accomplish the task because it is a tool you are already familiar with. If the new tool doesn’t prove itself to be significantly better than what you already know, then you set it aside and chalk up the lost time to using the right tool for the job.