Test-Driven Development: By Example, Kent Beck. Addison-Wesley, 2002.
Test-driven development is a programming method that says: write a test, write some code, refactor, repeat. For me, the biggest hole in Extreme Programming Explained was the lack of explanation of this technique, and this book fills that in.
Kent creates two extended examples: mixed-currency calculations and a testing framework. He describes how paying attention to small steps can affect the design (and comes up with a solution differing from his previous designs). Finally, he includes brief descriptions of a number of testing and coding patterns. I recommend this book, to give a sense of the size of steps and the patterns used. (Reviewed May, ’03)