Agile effort estimation techniques are approaches used in Agile project management to estimate the amount of time, work, or resources required to complete a specific task, user story, or project. These techniques are designed to be flexible, collaborative, and responsive to change, which aligns with the principles of Agile development. In this post, we will explore some of them.
Planning poker is a collaborative estimation technique that uses a deck of cards with values (e.g., Fibonacci sequence) to estimate the complexity of user stories. Team members take turns presenting their estimates, and discussions continue until a consensus is reached. It encourages team participation and minimizes anchoring biases.
How to do?
The Agile team, which typically includes developers, testers, and other relevant members, gathers for an estimation session. The product backlog or a list of user stories or tasks to be estimated is ready for discussion. Each participant should have a deck of Planning Poker cards or access to a digital tool designed for Planning Poker. Cards often have values like the Fibonacci sequence (1, 2, 3, 5, 8, 13, etc.), while digital tools display these values for selection.
A moderator or facilitator, often a Scrum Master or Product Owner, leads the session. Their role is to guide the discussion, ensure everyone participates, and keep the process on track.
The moderator selects one user story or task from the backlog for estimation and presents it to the team. The item's description and acceptance criteria may also be shared.
Each team member individually selects a Planning Poker card that represents their estimate of the effort or complexity of the item. They do this privately without revealing their choice to others.
Once everyone has selected a card, the team members simultaneously reveal their chosen cards to the group. If using physical cards, they can reveal them by flipping them face-up at the same time. If using digital tools, they press a button to reveal their estimates simultaneously.
If there is a wide range of estimates, team members briefly discuss the reasoning behind their choices. This discussion helps the team reach a common understanding of the work item. After discussion, team members repeat the estimation process, selecting new cards if their initial estimates have changed. The process of discussion and card selection is repeated until a consensus is reached, or until a predefined time limit is reached.
Once a consensus estimate is reached, the final estimate is recorded and associated with the user story or task in the backlog. This estimate is used for planning and prioritization.
Why the Fibonacci sequence?
The Fibonacci sequence is a non-linear scale, which means that the gap between successive numbers increases as you move up the sequence. This reflects the reality that as work items become more complex or larger, it becomes increasingly challenging to estimate their precise effort or duration. In Agile, the focus is on relative sizing and understanding that a task that is twice as large as another might take significantly more effort.
Using linear scales (e.g., 1, 2, 3, 4, 5) can give a false sense of precision when estimating work. It's difficult for humans to consistently and accurately estimate effort in linear units, such as hours. The Fibonacci sequence acknowledges this uncertainty and encourages teams to think in terms of broader categories.
While the Fibonacci sequence is a widely used scale in Agile estimation, there are several alternatives that teams can consider depending on their preferences and specific needs. These alternative estimation scales include:
T-shirt Sizes: Instead of numeric values, teams assign T-shirt sizes (e.g., XS, S, M, L, XL) to represent the relative size and complexity of user stories or tasks. This approach is easy to understand and is useful for high-level, coarse-grained estimation.
Custom Scales: Teams can create their custom estimation scales based on their specific context and preferences. For example, a team might create a scale that includes values like "Trivial," "Simple," "Moderate," "Complex," and "Very Complex" to reflect the nature of their work.
Tools for Planning Poker
There are several free Planning Poker tools and applications available that teams can use to facilitate Agile estimation and collaborative planning sessions. These tools often offer features like virtual card decks, real-time collaboration, and integration with project management or Agile tools. Here is some of them I tried:
Dot Voting is an Agile estimation technique suitable for sprint planning, especially when dealing with a relatively small number of items in the Sprint Backlog. It offers a collaborative way for team members to collectively prioritize and allocate effort estimates to user stories or tasks.
Before the Dot Voting session, gather small dot stickers, each color-coded to represent different levels of estimated effort. For example, you can use green for Small (S), blue for Medium (M), orange for Large (L), and red for Extra Large (XL).
Write down the user stories or tasks to be estimated on separate pieces of paper or cards. Place these items on a table or display them on a wall within the team's workspace. Ensure that everyone can easily see and access the items.
Team members are given a set number of dot stickers in each color category corresponding to the estimated effort levels. For instance, each team member might receive a certain number of green, blue, orange, and red stickers.
Team members physically walk around the table or the wall display and assess the items. They then add their colored dot stickers to the items they believe should be prioritized or where they estimate the effort is most needed. Team members can distribute their stickers freely among the items based on their judgments.
Once all team members have allocated their stickers, you can observe which items have accumulated the most dots of each color. The items with more dots indicate higher levels of prioritization or estimated effort.
Depending on the outcomes and the team's preference, you can facilitate a brief discussion to address any significant differences in estimation. This discussion allows team members to explain their rationale and reach a consensus on prioritization or effort allocation.
3.The Bucket System
The Bucket System is an Agile estimation technique used to categorize and prioritize tasks, user stories, or backlog items based on their perceived size, complexity, or effort. It provides a simple and effective way for Agile teams to quickly group work items into predefined buckets or categories, allowing for easier prioritization and allocation of resources.
Before starting the Bucket System estimation process, gather the team, including developers, testers, and relevant stakeholders, for a collaborative estimation session.
Define the criteria for categorizing items into buckets. These criteria can vary depending on the team's context but often include factors like complexity, effort, risk, or size. Decide on the number and names of buckets that will be used for categorization. Common bucket names include "Small," "Medium," "Large," and "Extra Large," but you can customize them to match your team's needs.
Present a list of user stories, tasks, or backlog items that need to be estimated. These items should be clearly defined, and their descriptions and acceptance criteria should be readily available to the team.
Begin the categorization process by discussing each item one by one. The team members collectively decide which bucket best represents the size, complexity, or effort required to complete the item.
Place each item into the appropriate bucket based on the consensus reached during the discussion. It's essential to have the entire team agree on the categorization for each item.
After categorizing all the items, the team can prioritize the work based on the bucket assignments. Typically, items in smaller buckets are tackled first, followed by those in larger buckets, but this can vary depending on project priorities.
It's important to revisit the Bucket System regularly, especially as new information becomes available or as the team gains a better understanding of the work. Refinement and iteration ensure that items are continuously evaluated and correctly categorized.
The "Large/Uncertain/Small" method is a variation of the Bucket System used in Agile estimation. It categorizes tasks, user stories, or backlog items into three buckets: Large (high effort or uncertainty), Uncertain (moderate effort or uncertainty), and Small (low effort or certainty). This approach helps Agile teams quickly prioritize and allocate work items based on their perceived size and uncertainty, facilitating efficient planning and resource allocation.
Expert Judgment is an Agile estimation technique that relies on the expertise and insights of individuals or subject matter experts within the team to assess the effort, complexity, or duration of tasks, user stories, or project components. It is a qualitative approach that leverages the knowledge and experience of team members to provide informed estimates based on their understanding of the work.
Ensure that the Agile team, including developers, testers, and relevant stakeholders, is present for the estimation session. The participation of individuals with diverse expertise is valuable.
Introduce the tasks, user stories, or items that need to be estimated. Provide a clear description of each item, including acceptance criteria and any relevant background information.
Encourage team members to share their expert judgments regarding the effort, complexity, or duration of the items under consideration. Each team member provides their estimation based on their individual expertise.
Facilitate a discussion among team members to address any questions or concerns regarding the items being estimated. This discussion allows experts to share their insights and rationale for their estimations.
After individual estimations and discussions, work toward reaching a consensus estimate for each item. This consensus may involve adjusting estimations based on the input and expertise of the team members.
In summary, Agile effort estimation techniques are essential tools for Agile teams to plan and manage their work effectively. These techniques enable teams to assign relative effort, prioritize tasks, and make informed decisions based on collective input. Some popular Agile estimation techniques include Planning Poker, Dot Voting, the Bucket System, and Expert Judgment.
Planning Poker promotes collaborative estimation through card-based voting and discussions, fostering alignment and consensus within the team.
Dot Voting is a visual technique for prioritizing tasks based on team members' preferences, encouraging participation and transparency.
The Bucket System categorizes work items into predefined buckets, simplifying prioritization and resource allocation.
Expert Judgment leverages the expertise of team members to provide informed estimates, particularly valuable for complex or novel tasks.
These Agile estimation techniques, along with others, serve to enhance Agile project planning, promote collaboration, and enable teams to adapt and deliver value effectively. By selecting the most suitable method for their context, Agile teams can refine their estimations, prioritize work, and achieve successful project outcomes.
There are various other Agile estimation methods beyond the ones discussed here as well. These methods may include custom scales, affinity mapping, reference stories, and more. Agile teams often choose the estimation approach that best aligns with their specific context, goals, and team dynamics. The key is to select the method that facilitates effective planning, prioritization, and collaboration within the Agile framework.