In software development or any other project, we need to estimate to make trade-off decisions and set goals. Many times, this involves knowing how much the project will cost and how long will it take. So, how do we estimate?
Types of estimation
- Time Estimation
- This estimate is typically given as a unit of time (i.e. days or hours).
- To get ‘accuracy,’ the team needs to get into the details, which could lead to a large amount of waste.
- Different techniques: 3 Point Estimation, Top-Down Estimation, Bottoms-Up Estimation, Parametric Model Estimating
- Typically done up-front for a project and done once.
- Relative Estimation also known as Affinity Estimation
- The estimate is based on a function of 3 factors: effort, complexity, risk.
- Based on size or comparing and uses a value or point system such as:
- Fibonacci: 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
- Power of two: 0, 1, 2, 4, 8, 16, 32, 64, 128
- T-shirt: XS, S, M, L, XL, XXL
- Can be done quickly which reduces planning time.
- Is done continuously throughout the project.
As humans, we’re typically better at comparing things than giving the amount of time something will take. For example, in a team, team members will more likely agree on the size of something than agree on how much time something will take. This is important in Scrum when the team needs to iterate rapidly and needs to adapt to changes. Relative Estimation is better because over time it produces more accurate estimates and release dates.
Relative Estimation
In Relative Estimation, the intended outcome is to quickly estimate stories as a team effort. It is meant to drive conversations. Note: It is NOT a commitment. In the long-run, this technique becomes more accurate than time-based estimation as the team is estimating continuously and improving along the way.
In a scrum team, the estimations should be made by the team members doing the work, not by the people who want the work done. The below highlights the different scrum roles and actions.
Product Owner:
- Available to clarify stories.
- Does NOT estimate.
Scrum Master:
- Facilitates the process.
- Does NOT estimate.
Team Members:
- Discuss stories and estimates the backlog.
- Estimates are forecasts NOT commitments.
Agile Estimation Strategy
When starting, the team members should agree to a baseline. This can be done by taking one user story and assigning a value to it. Then other user stories are compared to the baseline to determine if the size should be smaller, larger, or the same.
Here are two types of Agile estimating strategy:
- Estimating stories individually (one-by-one)
- Layout all of the user stories.
- Team members should select one story to be the baseline and assign it a value.
- Then each subsequent user story should be compared to the baseline to determine if the size is smaller, larger, or the same.
- Estimating stories in groups
- Layout all of the user stories.
- Team members should group stories into similarly sized piles of related activity.
- Then estimate size for each pile.
- This is a fast way to estimate a large number of stories.
If your team is just starting out and wants to practice, try these Agile Estimation Exercises for Your Team.
To help with estimation, Agile planning cards can be purchased on Amazon here.