Estimation Techniques
I have outlined product development phases recommended by Disciplined Agile Delivery & different models to capture requirements at each phase in my previous article. I will cover an overview of different estimation techniques that can be used in each phase in this article.
Let me summarize product development phases for quick reference:
Inception: The goal of this phase is to build consensus among all stakeholders on scope of release, high level requirements, to define baseline solution architecture and to derive release plan
Construction: The primary goal of this phase is to iteratively release working product to get early feedback.
Transition: The goal of this phase is to ensure the product is production ready and to deploy it in a production environment.
In subsequent sections, I would cover the overview of estimation technique for Inception and Construction phase but prior to that let's understand estimation from Business and Engineering team perspective.
Estimation from Business & Engineering Team Perspectives
Business Perspective:
Estimation provides two key inputs to Business - Cost & Timeline
- Cost helps to evaluate ROI(return on investment).
- Timeline helps to align important Business milestones.
Engineering Team Perspective:
Usually, the Engineering team becomes very conscious when estimates are requested. The underlying reason could be the feel of holding accountable for the numbers provided.
In order to provide high level estimation also, good enough detailing of requirements is needed, which helps the Engineering team to get a sense of complexity.
Quality of requirements i.e. how well it is documented covering all scenarios is key to provide better estimate.
To Summarize:
- It helps Engineering teams to see the whole by understanding Business's perspective of need of estimation.
- Similarly, it helps Business to support the Engineering team with all required details for estimation by understanding the Engineering team's perspective.
- An open conversation where Business explains the need of estimation and the Engineering team helps Business deriving the same helps to achieve common goal effectively. It also helps to foster transparency.
Inception Phase - Estimation Techniques
The high level requirements and the scope are defined in this phase working closely with all stakeholders. Once requirements are defined, the next step is to derive a release plan based on high level estimations. Below estimation techniques help to provide high level estimates without spending too much effort.
T-Shirt Size
It is widely used by many Agile teams to quickly estimate product backlog. It is a relative estimation technique and the aim is to categorize product backlog items in T-Shirt size of XS, S, M,L and XL. Usually, the T-Shirt size is tagged with man-days, weeks or story points.
Example: Below story map captures high level requirements identified for mobile app. Each tasks are estimated with T-Shirt size estimation with T-Shirt Size indicating below range:
XS : 1 to 3 man-days, S: 4 to 8 man-days, M: 9 to 15 man-days, L: 16 to 24 man-days
It's relatively easy to compare features or PBI(product backlog item) and categorize in T-shirt size with the range provided above. "OTP based 2 factor verification" is more complex than the "Fill the required details" feature.
The total estimation for above scope is 79 to 131 man-days efforts. This gives Business a tentative estimate in terms of best case and worst case scenario.
Traditional Ballpark Estimation
It's a traditional way of estimating features in the form of either man-days or weeks. Each feature is estimated based on high level requirements. The buffer is added to overall estimation to cover complexities identified later or to cover unknown.
Example: The ballpark estimation for features identified for MVP for e-commerce website. The total ballpark estimation is 114 man-days including buffer.
To Summarize:
- The estimation provides detail of efforts required i.e. Cost.
- The velocity of the team defines the timeline of completion.
- Usually, the team's velocity details are not available during the Inception phase so it is better to consider team capacity for initial release plan and keep updating plan during the Construction phase.
- It is very important that Business expectations are managed for criteria considered to derive estimation and release plan, as both are likely to change during the Construction phase.
Construction Phase - Estimation Techniques
The high level requirements are further discussed in detail and usually captured in the form of user stories. The requirements are more clearly defined in this phase as those are implemented during iterations/sprints. Story Points and Man-days or Hours are two main estimation techniques widely used by Agile teams.
Story Points
Story Points is a relative estimation technique where each product backlog item is tagged with specific story point by comparing with the base user story identified for the specific iteration/sprint. The relative sizing is mainly based on past experience and complexity.
Large number of Agile teams use Fibonacci series (1,3,5,8,13..) for Story Point estimation. Planning Poker is a method to build consensus among all team members while estimating user stories for specific iteration/sprint. This method can be used depending on the context.
Man-days/Hours
This is traditional way of estimation technique where user story is further break down in tasks (i.e. API creation, QA, Business logic implementation etc.) and each task is estimated in hours or days. The estimation of each of these tasks rolls up to total estimation of the user story.
To Summarize:
- Definition of Done helps to create a shared understanding of all required activities to be considered while estimating specific user stories. Example - Coding standards, Unit Testing, Automated Test cases etc.
- Irrespective of estimation techniques, breaking down the user stories into small chunks of tasks helps to identify dependency and complexity which ultimately helps to estimate better.
- Team velocity is a very important metric. Capturing and having velocity details handy helps with a number of aspects like deriving team productivity and impact on timeline.
Summary
- Prioritization of features is key so that important features are delivered first. The estimations are likely to change as requirements evolve over a period of time with frequent feedback loop.
- It brings synergy between the Engineering team and Business if they can share and understand each other's perspective of estimation. This helps both to work towards a common goal effectively.
- Affinity Estimation, Bucket Estimation are few other estimation techniques used by Agile teams. Select the estimation techniques which works for team and Business.
References:
Quite informative. In T-shirt size estimation it vary from 79 to 131'days , this is not double but near to double. Do you think stackholder understand this ? Sometime i hear task of reducing estimation. How it works ? Are there any paramter in that area ?