Posted by matijs 19/02/2012 at 12h46
My list of all-time-favorite books for programmers. I’m not saying everyone should read these, but each of these had an important impact on my growth as a programmer. These are not necessarily in chronological order, by the way.
First, books that are mostly independent of your choice of programming language:
- The Practice of Programming, by Brian Kernighan and Rob Pike. This is a long-time favorite of mine. It’s a small volume that can easily be read cover-to-cover. The famous Code Complete seems tedious by comparison.
- Design Patterns: Elements of Reusable Object-Oriented Software, by the Gang of Four. This book introduced me to a whole new level of thinking about software.
- Refactoring: Improving the Design of Existing Code, by Martin Fowler et al. Particularly the introductory chapters were an eye-opener at the time. It really drives home the importance of having good test coverage to doing clean-ups with confidence.
- Growing Object-Oriented Software, Guided by Tests, by Steve Freeman and Nad Pryce. I read this book recently, and it completely changed how I look at test-driven developent (in the broadest sense of the word) and the use of mocks.
Design Patterns and Refactoring are not books to be read cover to cover, since they they devote quite a large part of their volume to catalogueing. The other two definitely are.
The following books are each really about a particular language. They’re well written, but it’s hard to separate the impact of the books from the impact of the languages.
- Programming Perl (a.k.a. The Camel Book). This book made me grasp object-oriented programming for the first time by breaking it down to a very basic level. I did most of my learning Perl from this book.
- Programming Ruby (a.k.a. The Pickaxe Book). I learned Ruby from the free online edition. It got me hooked.