Seems contradictory, right? We spend a lot of time preparing software development estimates. Yet, I claim that the end result has no value. None. I also claim that the effort required to prepare estimates is time well-spent. That doesn’t make any sense! Or does it?
Everyone wants to know how long the project will take — but that’s never enough. They want to know how long we’ll spend on analysis, design, development, test and deployment. So we give it our best shot and come up with a set of estimates.
The problem with software development estimates is simply that they are notoriously unreliable. The scheduled work usually takes more time — often a lot more time — than estimated. Even when estimates appear to be accurate, developers may knowingly take shortcuts (also known as taking on technical debt) to meet the estimated timeline. Does that seem like a reasonable approach?
If estimates are so unreliable, why bother?
We know estimating is a challenge. We know it’s difficult. We also know estimates are needed by the business stakeholders for planning purposes. We know management needs some idea of what a project will cost so funds can be allocated and budgets can be tracked. We know. So we have to try. An educated guess is better than nothing.
Despite these problems, the effort required to arrive at an estimate is well worth it. The most important reason to estimate is that the process of estimating forces us to think, brainstorm, explore and discuss. We develop a better understanding of the problem by estimating the effort required to solve it.
Without bothering to estimate, we’d be more inclined to dive right in and start working on the solution. I’ll bet all of us have jumped into implementing a solution only to stop part way through as we realized that our solution wasn’t a good fit. If we had taken the time to layout the solution steps and estimate them, we may have avoided the wasted time and effort.
Don’t be a perfectionist.
So the next time you’re asked to provide an estimate, view it as an opportunity to evaluate and explore. Don’t get overly bogged down in deriving an accurate estimate. There’s no such thing. (Unless, of course, you throw in so much padding that you can’t be wrong. I’ve seen that done many times over the years and I strongly believe that it’s unethical and deceptive.)
Offer discerning, honest estimates and stick to them. Vary the project scope to stay on track. It’s an approach that really works!