Pete Bevin

March 03, 2005

Programmer Reading List

If you’re in software and want to advance your skills, there are a number of books it’s worth reading. Here are my picks.

Methodology

  • Extreme Programming Explained. I think this might just be my top pick on this whole list - at least as a starting point. The second edition changes a lot of the ideas in the first and explains some things better, but keeps the original spirit of continually striving to do things better.

  • Agile Project Management with Scrum. Strips the idea of Agile down to its essentials, and proposes a very simple, widely applicable way of managing creative teams.

Programming

  • Getting Things Done, the best book on time management there is. You need this as a programmer because you likely joined a company that wants you to be a “motivated self starter with the ability to juggle multiple priorities simultaneously”. The book has started something of a cult, but just bear in mind that you don’t need to buy a Moleskine notebook or a Fisher space pen. I do all my organization with a wiki and a box of file folders.

  • The Art of Unix Programming. The two most important concepts in the book are transparency and discoverability - that software should be easy to understand, and it should be easy to find out what’s going on under the covers. You can read the book online, but it’s better to own your own copy.

  • The Practice of Programming. The book walks you through most of the really important skills in programming such as debugging, testing, profiling and portability.

  • Perl Medic - if you have to deal with Perl code that someone else wrote, you need to read this book. It clearly and patiently describes how to make code more manageable and idiomatic. The Perl team in my previous job loved this book because their entire job was working on old, frustratingly bad code.

  • Pragmatic Programmer. The most valuable contribution of this book is the DRY Principle - every piece of knowledge must have a single, unambiguous, authoritative representation within a system. It’s simple, yet hard to do and very powerful when done right.

  • Test Driven Development (also the other book by the same title: Test Driven Development. TDD is one of the most important ways you can improve your software, and these books explain respectively the why and the how.

  • Refactoring - how to incrementally improve your code. This book shows how it’s possible to get away from the idea that everything has to be designed before any code is written, and instead design incrementally. This makes your project more responsive to change, which makes customers happier and your life easier.

  • Just For Fun by Linus Torvalds. You won’t find any really good programming insights here, but his enthusiasm is infectious.

Management

  • Critical Chain explains how bottlenecks appear in organizations and how you can avoid them.

  • Peopleware (aka. Demarco and Lister - I couldn’t remember the title of the book just now…). The classic work on how a workplace should be, and how to get the very best out of your people.

  • The One Minute Manager. A short book with good advice on how to manage people (summary: keep out of their hair, and make sure they know where they stand and what you expect of them).

  • First Break all the Rules. Gallup did a study where they took a bunch of really good managers and tried to find out what they did. This is interesting because most managers can’t really tell you. There is a companion book called “Now, Discover Your Strengths” which is supposed to be very good, but I haven’t read it.

  • Software Project Survival Guide is great if you’re starting your first software team lead job, or if you just suspect that your boss is incompetent.

Posted by Pete Bevin at March 3, 2005 04:36 PM
Comments
Post a comment









Remember personal info?




Security code:
Enter security code