Exploding Software-Engineering Myths

Microsoft Research Redmond did an empirical study of software-development processes, providing some quantitative analysis of some common beliefs about software development. The article's an interesting read, but I'll summarize the key findings:

Code Coverage: More isn't always better - "given constraints, it is more beneficial to achieve higher code coverage of more complex code than to test less complex code at an equivalent level"

Write Test Code First: Test first produces higher quality but takes longer, i.e. TANSTAAFL - "TDD teams produced code that was 60 to 90 percent better in terms of defect density than non-TDD teams. They also discovered that TDD teams took longer to complete their projects-15 to 35 percent longer"

Assertions: More is better, but experience matters - "more assertions and code verifications means fewer bugs. Looking behind the straight statistical evidence, they also found a contextual variable: experience. Software engineers who were able to make productive use of assertions in their code base tended to be well-trained and experienced".

Organizational Structure Matters ("a lot"): "Organizational metrics, which are not related to the code, can predict software failure-proneness with a precision and recall of 85 percent. This is a significantly higher precision than traditional metrics such as churn, complexity, or coverage that have been used until now to predict failure-proneness. This was probably the most surprising outcome of all the studies."

Geography Doesn't Matter - Much: guess what matters more - "differences were statistically negligible...Most people preferred to talk to someone from their own organization 4,000 miles away rather than someone only five doors down the hall but from a different organization. Organizational cohesiveness played a bigger role than geographical distance."

Technorati : Test;TDD;Microsoft

Del.icio.us : Test;TDD;Microsoft

Zooomr : Test;TDD;Microsoft

Flickr : Test;TDD;Microsoft