Which books should you read/buy when you are a programmer? I have listed 5 books that have helped me a lot. The books that I have chosen are not specific to any language although some of the books have examples in one language only. Design Patterns has examples in smalltalk and C++ but since the code is not very complicated you should have no problem converting it to your language of choice. I have included links to sample chapters for the books where I could find them. For some of the books I have also provided links to the author's site; some of them have additional material so that you can look at that. I have also provided Amazon links so that you can read reviews. All of these books are rated 4 stars or higher. I have also provided alternate books if I felt that there were more choices for the same subject
This book is one of the seminal books on patterns in software development. If you are a professional software developer, you must read this. If you are learning to write good software, this is a book that you will need to take on at some point
Design Patterns Site
Code complete provides the reader with an insight into how
to write good and easy to understand code. You will come away from this book with an appreciation of the thought process that should go into writing every class, routine, comment etc...
Software development steps are outlined clearly. Pitfalls to avoid are discussed and rewards obtained from good code is explained. The author tells you what you need to know and most importantly why you need this information. If one applies the ideas in this book, I think you will be a better programmer.
Sample Chapter: Chapter 1: Welcome (pdf)
Sample Chapter: Chapter 5: Design in Construction (pdf)
Code Complete Author's Site
The Pragmatic Programmer
The pragmatic programmer provides invaluable advice to those who are just starting to program, and those who have been programing for years. By following the authors' simple rules you should have gained some programming wisdom that a programmer would realize in a decade.
Extracts from the book
Programming by Coincidence
Summary of the book's tips
This book will change the way you think about and working with exisiting code. It'll teach you that changing/modifying software is a fact of life. Martin Fowler does a awesome job of describing how to improve the design of existing code by performing various refactorings. Various design patterns are mentioned throughout the text, that is another reason why the design patterns book is so important
Sample Chapter: Refactoring, a First Example
UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design, 2nd Edition
UML has grown. A few years ago, when UML was just getting accepted, a book on how to use it would have been much thinner. But the successful broad uptake of UML led to its semantic notation being expanded. What the authors give us here is a thorough exposition of UML 2.0 and how to use it. It also goes into the Unified Process for running a project, and how this can be documented in UML
Sample Chapter: Relationships
And here are a couple of more choices instead of the books above
Agile Software Development, Principles, Patterns, and Practices
Ajax in Action
Head First Design Patterns