I've been working with the new Visual Studio Team System 2005 since late this past summer, specifically in two respects: the new ASP.NET 2.0 design elements (web parts, master pages et. al) and the testing tools. It was the latter that excited me the most, as it was promised to embed Test Driven Development tools.
Indeed, over the course of the year a number of developer tools began to appear for converting your NUnit or csUnit tests to the new VSTS format so that you could hop on the integrated suite bandwagon. The promised land would finally appear: Visual Studio and TDD -- a new beginning!
Well, it appears we were all deceived, according to Scott Bellware. This is an excellent article once you get past the first dozen paragraphs, with its central hypothesis buttressed by similar reactions from heavyweights in the software development world like Ron Jeffries, Robert Martin and Jeremy Miller.
So what's the egregious error that MSFT has made? Attempting to re-define (in an Orwellian way) what Test Driven Development is and how it is accomplished in their online MSDN documentation. The sins are manifold:
- Encouraging the fixing of design early in development (essentially entrenching the failed waterfall);
- Auto-generating unit tests from interfaces and classes;
- Writing unit tests after writing code;
- Misconstruing TDD as a marketing gimmick instead of a legitimate approach to software development.
True to form, Microsoft has taken a barrage of hits on the documentation and it appears to have been pulled. And I expect that accordingly, a new version will appear to correct the mistakes.
But the lasting effect impression that I and others are left with is that TDD and agile methods aren't taken seriously: And that's unfortunate because if there's ever been a time for leadership in agile software development methodologies, it is well past NOW.