The Productive Programmer
If you are a developer you probably got excited by looking at the book's title....'The Productive Programmer'. "Someone wrote a book about me!" may have been your first thought. Naturally, you are productive in your daily development right? At least you thought so....
When I first saw the title, my second thought actually was that this will be one of these books outlining some well-known "secrets" about getting more done in a shorter time. These secrets usually circle around using a lot of keyboard shortcuts, banning the mouse, using macros and many other things that are commonly known to virtually every developer I have ever met. Starting with the book, however, I realized that there was more than I anticipated in the first place.
The book is divided into two parts. The first part outlines the four general principles of productivity:
- Acceleration
- Focus
- Automation
- Canonicality
Each principle is illustrated with several recipes and many tools to increase your productivity in that particular area. Granted, many of the things are already known if you have developing software for some time however, some of them may give you the light bulb moment. As an example, creating periods of "quiet time" throughout a typical work day where no email, phone call or talk is allowed. Albeit simple and even kind of obvious, it still catches you as a surprise when really thinking about it. Most likely everybody has wished the phone stops ringing for a while or your co-worker across the room stops telling you about his new girlfriend over and over.
The second part then outlines different real world practices that increase your overall productivity as a developer. It also includes examples that actually do the opposite - decreasing your productivity. While the first part focused more on the general concepts of productivity, the second part outlines practices concepts for improving your actual code. These are presented as stories based on the individual experience gained by Neal through his consultancy work. They are independent from any particular language or development methodlogy and thus can be applied across the board.
Neal uses an easy-to-read writing style and throws in the one or another subtle witty comment that makes you grin while reading. Due to this as well as its size, the book is easily be read within a weekend. While Neal manages to cover a broader range of operating systems (Windows/Mac OS/Unix/Linux), Unix/Linux is certainly getting the short end of the stick. Same appllies to the languages covered in the book. While Neal focuses on modern languages, the examples are mostly provided in Ruby and Java which leaves "mainstream" developers using C++ or any .NET language a bit neglected. While the individual practices are certainly applicable for these languages as well, it takes a little savvy to apply them to your daily routine.
Overall, the book is a valid addition to the shelf of every developer where it can sit next to similar books such as 'The Pragmatic Programmer', 'Write Great Code' or 'Code Craft' to name a few. While it may not be as beneficial to developers using different languages in their daily work, it certainly serves as a great reference.
