I’m sure to miss some, but here are a few I really like.
- Refactoring: Improving the Design of Existing Code by Martin Fowler. A classic reference, and a good way of learning about Code Smells and what to do about them.
- Extreme Programming Explained by Kent Beck & Cynthia Andres. I’m not an XP purist, but all of Beck’s ideas have value. Test-Driven Development (TDD) is definitely something I believe in.
- Extreme Programming in Practice by Newkirk & Martin. While Beck’s book is a great intro to XP, this one will show you the details.
- Framework Design Guidelines by Cwalina & Abrams. I’ve mentioned this before, and for good reason. These are the details behind Microsoft’s design guidelines. The book provides many best practices for C#/.NET development, along with the reasons for the guidelines. FxCop can enforce these rules, but blindly following rules is not the way to learn.
- Head First Design Patterns by Freeman & Freeman. I’m not done with this one (OK, I haven’t read all the rest cover-to-cover, either), but I’ve learned a lot from it. It’s not perfect, but what is?
These books were instrumental in making me a better programmer.
Update - Nov. 13, 2007
Some I forgot to mention: