Microsoft recently published what they called Guidelines for Test-Driven Development as part of the Visual Studio 2005 Team System documentation. It was part of a larger set of guidelines which walk developers through using all of the pieces of Team System to engineer a development project from beginning to end.
However, they have created an uproar in the community of agile, TDD and XP (Extreme Programming) developers. The common theme among the "heavyweights" as Sam Gentile calls them in his own post decrying the guidelines, is that Microsoft has defined it's own process (to the end of getting architects and developers to use Team System from start to finish of the entire development lifecycle) and slapped the term "Test Driven Development" onto their process which is very different than the industry standard definition of TDD.
This note after step 6 in the guidelines demonstrates just what they are talking about.
Note |
|
The traditional TDD process does not contain this step. Instead, it advises that you create tests first. This step is included here so that, while creating tests, you can take advantage of two features in Visual Studio 2005 Team System: the GUI design capabilities of the Class Designer, and the automatic test-generation capabilities of Team Edition for Testers. |
Here is a post by Uncle Bob, which seems to be the most referenced by others in this outcry. Sam's post (above) has lots of links to follow up on.
Whether it is "buzz abuse" (quote from a commentor on Uncle Bob's post) or the recommendations of the guidelines themselves, even if not really about TDD, are making people unhappy , the cry from the agile community is to remove them. There will be many people who will start their TDD education with these guidelines and may never know any better. Imagine having to choose between a nice neat list of 14 points to follow or read books and articles galore to get the process down. The list of 14 sounds very appealing, like Cliff Notes for TDD. Works for me - busy girl that I am! (But luckily I read a lot of blogs...) These guidelines will be read by many as gospel for TDD and will then likely be passed on as people try to share their knowledge. So it is understandable that the community does not want Microsoft creating it's own definition of TDD.
Update: Not everyone is flipping out though. Raj Das, from the very high-end consulting firm Magenic, says in his blog that “Microsoft’s guidelines don’t look that much different than what we’ve done in the past.“ This says to me that they have taken what works for them from the industry definition of TDD and evolved their own process from it.
It will be interesting to see what the response from Microsoft is. I haven't noticed anything in the blogs yet.
Update #2: Microsoft's Rob Caron did respond with an apology and the link to the topic now says that it has been removed and is obsolete. Perhaps it will be updated. Note that someone pointed out Dr. Neil Roodyn's much more sedate criticism of the same guidelines way back on October 15th. Dr. Neil is the author of EXtreme.Net from Addison Wesley.