Head First – Read them now

As Marcel already describes in his post about how to get junior programmers in your team productive fast, he is rightfully saying that

For the love of god, RECOMMEND BOOKS! When I first started, I tried reading books on programming. The downside was I could not pick out a good book if it slapped me in the face. Hopefully your company has an internal library, then you can just toss them a book.

He's so right: LOTS of good information about coding can be found in BOOKS.

So instead of repeating what he already said, let me recomment a few books that I read lately. All from the same publisher:

First of all Head First Design Patterns.

If you want to get some ideas about good programming, especially design patterns, which are programming patterns that you as developer SHOULD know about, than read this book. To get a good grip on design patterns, this is simply a must read. Especially the pictures, read: readable designs, make this book the best introduction for learning about design patterns.

Next to that, Head First Software Development.

This book gives more of an helicopter-view on the whole software development process. It explains why you need to code in test driven development and make that continuous integration software working. It explains what the advantages are of working with mock-objects, why tests give you the code coverage that you need to do refactoring. A very good read, although the emphasis on sticky notes was a bit too much for my personal taste.

And last, let me say that I read Head First Object Analysis & Design

It is a good book that takes us into some design practices and also emphasises alot on the analysis part of software engineering, or the pre-coding work that you NEED to do so that you know you are on track before you dive into coding. Create pictures, small CRC cards of use cases and other ways of drawing down what you are going to do before you do it.

All of the three books tell you that there is one constant factor in software development:


This is why software needs to be built as flexible as possible, and all three books give you guidance in how to setup a working environment that enables you to do that.

So, what developer books do you recommend your coding colleques?