TDD
1. Understand What TDD Is
2. Make Untestable Code Testable
3. Get Experience Doing TDD
Books
Refactoring: Improving the Design of Existing Code
Working Effectively with Legacy Code
Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software