A survey conducted by the Project Management Institute (PMI) revealed that inaccurate project estimates are the primary reason why projects fail, with 26% of the surveyed organizations admitting to experiencing a project failure due to poor estimates. Accurate estimation plays a crucial role in efficient project management. It helps predict the time, effort, and resources a project requires, thereby enabling us to plan better and make informed decisions.
As Agile project management gains popularity because of its iterative and flexible approach, it is important to master estimation techniques to effectively manage complex and dynamic projects. Agile estimation techniques provide a flexible and collaborative approach to estimation, allowing teams to adapt to changing requirements.
This blog explores five effective agile estimation techniques that help businesses deliver projects on time and within budget. Whether you are an experienced agile practitioner or new to agile methodologies, these techniques will help you improve your estimation accuracy and increase your project success rate.
Technique 1 – T-Shirt Sizing
T-shirt sizing is an agile estimation technique typically used in the initial planning of a project. It provides a rough idea of the effort needed to complete a task or user story without delving into too much detail. It is a collaborative approach that involves the entire team and is quick and easy to implement. Here are the steps to perform t-shirt sizing:
- Define the sizes: Assign sizes to t-shirts, such as XS, S, M, L, and XL. Each t-shirt size represents a range of story points corresponding to the complexity and effort required to complete a user story
- Pick a user story: Select a user story or backlog item to be estimated
- Vote: Each team member privately selects a t-shirt size representing the effort required to complete the user story
- Discuss the results: The team reveals their selected sizes and discusses any discrepancies in their estimations
- Revote (if necessary): If the estimates vary widely, the team revotes and repeats the discussion until they have a consensus
- Record the estimate: The team records the final estimate for the user story
Once the story point estimates are ready, the team can then use these estimates to convert them into rough orders of magnitude.
Technique 2 – Planning Poker
Planning poker estimates the effort required to complete a task or user story during sprint planning or backlog refinement meetings. Here are the steps involved in planning poker:
- Gather the team: Gather all the relevant stakeholders, including the product owner, developers, testers, and any other team members involved in the project, to conduct the planning poker session
- Set the scale: The team decides on the scale for estimation. The most common scale used in planning poker is the Fibonacci sequence (1, 2, 3, 5, 8, 13, 21, 34, etc.), but other scales, such as powers of 2, can also be used
- Discuss the task or user story: The team discusses the task or user story that needs to be estimated. The product owner explains the requirements and answers any questions that the team may have
- Distribute the cards: Each team member is given a set of cards with the chosen scale values. These cards are usually numbered or color-coded to represent the different values in the scale
- Estimate the task: The team members then choose a card representing their estimate of the effort required to complete the task. The cards are kept face down until everyone has made their choice
- Reveal the cards: Once everyone has made their estimate, the team members reveal their cards simultaneously. If there is a significant difference in the estimates, the team discusses the reasons and then repeats the estimation process
- Repeat the process: The team repeats the process until a consensus estimate is reached. This consensus estimate becomes the final estimate for the task or user story
- Record the estimate: The final estimate is recorded in the project management tool, such as a backlog, for future reference
Planning poker effectively involves the team estimating the effort required for a task or user story. It helps to ensure that everyone is on the same page and provides a more accurate estimate of the work involved.
Technique 3 – Three-point estimate
A three-point estimate is an agile technique to estimate the range of possible durations or effort required for a particular task, activity, or user story. Here are the steps to create a three-point estimate:
- Identify the task: Choose the task, activity, or user story to be estimated
- Define the three points: Define three points for the estimate: the best-case scenario (optimistic), the worst-case scenario (pessimistic), and the most likely scenario (realistic)
- Determine the values: Estimate the duration or effort required for each scenario. This can be done using time-based estimates (e.g., hours, days) or relative estimates (e.g., story points)
- Calculate the estimate: Calculate the three-point estimate using the formula: (optimistic + (4 x realistic) + pessimistic) / 6. This provides an estimated range that accounts for the uncertainty and risk inherent in the task
- Discuss and refine: Discuss the estimate with the team to ensure it accurately reflects the task’s complexity and potential challenges. Refine the estimate based on the team’s feedback and insights
The three-point estimate is a useful technique for estimating the range of possible outcomes for a task, activity, or user story. It helps the team to understand the risks and uncertainties associated with the work and to plan accordingly.
Technique 4 – Affinity Diagram:
The Affinity Diagram is a technique used to group ideas or features based on similarity. In this technique, the team writes down individual features on sticky notes and then groups them based on similarity. This technique helps to understand which features are similar and can be estimated together. This technique is beneficial when the team is dealing with many features and wants to group them into manageable chunks.
The affinity diagram is a collaborative, agile technique to organize and group many ideas or information into related themes. Here are the steps to create an affinity diagram:
- Assemble the team: Clearly define the scope of the work to be estimated
- Brainstorm: Conduct a brainstorming session to generate a list of tasks, activities, or deliverables required to complete the work. Write each task or deliverable on a sticky note
- Sort the sticky notes: Ask the team to sort the sticky notes into related groups or categories. For example, all the development-related tasks can be grouped, while testing-related tasks can be placed in another group
- Identify the major themes: Identify the themes that emerged from the sorting process. These themes capture the essence of the work to be estimated
- Assign relative sizes: Assign a relative size to each theme based on the effort required to complete it. This can be done using t-shirt sizes or Fibonacci numbers
- Finalize the estimate: The team finalizes the estimate by totaling the relative sizes assigned to each theme. This provides an overall estimate of the effort required to complete the work
- Refine the estimate: The team can refine the estimate by discussing any discrepancies or uncertainties and making adjustments based on their knowledge and experience
An affinity diagram is a powerful tool for organizing and categorizing the work to be estimated, and it can help the team arrive at a more accurate and reliable estimate. The affinity diagram is an effective technique for organizing and grouping ideas or information and can be used in various agile activities, such as sprint planning, retrospective, or backlog refinement.
Technique 5 – Dot Voting:
Dot voting is an agile technique to prioritize ideas, features, or backlog items based on the team’s collective input. Here are the steps to conduct a dot voting exercise:
- Gather the team: Assemble the team responsible for prioritizing the items. This typically includes the product owner, developers, and testers
- Identify the items: Present a list of features to be prioritized. These could be user stories, features, or backlog items
- Define the criteria: Define the criteria for prioritization, such as business value, technical complexity, or customer impact
- Allocate the dots: Provide each team member with a set number of dots (usually three to five), which they will use to vote for the items based on the criteria
- Cast the votes: Ask the team members to cast their votes by placing their dots next to the items they want to prioritize
- Count the votes: Count the number of dots allocated to each item. The items with the most dots are considered the highest priority
- Discuss the results: Discuss the results with the team to ensure that the prioritization aligns with the team’s goals and objectives
- Refine the prioritization: If necessary, refine the prioritization based on the team’s feedback and insights
Dot voting is a simple and effective way to prioritize items and can be used in various agile activities, such as sprint planning, backlog refinement, or release planning. It encourages collaboration and consensus-building among team members and helps ensure that the team is focused on the most critical items.
Agile project estimation techniques are critical to the success of any Agile project. The techniques discussed in this blog, T-Shirt Sizing, Planning Poker, Bucket System, Affinity Diagram, and Dot Voting, are just a few of the techniques used to estimate their projects accurately. The key to successful estimation is to involve the entire team and ensure that everyone understands the estimation process. This will ensure that the team is working towards a shared goal and is aligned on the estimated effort required for the project.