Working Effectively with Legacy Code by Michael Feathers – Do you have legacy code? Does your code include areas that are untested and tightly coupled? Yes? Then you have legacy code. Michael focuses on the problem of teasing apart legacy
Refactoring: Improving the Design of Existing Code by Martin Fowler et al – One of the original Agile related books. It defines the concept of refactoring (personal bugbear – refactorings are small changes that don’t affect the behavior of the code), explains how to practice it and catalogs over 70 refactorings.
Test Driven Development by Kent Beck – The original TDD book. Clean, bug free, simple code. That is the promise of TDD. Its that simple nothing more to say. BTW the examples are in C# so some of the details won’t apply to Java/Ruby/Python coders.
Late Breaking news: J.B. Rainsberger introduced me to: Test Driven: TDD and Acceptance TDD for Java Developers by Lasse Koskela. I’m only about 120 pages in, but so far am very impressed. Its even caused me to change a few of my habits – specifically which test I choose to write first.
Another Late Breaking item – Robin Dymond gave this one a very strong recommendation: xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros. I’ve not read this yet – but Gerard covers Test Smells and Refactoring. In other words how to spot trouble your test code and repair the damage.
Refactoring to Patterns by Joshua Kerievsky. Have mess, want to bring some order to it.
Head First Design Patterns by Elisabeth Freeman (et al). I struggled through the Original GOF Design Patterns book twelve years ago now. Thankfully Elisabeth and co. wrote a funny, irreverent and so you don’t have to.
What are your favorite Agile Books?
Coming up posts on: Iteration Length (another lesson learned that I didn’t think of in my original post) and Pair Programming vs. Code Reviews a rebuttal.