Which software development estimation technique works better depending on the project phase?
Estimating development work is the process of predicting the amount of effort needed to implement a piece of work. As a result, it will determine the schedule, cost and features (scope) included in the mentioned effort.
The following figure shows the cone of uncertainty, which represents the variability on the estimates depending on the project phase. As we get closer to software completion, more certainty and accuracy is achieved. Techniques are positioned where it makes more sense conceptually, but they could be used anytime as needed.
During a feasibility study or early initiation phase
- Using historical data from previous projects in the organisation to apply analogy-based estimation such as ANGEL, Weighted Micro Function Points
- Estimates by experienced Architects
- Group estimates
- Using pre-defined algorithms or parametric models which basically allows to input number of interfaces with external parties, modules, screens, etc. and get an estimate on the overall effort
During requirement gathering phase
- All techniques mentioned in the initiation phase will also work in this phase
- Decomposing requirements/features and estimating in separate units and then aggregating estimates
During detailed design phase or Sprint planning
In this phase we will be getting a lot more certainty on what needs to be built, so useful techniques start shifting to a more detail approach:
- Breaking down into tasks or decomposing requirements/features and estimating in separate units and then aggregating estimates
- Counting number of interfaces, modules, screens, etc. and get an estimate on the overall effort by multiplying by a pre-defined effort
- Estimates by experienced Senior developers
- Group estimates techniques like Planning poker and Wideband Delphi
During building time or Sprint planning
- Using historical data from previous iterations in the same project
- Estimates by experienced Senior developers or the developer that will implement the feature
- Bottom-up / task level estimation
- Counting and calculating effort could still be useful if there is enough fine-grained data on previous iterations
My suggestion is that as you navigate through the project phases, gravitate towards more accurate estimation methods.
References
[1] Software Estimation: Demystifying the Black Art by Steve McConnell
Disclaimers
This is a personal article. The opinions expressed here represent my own and not those of my employer. It contains affiliate links. If you use these links to buy something, I may earn a commission. Thanks.