Part of this information has been got from the testdrivendevelopment group.
The main enemy of TDD is.... the lazy developer. I'd rather say, the lazy programmer. It's good to read that it is just not only me who thinks that laziness is the most dangerous enemy for TDD. If you have a team with those typical guys that don't like their job, you have a problem. You will not make those guys embrace TDD ever. If you work with a group of developers that enjoy coding you can show them the efficacy of TDD from a couple of papers:
The quotes at the first article are great:
We found that test-first students on average wrote more tests and, in turn, students who wrote more tests tended to be more productive. We also observed that the minimum quality increased linearly with the number of programmer tests, independent of the development strategy employed.
The external validity of the results could be limited since the subjects were students. Runeson compared freshmen, graduate, and professional developers and concluded that similar improvement trends persisted among the three groups. Replicated experiments by Porter and Votta and Höst et al. suggest that students may provide an adequate model of the professional population.
We believe that the observed productivity advantage of Test-First subjects is due to a number of synergistic effects:
- Better task understanding
- Better task focus
- Faster learning
- Lower rework effort