It’s a natural obsession for programmers: the more effective code you can write in a fixed amount of time, the better. This obsession, which is perhaps better labeled a professional narcissism, is well-indulged by Neal Ford’s The Productive Programmer. The book’s central theme is that many of what makes computers highly usable also slows a user down, and that by taking inspiration from the way that the Super Clever People That Made Computers, we can make our use more effective.
Ford’s splits the goal of becoming more productive into two parts: the “mechanics” and the “practice.” Mechanics are about actual tools and code-snippets: using a launcher, a more advanced clipboard, terminal add-ons for your filesystem navigator, and even code snippets for scripts. While some of the software suggestions are a little dated even only a few years after publication, the take-away message is still intact: he describes the sorts of interactions you want to seek to have with a computer programmer.
You should avoid using the mouse when possible, you should minimize the amount of clicks needed when absolutely necessary, you should use searching to find applications, programs, and you should find a way to allow your computer to parse commands from your intent. More generally, The Productive Programmer advises you not to repeat yourself: if you tell your computer to do something, chances are you’ll want to do that again later, so automate it, speed it up, minimize the effort.
The “practice” that Ford describes is oriented towards software development advice, the sorts of methodologies and development styles that decrease wasted time. For instance, many if not all development shops use a version control tool, which allows a developer to revert to a version with an important code-snippet or a working build or whatever it may be. But there are many more tools and processes which can help equally as much.
My favorite of these was the advice to use a canonical build machine. I have squandered many hours setting up a new machine with old code, finding libraries and versions of programming languages and getting the right configuration. Instead, Ford advises you use a machine with has all the tools and libraries and version required to run your piece of software. With this sort of machine, it’s unambiguous how to run your app, and you can even image new machines from the canonical machine.
The Productive Programmer is an accessible introduction for the ambitious user/soon-to-be power-user. As should be expected, some of the tools Ford recommends are a bit dated (though most of them are still around). But the method and principles Ford exemplifies are simultaneously from a Golden Era of computing and a good vision for the future.