Recommended to me by: Sam Livingston-Gray
Test-Driven Development (TDD) is a tool to manage the complexity and difficulty of writing software. It offers an alternative to the “waterfall” approach: design specification, functional specification, implementation, testing, release. In theory each step is finished before going on to the next. The problem is that there is a whole lot of debugging during and after implementation, testing, and release.
In TDD, the programmer writes a test for one small aspect of a program, then implements the minimum code required to satisfy that test. Once the new test passes, the code is refactored to remove duplication while still passing all tests. Repeat as needed. In this way, designs evolve to satisfy existing conditions rather than guessing about what’s needed months or years in advance. In addition, the code is always in a working state.
This is the most conversational software book I’ve read. It’s like having the author next to you at a computer, explaining the steps as you type. After years of battling waterfall development cycles, I’m convinced TDD is a useful approach, and I’m eager to try it.
[…] book is written in a more formal, technical style than Test-Driven Design by Example. I’m glad I read the latter book […]