Here’s a quote from Donald Knuth I’ve been thinking about lately:
The enjoyment of one’s tools is an essential ingredient of successful work.
That makes a lot of sense. So does a quote from Joe Armstrong that I blogged about a few weeks ago:
Forget about the tools …
I don’t think Knuth and Armstrong necessarily disagree. I’ll explain the context of each quote and how I think they fit together.
The context of Knuth’s quote is a discussion of floating point arithmetic. It’s the last sentence of Section 4.2.2A of Seminumerical Algorithms. He’s saying that even though floating point arithmetic is inherently inexact, it’s important that it still has certain nice mathematical properties. I believe he intended the quote to be taken more broadly, in part because he italicized it. In any case, his immediate idea of a “tool” was very low-level.
The context of Armstrong’s quote is his advice to stay away from unnecessary software tools, especially when first learning a language. He says that
IDEs and build tools are the single biggest obstacle I know of to getting started.
He goes on to say that his basic programming set up is a shell, makefiles, and Emacs. These are tools, and I imagine Armstrong enjoys using them. They’re high-level tools compared to floating point arithmetic, but low-level compared to IDEs and build tools. (Incidentally, Knuth also uses Emacs.)
So, one way to synthesize the advice from Knuth and Armstrong, along with my personal opinion, would be this:
Pick a small set of tools that you enjoy using and learn them well.
Or possibly this:
Pick a small set of good tools and learn them so well that you enjoy using them.
Related post: Doing good work with bad tools