For 2,000 years, ever since the Ancient Greeks got it into their heads that disease was caused by excess fluids, most disease in the western world was treated through bloodletting. Your back hurts? Let's drain a quart of blood and see how you feel! Need to amputate your foot? Better drain some blood first. Was the practice scientifically baseless and actually harmful? Hell yes! There are today some cases where bloodletting is validly practiced, but it is no longer the panacea it once was. Effort estimation is software development's version of bloodletting. Developers use effort estimates to drive accountability, to conduct cost-benefit analysis, to pack sprints, create launch timelines and, I believe in some circles, to summon the nine dark lords of hell.
But why do we think effort estimates are the solution to all of these problems? Everything about effort estimates in software really is silly. Look at the homegrown rules we've come up with for estimates. I've heard more than one grizzled veteran tell me their preferred method is to take their initial estimate, double the number and up the unit of time (e.g., hour becomes day, day becomes week, etc.). This is always said in a semi-joking "but, no really, it works" tone. In the 90s highly complicated methods of estimation became popular that involved lots of acronyms and I'm sure consultants. Now that agile has taken over the software industry we estimate using planning poker and Fibonacci numbers. The latest estimation technique is to sacrifice a goat and spread its entrails over a large area. Maybe that will finally be the trick that works, but I doubt it because as an industry, despite all these new techniques, we are still no better at estimating.
I've invested quite a bit of time at getting better at estimation. And I got a little better. But one day, while knee deep in goat entrails, I stepped back and looked at the whole mess and asked why am I doing this? To what end do we estimate and then re-estimate, pack a schedule just to pack it differently in a month. And at the end of this introspection I determined my life of software estimation had all been a fraud. I'd been wasting my time. I moved to Nepal and joined a small temple. And now the secret of why I haven't been working on my blog is out. But after years of meditation I've decided to come back to the material world and spread my gospel.
And so, to demonstrate that effort estimates are not only useless but also harmful, I shall attack each motivation on its own. I will start next week with my least favorite reason of all... accountability!