March 11, 2014

Last week, I gave a talk entitled “Why Not Django”. This is an essay version.

My preferred multitool.
My preferred multitool.

Multitools are great. They can do many things, though not always well.

Occasionally, I find things I can’t do with my multitool, but I do them anyway. If I need a prybar, I’ll use the flat-head screwdriver from my multitool. If I need a saw, I’ll use the tiny one on my multitool.

If all you have is a hammer, everything looks like a nail.

Law of the instrument

Using tools for different or bigger jobs than they are meant for can lead to damage. My flat-head screwdriver isn’t so flat anymore. At what point is a damaged multitool no longer considered useful? I’d argue that point happens sooner than if they were individual tools, as carrying around a multitool with only a few working tools isn’t worth the extra effort.

Multitools are useful, but they have their place. Everyone should have one in their toolbox, but you should always prefer single-use tools.

[Use tools] that do one thing, and do it well.

Doug McIlroy, UNIX philosopher.

By using single-use tools, we decompose the multitool into a bigger toolbox, with tools more apt for their respective jobs. This decomposition leads to a separation of concerns, so the bottle opener doesn’t need to be hanging off the side of your screwdriver. When your requirements change (and they always do), you don’t need to worry about the interdependencies of your tools.

Some may argue that multitools give you greater flexibility than other tools. However, there is more than one way to define flexibility in this context. In addition to having flexible tools which can be used for different use cases, we also need the flexibility to choose the best tool for the job.

See also: On Choosing the Best Tool for the Job.