Agile story estimations can be done through the use of time or story points. The story points approach is popular and widely used by team because the story points are assigned to a story in the backlog as a measure of relative effort and complexity of that story. This blog post intent is not to teach the team to achieve perfect or accurate estimation, but to assist the team in achieving reliable velocity. With reliable velocity, the team can easily predict how long it would take to deliver a unit of work in the backlog. A unit of work could be a milestone or an epic.
A team’s velocity is a measurement of the number of estimation units that the team completes sprint after sprint. The velocity is based on the number of stories that have successfully been completed in the past. This means when starting a new sprint, the team is able to use the velocity metrics as an indication to determine the number of stories in the backlog that can be realistically completed in the sprint. Additionally, when the team has reliable velocity, the team can confidently predict how long it will take to deliver a milestone, while putting other factors into consideration ( PTO, On-point/On-Call e.t.c).
Story point size
The size of stories is estimated using the Fibonacci Agile Estimation approach, which uses the Fibonacci sequence as a scale for estimating story points. The Fibonacci sequence is as follows: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89… and so on, where each number is the sum of the preceding numbers. In essence, a task estimated as 2 story points is expected to be twice as complex and requires double efforts to complete as a task estimated as 1 story point. Also, 3 story points should equal triple the effort and complexity compared to 1 story point.
A team can adopt a story point sizing approach where 1 is the minimum point and 5 is the maximum point that can be assigned to any story. If there is a story bigger than the agreed limit (8, 13, or more) then it should be split into smaller stories or tasks. Smaller stories facilitate precise estimation.
For example, a story to change the copy of a button in a react component might be assigned a 1 story point. While a story to update routing for the some backend endpoints might be assigned a 5 story point, because of the effort and the complexity required to complete the story.
Assigning story point
Ideally a team will size the stories in the backlog during the backlog grooming or refinement session. During this session, the backlog items are reviewed, discussed, sized and prioritized. When attempting to estimate a story, the team will discuss some questions related to the story, such as:
- How much work is involved?
- How complex is the work?
- Will the team be able to complete the story given the current technical abilities?
- What are the potential risks?
- Are there requirements that need further clarification or investigation?
- Will the team require collaboration or help from other teams?
- Have we considered everything in the definition of done?
A planning poker agile estimation technique can be used to size each story. Each team member will provide a Fibonacci number ( 1, 2, 3, 5, e.tc.) that depicts the size of the story being reviewed, based on the complexity and required effort to implement. The process will not involve the use of actual cards, but team members can send in the story points to the message channel used for the grooming session, in a coordinated voting manner.
How is it done?
For example, let's assume in a backlog grooming session, the team is trying to size a story – ‘Migrate logs to Splunk’. The team will have to discuss the story based on the questions discussed above. After the efforts, complexity and uncertainty have been determined, the team can proceed to attempt estimation, using the planning poker approach. If there are three members in the grooming session, the team can have the same story estimated differently as below:
- Estimation by first member = 1
- Estimation by second member = 2
- Estimation by third member = 5
The estimation from the first and second team members are close, but the third team member gave the story a 5 point. The third team member would explain why they think the story is bigger. The team will discuss, review and eventually agree on the appropriate point to assign to the story before moving on to estimate the next story in the backlog. This process is repeated until all the stories in the backlog has been groomed.