Chris Sells talks about his experiences learning from Ward Cunningham the importance of Test-Driven Development (TDD) in an excellent post titled “Checking Spec. Compliance at Build Time”. One excerpt stood out for me (among others):
... The very nicest things about TDD is that "fixing breaking changes" becomes the least painful thing to do!
This is huge. In fact, it's so huge, that MS should provide an end point for people to submit their own unit tests against our Windows and .NET APIs so that when we make breaking changes, we can either fix them or know the proportion of folks affected by this breaking change.
What an interesting proposition!
One item I found extremely helpful in the Rotor code, especially when porting it to other OSs, is the large number of unit tests that are included you can run to make sure things still work. Plus, if I make some changes to figure out how things work, I can instantly determine if something else is broken by running the tests.
In my own work, I am firm believer in TDD and unit testing. It also appears it is getting more press time with Microsoft, as it should. This article, “Improve the Design and Flexibility of Your Project with Extreme Programming Techniques“, from the April, 2004 MSDN Magazine is filled with excellent help for the individual developer and developer groups to get on board with TDD and unit testing.