Test-driven development

I've been researching the subject of test-driven development for an upcoming story. My sources include Kent Beck's excellent book, Test-Driven Development by Example, and interviews with Ward Cunningham (again!), Brian Marick, and others. As one who has yet to incorporate any of the xUnit family of testing frameworks into my coding practice, I'm perhaps not the best person to tell this story. On the other hand, I do think I'm well suited to understand the message that test-first practitioners have been consistently delivering, and to broadcast it to a wider audience.

Test-first is quite radically different from test-later. And the most important difference I've discovered so far is that test-first, in the hands of people like Kent Beck and Ward Cunningham and Martin Fowler and the many others who practice the technique, is as much a tool for rationalizing the exploration of the problem domain, and sequencing the work of refactoring, as it is a way of protecting against regression. Those of you to whom this has already become second nature are probably yawning and thinking "welcome to the club." But I'm pretty sure this take on the purpose and benefit of test-first has not been adequately conveyed to a general audience of IT practitioners who regard "extreme programming" as, well, a bit extreme. It's going to be an interesting challenge!