Wednesday, October 24, 2007

Dentists and Highways

A notorious problem in software development is estimating how much time is required to complete a particular software project. I've written an awful lot of software over the past couple decades, complex systems, commercial applications that have been quite successful, etc. In the process, I've received a number of kudos from management on the accuracy of my estimates.

What's my secret? I don't think I have one. If anything, I'd say experience is key--and, perhaps, the ability to relate the level of complexity and uncertainty of something I've never done with something I've done before. I imagine a carpenter who hasn't built a particular cabinet does the same thing--he comes up with an estimate by relating the the cabinet he's asked to build with an essentially similar cabinet he's built during a previous commission.

I don't see how experience can be removed from the equation. I think it's crucial. Asking a carpenter to estimate the costs of fixing a car is as much an exercise in absurdity as asking a dentist to estimate the time needed to pave ten miles of highway.

When you remove the critical component of experience, estimation becomes a meaningless crapshoot, which is why I find this How Good An Estimator are You? quiz silly.