tl;dr
As we advance on our agile journey, mastering the art of estimation and understanding the intricacies of uncertainty becomes crucial. This comprehensive guide aims to empower you with the skills necessary for effective project delivery, emphasizing agile estimation techniques, troubleshooting common challenges, and navigating the uncertainties inherent in our projects.
What's it about?
Estimation is used to compute expected story points the specific Jira may require. It is just an estimate and not a commitment. A commitment is reached in concert with stakeholders who need to agree on the estimates and other properties of the work to be done.
Estimation is not about planning. It is intended to provide an idea of the work required so that it can lead to an increment in the agreed timeframe (one or more Sprints).
Estimates can be, however, used in prioritization. For example, if a Jira issue has a very high estimate, it may most probably need to be broken down into parts or postponed to a future Sprint.
Other factors include the scope of the effort and importance (impact, reach, etc.).
Other factors include the scope of the effort and importance (impact, reach, etc.).
Estimation Best Practices
Estimates don't have to be perfectly accurate as much as they need to be useful.And when we have a combination of useful estimates, good target setting, and good planning and control,we can end up with project results that are adequately close to the estimates.And by adequately, we mean that they're close enough to satisfy the stakeholders of the project.
Core Techniques of Agile Estimation with Examples
There are many estimation techniques that can be used. Here is a summary of some.
Generally estimation is not about how long the work will take but the effort needed to complete the work. So they focus is purely on what needs to be done as opposed to how long,
Enhancing Estimation Skills
- Foster trust and empathy within the team to create a safe environment for honest estimates.
- Define clear criteria for what "done" looks like to avoid ambiguity.
- Present estimates as ranges to manage expectations realistically.
Embrace the reality of our projects early on, relying on real data and past performance (velocity) to guide our estimates.
Story Points
Story points are used because they are simple to assign and compare. Story points are not composite numbers but gauges of the effort needed.
Exploring Popular Techniques
Core Techniques of Agile Estimation with Examples and Analysis
1. Planning Poker
- Example: The team estimates the effort for a new login feature. Each member selects a card representing their estimate, revealing it simultaneously, leading to a discussion on discrepancies, for instance, between a 3 and an 8 point estimate.
- Pros: Promotes team collaboration and discussion, leading to more accurate estimates by leveraging collective wisdom.
- Cons: Can be time-consuming for larger sets of user stories and might lead to conformity pressure in some team settings.
2. T-Shirt Sizing
- Example: Early in the planning phase, tasks are classified as XS (a small bug fix) to XL (building a new search functionality), helping quickly gauge the project scope.
- Pros: Simple and intuitive, making it excellent for high-level planning and for teams new to agile practices.
- Cons: Lacks precision for sprint planning and can be subjective, as size interpretations may vary among team members.
3. Bucket System
- Example: With 100 user stories to estimate, the team places stories into "buckets" of different effort levels, then discusses any significant discrepancies, such as a story placed in both "Medium" and "Large" buckets.
- Pros: Efficient for estimating large volumes of items and encourages consensus without extensive discussion for each item.
- Cons: Initial setup and understanding of the bucket system can be complex for new teams.
4. Silent Estimation
- Example: After the product owner presents a feature enhancement, team members privately place their estimates. Discrepancies are discussed to understand different perspectives.
- Pros: Reduces bias and influence among team members, encouraging independent thought.
- Cons: May limit the richness of discussion and learning that comes from open estimation debates.
5. Three-Point Estimation
- Example: For adding payment gateway integration, the team considers the best-case (3 days), worst-case (10 days), and most likely (5 days) scenarios, averaging these to guide their planning.
- Pros: Provides a balanced view that considers uncertainties, offering a more nuanced estimate.
- Cons: Requires more effort and can be confusing for teams not used to statistical or probabilistic thinking.
6. Fibonacci Sequence
- Example: The team uses a sequence of numbers (1, 2, 3, 5, 8, 13, ...) to estimate a feature's complexity. We usually consider tasks of less than 3 something that can be accommodated in a Sprint. We also prefer, for consistency, to provide whole numbers as opposed to fractions. Tasks that are 3 or larger should be broken down into smaller Jira's.
- Pros: The increasing scale reflects the inherent uncertainty and complexity in larger tasks more accurately. It encourages thinking in terms of relative complexity rather than trying to quantify hours directly.
- Cons: Can be abstract for teams unfamiliar with relative estimation, and the non-linear progression might confuse new members.
Fibonacci estimation, often used in agile methodologies for estimating the size of tasks, user stories, or features, is favored for its proportional sizing approach because it reflects the inherent uncertainty in estimating larger items more accurately than linear scales. The Fibonacci sequence (1, 2, 3, 5, 8, 13, 21, etc.) increases exponentially, which aligns well with how the complexity, risk, and effort of tasks tend to scale in software development projects. Here's why it's considered to provide proportional sizing:
- Reflects Uncertainty: As tasks increase in size, our uncertainty around them also grows. The Fibonacci sequence's exponential growth mirrors this uncertainty, with the gap between numbers widening as you move up. This makes it easier to distinguish between the effort required for larger tasks compared to smaller ones.
- Prevents Nitpicking: When dealing with larger numbers (or more complex tasks), it becomes increasingly difficult to argue over the minute differences between them. For instance, debating whether a task is a 20 or a 21 is less meaningful than discussing if it should be a 13, 21, or more. This helps teams focus on the relative size of tasks rather than getting bogged down in details.
- Encourages Consensus: In planning poker, a popular agile estimation technique, team members use Fibonacci numbers to vote on the effort required for each task. The use of Fibonacci numbers encourages team members to reach a consensus on size estimations based on discussion and understanding of each task's complexity and requirements.
- More Accurate Proportions: The sequence's exponential nature allows teams to make more accurate proportional assessments between tasks. Linear scales can often lead to underestimating the complexity and effort of larger tasks, while the Fibonacci scale accounts for the exponential increase in complexity and uncertainty.
- Simplifies Estimation Process: By limiting the options to Fibonacci numbers, the estimation process is simplified. Teams are not overwhelmed with choices, making it easier to categorize tasks into broad effort categories. This simplification leads to faster and more efficient estimation sessions.
Epic Estimation
Depending on when the Epic is created, the estimate for an Epic is typically the sum of the included Jira's in that Epic. However, there may be circumstances where the Epic is created first. In those instances, it's still best to identify the required tasks to complete the Epic, the estimate for each of the tasks to then sum up the estimate for the Epic as a whole. Again, prior estimates could be used if the work is comparable.
Factors to Consider When Estimating
- Team Velocity: Use historical performance as a guide for future sprint planning.
- Complexity and Uncertainty: Account for the intricacies of tasks and the unknowns that may affect project timelines.
- Dependencies: Recognize and plan for the interconnections between tasks to avoid project delays. These should be expressed as dependencies in Jira
- Skills: does the team member have the level of skills to do the job at the required pace
Navigating Common Challenges with Examples
Understanding Types of Uncertainty in Agile Projects
Types of Uncertainty with Examples
- Requirement Uncertainty: Adapting to evolving client needs for a CRM system without specific initial feature clarity.
- Technical Uncertainty: Navigating the unknowns of integrating new AI technology for the first time.
- Market Uncertainty: Responding agilely to sudden market trends, such as increased demand for remote work tools.
- Regulatory Uncertainty: Dealing with the changing landscape of financial regulations during app development.
- Resource Uncertainty: Adjusting plans due to unexpected team member absences.
- Estimation Uncertainty: Reconciling wide variances in team estimates for new feature development.
- Stakeholder Uncertainty: Shifting project focus based on changing stakeholder priorities.
- External Uncertainty: Adapting to unforeseen external events like global pandemics or new technology standards.
Strategies for Managing Uncertainty
- Frequent Re-Evaluation: Regularly update our plans to reflect new information and insights.
- Incremental Delivery: Break projects into smaller parts to lessen the impact of uncertainties.
- Stakeholder Engagement: Keep communication channels open with stakeholders for continuous alignment.
- Learning and Adaptation: Foster a learning environment for the team to adapt to new challenges and skills requirements.
- Risk Management: Identify risks early and devise strategies to mitigate them, ensuring project resilience.
Troubleshooting Guide
Estimation can be tricky, and you might encounter challenges such as poorly defined user stories or the temptation to multitask. This section offers strategies to overcome these obstacles, emphasizing the importance of clear communication, focused work, and acknowledging uncertainty.
- Poorly Defined User Stories: Refine vague tasks to clear, actionable items to provide direction and improve estimation accuracy.
- Multitasking: Focus on completing one task at a time to enhance work quality and reduce the likelihood of errors.