A short list of the 5 books I think are indispensable for every developer on every level (not necessarily in this order). These books aren’t in any way related to a specific technology, but focus on good development practices. Some of them use a specific language to explain the ideas but that’s just an issue of syntax. I found these very useful to get a deep insight in how modern application development works.
Patterns of Enterprise Application Architecture
This book contains a ton of information on how to structure big applications. Very useful information and well-tested patterns (“ideas for solving problems” – as Fowler calls them). Although some of the material is a bit old (the book was published in 2002), especially the part about web applications, the principles are still 100% valid.
Another one from Martin Fowler. This book teaches you how to refactor bad code into good code. A lot of the principles you have probably already applied, but what this book brings to the table is a structured approach to improve your (or someone else’s) code.
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
This is a real classic one, and the reference when it comes to design patterns. The patterns described in this book are often referred to as “The gang-of-four” patterns, in reference to its authors.
Head First: Design Patterns
Eric Freeman and Elisabeth Freeman
This is another great book on design patterns. It was the first one I read about design patterns and it’s a real good introduction if you’re not familiar with the idea. It’s written in a very playful style and every now and then I just seem to remember a random sample. Start with this one and then move on to the gang-of-four book.
Domain-Driven Design (DDD)
This book by Eric Evans shows you how to model your software so it represents the business your dealing with. Domain-driven design was in its early stages when this book came around, but is now almost the de facto standard. This book covers most of the practices and patterns you need to know to model your codebase.
Note of the author: By no means have I been paid for advertisement or had any gain on publishing these descriptions. These are just the 5 books that I found to be the most useful for modern development. Hence, I haven’t included any clues on where to get them or links to publishers. I figured the readers of this article are smart of enough finding them themselves.