Mark Needham

Thoughts on Software Development

The Productive Programmer: Book Review

with 10 comments

The Book

The Productive Programmer by Neal Ford

The Review

I first came across this book when I was browsing Andy Hunt's Pragmatic Thinking and Learning: Refactor Your Wetware on Amazon. It showed up as one of the related books.

I had expected it to be a more theoretical book than it actually is. It is full of really useful command line tips and ways to use system tools and IDEs more effectively. It only took until page 3 for me to learn something from this book - a short cut for navigating Firefox tabs which I now use all the time. Apple Key + Tab Number (Mac) or Ctrl Key + Tab Number (Windows) takes you to the appropriate tab for those who are intrigued!

The first half of the book (Mechanics) covers general power user tips and tricks for using your machine better while the second half (Practice) is more about ways that you can be more productive as a developer.

I will summarise some of my favourite parts of the book and the most interesting things that I learnt from reading it.

Mechanics

  • I have often wanted to learn how to use the Unix command line properly - I know how to do basic operations but nothing spectacular - but I found it difficult to work out how to make full use of it short of pairing with an expert. Having read this book I have learnt some excellent tips that I wouldn't have come across otherwise.
  • The idea of shims - little pieces of code that you can write to solve small problems - is the standout idea in this book for me. I often find myself repeating the same boring manual steps without even considering that there could be a better way. This book completely changed the way I think about these types of tasks.
  • I thought I had a pretty good idea how to use a lot of the tools on the Mac but Neal shows so many different ways that you can improve your effectiveness with them. The book lists innovative ways to make use of QuickSilver, the Clipboard and Shell and also includes links in the footnotes to applications referenced in the text. This is something I haven't seen done in a book before but it's a really good idea as far as I'm concerned.

Practice

  • Neal explains how to use open classes in Ruby when creating fluent interface DSLs and finally I now finally understand why extension methods have been introduced into C#. When there are code samples these are annotated and then explained in detail. This certainly made it easier for me to follow some of the examples around using the Unix shell and Ruby.
  • Neal reminds you of things that you probably know but need reiterating. The 'angry monkeys' story is a particular stand out with regards to this. This covers the idea of always challenging why things are being done a certain way and not accepting 'because this is how it's always done' as an acceptable answer. There is an interesting example used with regards to using underscores in test names as suggested here.
  • The chapter on Composed Method and SLAP (Single Level of Abstraction) when writing code was especially good - I knew of the concept but I didn't know there was a pattern named after it. My reading around this led me to an interesting post on the Arrow Head anti pattern - this is what the code can end up looking like if you don't keep to one level of abstraction.

I found that the best way to read this book was to read a bit of it and then try out the suggestions on the computer. It's not really a book that you can read on the train for example.

In Summary

I would rank this book up there with The Pragmatic Programmer as one that I would recommend all developers read. There are so many tips in it that you are bound to find some that you didn't know about and your view of automation will be much broader having read it, which can only be a good thing.

I was an automation junkie after reading The Pragmatic Programmer, but after reading this book I think I'm going to become even more obsessive about it.

As a side note this is the first time I've tried to write a review of a book on the blog. Feedback on whether doing it like this is useful or better ways that you've seen it done would be gratefully received.

Written by Mark Needham

September 5th, 2008 at 12:05 am

Posted in Books

Tagged with , ,

10 Responses to 'The Productive Programmer: Book Review'

Subscribe to comments with RSS or TrackBack to 'The Productive Programmer: Book Review'.

  1. Torbjörn Gyllebring

    5 Sep 08 at 6:50 am

  2. This was a really good review Mark.
    My thoughts were along the lines of "That sounds good, that sounds useful, that's true, must buy book, must buy book…" :-)

    Keep them coming

    Andy

    5 Sep 08 at 12:15 pm

  3. One suggestion:
    You have two links that need context to understand their meaning ("here" and "interesting post").
    IMHO, it would be better if the links were "using underscores in test names" and "Arrow Head anti-pattern"
    This draws attention to the concept you're commenting on, and means that scan reading is more effective.

    Andy

    5 Sep 08 at 2:07 pm

  4. @Torbjörn I'm actually reading that right now, thanks for the tip though!

    @Andy thanks for the ideas. Have updated this post and will keep that in mind for future posts.

    Mark Needham

    13 Sep 08 at 1:36 am

  5. [...] been reading Neal Ford's The Productive Programmer (my review) which is a book all about improving your productivity as an individual [...]

  6. [...] In OOP this would be described as using meaningful names as detailed in Uncle Bob's Clean Code (my review). [...]

  7. [...] I found the most effective way for me was if my pair pointed out potential shortcuts whenever I was using the mouse to try and do something. On my current project we have installed an IntelliJ plugin called Key Promoter which pops up a message telling you the shortcuts every time you use one of the menu options. I learnt about this plugin from Neal Ford's book, The Productive Programmer. [...]

  8. Great review, Mark. I read Part 1 on the train (irony) from Bangalore to Chennai, and understood how far I need to travel if I want to consider myself a good programmer. I wanted to share the news about the book and thought will add a link to a review that resonates with what I felt, and so used yours for my tweet: http://twitter.com/protoiyer/status/1458037979. Keep them coming.

    Suresh R Iyer

    6 Apr 09 at 4:10 am

  9. [...] The aim is to try and ensure that the chunks of code that we extract into a method are all at the same level of abstraction - Neal Ford refers to this as the Single Level of Abstraction Principle (SLAP) in The Productive Programmer. [...]

  10. [...] I first came across the idea of writing code at the same level of abstraction in Uncle Bob's Clean Code although I only learnt about the actual term in Neal Ford's The Productive Programmer. [...]

Leave a Reply