I think the reason for this is most books that actually talk about programming are usually about some specific technology. Whether it be a language book on C#, or a framework book on WCF, or a technology book on SQL Server. These books can be useful, but their usefulness is always limited. And many times, these books can be down right horrible. This means most people's impression of these books is they really aren't worth the money. Especially when most of the information in them can be gleaned from Google searches.
However, there is another class of programming book which doesn't fall into this specific technology category but is still definitely about programming. These books are timeless in nature because they deal with the actual art of programming instead of specific syntax or frameworks or tools. These books are also ridiculously valuable because they have the ability to dramatically expand your programming horizons, making you a much better developer.
This reading list will only contain books which I feel have a certain timeless quality to them and are mostly independent of language or framework. This list is also not complete. I'm really only just beginning to discover the wealth of knowledge available in printed media, so I'll keep coming back and updating this as I discover more.
The Art of Programming
This is the most comprehensive book on enterprise application development I've ever encountered. For me it was a complete game changer. The book itself presents you with concepts and examples and patterns, but it doesn't get bogged down with implementation issues. The result is after reading it you know you HAVE to start writing code this way, but you really don't know how to write it just yet. Even given that, I still highly recommended it to anyone who writes applications with any non-trivial business logic in an Object Oriented language.
Patterns of Enterprise Application Architecture - Martin Fowler
The Evans DDD book references this Fowler book on just about every other page. If you've ever read the "Gang of Four" patterns book, or any books that repackaged those patterns you know what a Design Pattern is all about and you're probably bored with them. The patterns in this book are so much more influential and important than the GoF patterns, so don't let the word "patterns" scare you off. Think of this book as the text book for anyone developing multi-user "business" web apps or rich clients. It contains all the possible answers to nearly ever major problem you'll be faced with.
The Pragmatic Programmer: From Journeyman to Master - Andrew Hunt and David Thomas
This book wont give you dramatic new ways to write code. Instead it will give you dramatic new ways to think about code and your responsibilities as someone who writes code. It includes what to my mind is the beginnings of Agile Programming and many of the SOLID design principles. It is also packed with parables that seem obvious until you realize they've happened to you at work. It should be required reading for any developer.
Managing Programmers
Peopleware: Productive Projects and Teams (Second Edition) - Tom DeMarco and Timothy Lister
This book is some interesting cross between a book for managers and a book for programmers. Its a great read and is likely one of the most influential books in our industry. It has clearly defined much of the culture of companies like Fog Creek and Microsoft and even Google. You should read it, but if you don't work for one of those companies be warned you might get a little depressed.
If you are in any kind of "Management" role you should absolutely read this book. If you're not, you should still read this book, cause it will help you manage your manager. Even if management doesn't directly affect you at work, you still should read this book, simply because it's interesting and will give you new outlook on all the places you spend money. There is nothing specific about programming in this book, just a really solid and entertaining book on the result of a giant Gallup poll on managers.
Software Development Related
This book is short and a ridiculously fast read. The content is so common sense you might trick yourself into thinking you already knew it. And the truth is you probably DID, but you hadn't thought about it consciously. And for that reason alone, this book is worth reading. I think the most valuable thing about this book is it shows you that you can work on Usability without spending a fortune on a usability lab or outside consultants or long term studies with thousands of volunteers.

3 comments:
I'll add a couple I have read (or am reading)
1) Bob Martin's "Clean Code" - This book goes into more detail on the SOLID principles. It tends to be the book people reference when speaking about how to write quality code.
2) Martin Fowler et. al. "Refactoring: Improving the Design of Existing Code" - If Bob Martin's book is about what one needs to do to write good clean code up front this book is about how to turn bad code into good. It gives a series of refactoring "patterns" and ways to identify code smells.
3) Head First Design Patterns - The Head first books get a bad rap as being for noobs but this book is exceptional. If you have every tried to read the GoF book you might find it kind of dry. This book does an excellent job covering design patterns in an interesting way.
Clean Code is on my list to read from your earlier recommendation.
I wanted to ask you about Refactoring, my impression of it has been it's stuff like "Method Refactoring: break one method into many" etc. Is it more than that? Better than that?
Its a bit more than that. I read it like 3 years ago so my memory is a bit faint but i recall it being one of those books where the first half is really excellent and then the rest feels a bit like filler.
Your example is absolutely one of the "patterns" but i think its actually the first pattern, kinda the "let's get started" example. It gets a bit more in depth from there.
Post a Comment