Software estimation: you’re probably doing it wrong

The right and wrong way to estimate software costs

If you’ve ever been part of a large software development project, you probably remember how slowly it moved and how the initial completion date got pushed back time and time again. Unfortunately, this is all too common because few teams know how to truly estimate software. In fact, most teams are not even equipped with the right concepts to estimate software accurately.
Many people give up and take the stance that software estimation is not possible, and simply resort to just doing as much as possible without attempting to estimate, under the cloak of agile development.
Luckily, software development can be estimated, if you know how.
At the beginning of a project, estimates are often off by half an order of magnitude or more - yes, you read that right: +/- 500% is a realistic error margin in the early stages of a new project. But as the project continues, many unknowns become known, and the estimate becomes more accurate. By the later stages of a project, estimates tend to be much more accurate - say +/- 25%. This rapid increase of accuracy throughout the project is called the “Cone of Uncertainty”. (We highly recommend the book Software Estimation: Demystifying the Black Art by Steve McConnell if you want to learn more.)
Estimates tend to have a 500% error margin during the discovery phase, but this margin quickly becomes closer to 25% in the later phases.
So, how do you plan around this uncertainty? What do you tell your users? What about your investors?
The answer is that we need to rethink the word “estimate”: they are not promises, nor are they goals. In order to plan around this uncertainty, we introduce a separate concept - a commitment.
A commitment is a goal to finish a project by a certain date or within a certain budget.
If your commitment is 2 months but your estimate is 5, you have a gap of 3 months and you’re taking on a huge risk that your project will almost certainly not be done in time. You can aim for 2 months but accept the risk, or you can adjust your commitment - it’s your choice based on how much risk you can take.
Estimates are unbiased probabilities that a project will be complete by a certain date or within a certain price.
At Thoughtful, we tackle the risk of software estimates in two ways.
First, we keep projects small. When a project is large, we break it into smaller ones that have less uncertainty. This is called phased development, and it is a type of Lean methodology. By breaking the project into smaller pieces with less uncertainty, we’re able to guarantee our prices and therefore save you tons of stress and money.
Second, we start every project off with a discovery phase where we go through the project and actively seek to uncover unknowns while planning as far into the future as we can. Because we’ve invested in reducing the unknowns, our estimate is more accurate. As the project moves forward through the phases, we’ll continue to re-estimate and give you more accurate estimates.

Want an estimate on your project? Let us know!

Ready to launch your product?

© 2024 Thoughtful NY, LLC. All rights reserved.