Kent Beck’s Test-Driven Development by Example is the next best thing to pair-programming with a master of his craft.
I’ve never met Kent, but I have to imagine the book is written how he speaks — because no one would write it that way if they didn’t. I’ve never encountered a more conversational book, replete with digressions, arguments with himself, tangents, and bad jokes. This doesn’t distract from the content, but instead creates authenticity. The first two sections of the book are extended examples, and written in that voice they built the sense in my head that Kent was less an author and more a person. That meant that when he switched from the descriptive to the prescriptive in part three, I took his rules as things he had learned from his experience, rather than as wisdom delivered from the mountaintop.
Speaking of part three, the question-answer form that he uses in laying out his patterns for TDD is one of the most effective ways of communicating these kinds of ideas I’ve seen. An example:
One Step Test
Which test should you pick next from the Test List? One that will teach you something and that you are confident you can implement.
This is followed by two or three paragraphs explaining the rationale for the guideline. I found this problem-solution-explanation format solves an issue that faces so many authors: How to design a text so that it can serve both as a tutorial and as a reference.
To do both of these things in a book so short is a masterstroke.