Getty Images

Tip

Agile estimation: Predicting the unpredictable

Agile teams' overreliance on estimates detracts from the overall goal to deliver value to the customer. Avoid these agile estimation pitfalls in your software development efforts.

Imagine you're cooking a new recipe. You have the ingredients, the instructions and the tools. Yet, as you cook, you run into problems: some ingredients need more prep time, the oven heats unevenly and the sauce reduces faster than expected. Despite your experience and planning, you can't predict every little twist that arises.

Agile software development can be like that, too. No matter how much experience you have, unknowns can disrupt even the most carefully estimated plans. This unpredictability makes estimation in Agile software development a tricky business. Despite their best efforts, teams often encounter challenges that render their estimates unreliable. Attempts to control the unknown can detract from the true goal: delivering value to the customer.

Let's explore several behaviors that cause estimation to become problematic in Agile environments, and how teams can address these issues.

Obsession with estimates

Customers "hire" a product to get a job done and solve specific problems. However, Agile teams often become excessively focused on improving their estimates, and trying to precisely meet those estimates diverts attention from the central goal to deliver value. This obsession shifts the focus away from product quality and adaptability, and forces teams to prioritize prediction accuracy over meaningful delivery.

Estimates become promises

Agile leaders often treat estimates as firm promises. Teams provide a range, and the lower end of the range becomes the expected delivery date. As a result, the team misses deadlines which leads to disappointment and blame.

Remember: Estimates are inherently uncertain.

Base estimates on unclear needs

It's tricky and problematic to estimate early in a project when teams know the least about the customer, its product and needs. At the start, teams are often vague or incomplete, which makes it difficult to create reliable estimates, and this leads to misaligned expectations and inflated promises.

If teams cannot estimate initial requirements, they might break them down into 15-20 smaller items. Teams can't reliably estimate 15-20 items, so they inflate each smaller item. Padding each smaller estimate can result in an overly conservative, inflated and grossly inaccurate final estimate.

Trade quality for deadlines

To meet unrealistic deadlines, teams may cut corners on critical aspects such as testing and code quality -- for example, making unit tests optional. This leads to technical debt and defects that only become apparent late in the project or after release, which compromises the product's long-term maintainability and performance.

Estimation doesn't directly contribute to delivering product value. Time spent creating and improving estimates could be better utilized in actual product development to improve quality.

Estimation as a false sense of control

Leaders often use estimates to create a sense of control, with the belief that better estimates ensure better results. However, this emphasis on prediction over adaptability leads to rigid planning, and stifles the Agile principle of responding to change.

Ineffective long-term planning

Long-term estimates based on early requirements are inherently flawed because challenges and changes emerge. An agile team should focus on solving specific problems iteratively and preserve flexibility to respond to changing needs, rather than assume that the final product will lead to better outcomes.

For short journeys, it is often better to start walking than to measure every step.

Inaccurate estimation for complex work

Estimation tends to fail when it is applied to items that involve a lot of discovery or uncertainty. Each team's skills and work are different. Attempting to force uniformity in estimating items, such as expecting every team to deliver the same story points, can undermine flexibility and lead to inaccurate planning.

Fixed mindset vs. hypothesis-driven approach

Estimation is often tied to the traditional project mindset that the team should complete a fixed set of items rather than focus on what might be good for the user or solve a core problem. When teams focus on finishing predefined features instead of testing hypotheses and adjusting priorities based on real-time feedback, estimation becomes more prevalent and problematic. Agile principles value flexibility and responsiveness over adding unnecessary rigidity to the development process.

Failure to segregate core and non-core work

Teams often neglect the Agile principle of doing the most important work first. Instead, they focus on completing all features but fail to segregate the core from the non-core work. This leads to unnecessary estimations, wasting time and effort to predict the delivery of features that may add little or no value, instead of continuously delivering high-priority outcomes.

Estimation overhead for small work

As work items become smaller, estimation becomes less useful and necessary. When teams work on small, well-defined items, the effort to calculate estimates becomes a burden or overhead.

At the same time, teams often don't break their work down small enough. This makes estimation seem necessary even when it could or should be avoided.

Unaddressed complexity and chaos

Agile estimates neither address the chaos in the system, such as inefficient structure or workflow, nor the inherent complexity of development work, especially unknowns that can emerge during execution. These unknowns, including unexpected technical challenges or misaligned understanding of items, can lead to wide variations in the time required to complete work, and render estimates unreliable.

Lack of dynamic forecasting

Agile estimation methods typically use static or deterministic approaches to forecasting, which ignore variability and uncertainty. A more robust probabilistic or Monte Carlo approach, one that factors in historical data and models risk and delays, would provide better insights into potential outcomes and allow for dynamic forecasting.

Estimates often focus on development items but ignore the broader flow of work including coordination, meetings, quality checks and team dynamics. These activities impact velocity and predictability but are not usually reflected in estimates.

Start walking, then measure steps

Agile supports the ability to work small -- but teams don't work small in Agile, and that's why the estimation problem creeps in. The best way to avoid estimation pitfalls is to work so small that estimation becomes an overhead. The smaller the horizon, the lesser the need for estimation.

For short journeys, it is often better to start walking than to measure every step.

Ashok P. Singh is a product coach, author and entrepreneur who helps companies simplify their agile software development and product development.

Dig Deeper on Software development best practices and processes