Pair programming? TDD? Where is the proof?
Often while discussing agile practices with agile skeptics, the question of proof comes up. “Are there studies done showing TDD? How do you know pairing works and doesn’t just waste time?”
Those are tough questions. Software is not a science, and there are no double-blind, randomized controlled projects. The study of software development barely approaches the level of a social science. Its easy to discuss the flow and intuitive sense that agile works with other people who have experienced it, but try expressing that to someone who has never stepped beyond the waterfall model.
Things are getting better in the area of real, hard studies done on agile. One example is the work being done by Microsoft’s Empirical Software Engineering Group (ESM). The summary from the TDD study is worth citing:
“The results of the case studies indicate that the pre-release defect density of the four products decreased between 40% and 90% relative to similar projects that did not use the TDD practice. Subjectively, the teams experienced a 15–35% increase in initial development time after adopting TDD.”
I’ve included full links to some of the standout papers on my @to-read list below.
Do Cross Cutting Concerns Cause Defects? (my alternate title: “why the hell should I care about AOP?”)
The Influence of Organizational Structure On Software Quality: An Empirical Case Study