- Test Driven Development by Example - this is a great introductory book for TDD, what I enjoyed the most about it was the easy writing style and the small jokes throughout the book, see the comment regarding Singleton pattern :) Reading this book made me feel that I can somehow absorb author's knowledge and experience about code quality and design even if this wasn't the main purpose of the book.
- Refactoring: Improving the design of existing code - well, this is the best book related to programming I've read so far, a book which I will reread each year. The 4th chapter, related to Code Smells is really great and succeeds at naming almost all smells found in a bad code. Reading this book you realize how many times you sort of felt that the code is "smelling", but you didn't know how to make it clean and how to tackle the problem. This is a must read for every programmer, I guarantee that it will change how you look at coding.
- Working Effectively with Legacy Code - a great book by Michael Feathers, sort of complementary to Refactoring by Fowler. This book is about "safe" refactoring s, how can you find the sensing points and how to introduce tests in a legacy code base. Giving the fact that 80-90% of the time we are working with a legacy code base, sometimes we even write "legacy code", this is a must read for every programmer, at least once :)
- Clean Code - great book by Uncle Bob, this contains his amendments about how clean code should look like. Even if you don't have to agree with him on all of his rules, certainly our lives would be much easier if all the programmers would follow 80-90% of the rules. Giving the fact that the definition for "clean code" is not set in stone yet, the most important thing is to try create clean and beautiful code, code that we will be proud of or at least not embarrassed in the future :)
I've started reading Coders at Work, this is a really good book, managed to read the first 4 chapters in a couple of hours, recommended for all programmers interested about how great programmers work and think. This is great for boosting motivation and morale :)
Read and Code with Passion,
Adrian