If you attended the JAOO 2007 conference, or follow the Test-Driven Development community you may have heard of Jim Coplien and his arguments about why you should not use TDD. I believe that Jim said something like "TDD will deteriorate your design", and it made me ask myself -- Is TDD a controversial topic?
So is it? Not if you ask me. If you rewrite the original Red-Green-Refactor mantra from TDD, into "Spec. the feature" > "Implement it" > "Reduce technical debt", it seems to make quite a lot of sense. In fact, I don't really see any other way you could work and maintain your professional integrity!
So is there any risk of bad design or architecture as a result of using Test-Driven Development? Well, only if you neglect that refactoring is a continuous activity of TDD. If you refactor (small and large refactorings) on a continuous basis, I simply do not see how you could have a design- or architectural meltdown. If anyone experience this, I seriously doubt that TDD is the root cause of their problem.
Check out Roy Osherove's blog entry on the topic here.
By Sune Gynthersen