Amidst the myriad of books out there, here are five I find worthwhile for all developers. These books do not cover a specific language or technique. Instead they provide a broader spectrum of good advice. If I had to pick one of them, it would definitely be The Pragmatic Programmer – From Journeyman to Master. This book offers some great insights into what the programming profession is really all about, and how to excel as a developer.
From Journeyman to Master
By Andrew Hunt and David Thomas
Because more important than knowing this or that programming language, is to learn how to think, act and become a passionate (devoted if you like) developer. If you don’t, you will never truly succeed at – or at least not enjoy – work.
This book covers practices like DRY (Don’t Repeat Yourself), debugging, testing and prototyping. It explains the benefits of mastering a shell and the editor you use. It also discusses project and team aspects of development.
Read it. Then read it again.
Elements of Reusable Object-Oriented Software
By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Because it is the book about design patterns, and design patterns is something all developers should know. The authors are also known as the Gang of Four (GoF), a well known name in design pattern circles.
This book includes a catalog with 23 design patterns divided into creational, structural and behavioral patterns. Each pattern is listed with its intent and motivation, structure, consequences as well as sample code and known uses.
A handbook of Agile Software Craftsmanship
By Robert C. Martin
Because writing neat, readable code may very well imply less use of the next book.
This book is all about writing good code. Chances are you read much more code than you write, and writing clean, readable code is perhaps the best way to cut down technical debt. The book covers everything from meaningful names of classes and methods to how to write comments, exceptions and unit tests.
By Michael C. Feathers
Because technical debt is a problem that’s not going away. The book is especially useful for consultants working a lot with other people’s
This book defines “legacy code” as any code that without tests in place. This book covers things like how to get code into a test harness, and how to write tests without affecting existing functionality.
By Susanna Clarke
Because you should take the time to read something else now and then (this is one of the tips from Pragmatic Programmer as well), and this is a really, really great book.