August 8, 2004

TDD/Refactoring and Estimation

I was re-reading Managing the Design Factory. Reinertson says that if you plot the distribution of actual effort on a task versus estimate, you would expect to see a distribution that showed some tasks finishing early and others finishing late. In reality, what you see is a distribution that shows a lot of tasks finishing on time and a distribution of tasks finishing late. His explanation is that when an engineer finishes a task early, they use the remaining time to look for a bettersolution than the one they have developed. They use up the time that they gained looking for better solutions.

This got me thinking about test driven development (and its more elegant off spring Behaviour Driven Development.). The benefit of test driven development is that you know when you are finished with certainty because all of your tests / behaviours go green. You do not need to look for a better solution because the one you have developed is good enough. Also, you have probably been refactoring as you go along so that the technical debt is not too high.

I suspect that test / behaviour driven development will result in tasks finishing early as well as late. This will make the estimates more accurate rather than always being on the low side.

It would be interesting to see if anyone has done some research on the actual versus estimate distributions for normal projects and those developed using test driven development.

Posted by chrismatts at August 8, 2004 9:58 AM
Comments

Care to share what's nifty about jBehave? I couldn't find anything on the site that explained what it's got that JUnit don't got.

Posted by: Chris Morris at August 9, 2004 9:32 PM
Post a comment









Remember personal info?