Estimates give a general idea about the size, timelines, or cost of a project. Scrum estimates are an important part of the agile development process, especially for engineering teams who need to deliver reliable software on regular intervals (often referred to as sprints of approximately two weeks). Unfortunately, though, it’s not uncommon for estimation sessions to be chaotic and unstructured.
Calculating scrum estimates involves aligning your priorities based on timelines and cost. It’s important to choose the best options to improve your accuracy so that you’re on track to meet your sprint goals. But that’s not so simple.
The time required to complete an item or project may change based on several factors: unanticipated technical issues, interruptions during estimation sessions due to other priorities, and shifting business objectives all make accurate estimates difficult. These changes can lead to teams consistently underestimating or overestimating items, as well as missed deadlines, scope creep, and sometimes even a project failure.
Another important factor in improving estimations is understanding the scope of the work. For example, if your company wants to build an interactive game, then before estimating, you should understand the type of interactions, levels, number of characters, and so on, which all take time to develop. Only then can you begin to provide accurate estimates based on those parameters.
In this article, you’ll learn some tips to improve the quality and consistency of your estimates, as well as how to build a better understanding of the scope of work to be completed so that you can get the most accurate results possible.
Scrum teams often estimate story points to create a functioning product, typically calibrating their estimates to reflect their degree of uncertainty about each feature being estimated. This way, engineers know whether they can safely deliver a task in one sprint or if it will take several sprints.
Scrum doesn’t impose an estimation technique. It only imposes some rules around estimates and gives teams the freedom to choose the estimation techniques that work best for them. When done right, estimation becomes fun. You get to see your progress as you go along without feeling guilty or penalized. Follow these tips to improve your estimation abilities.
Work Items Breakdown
The Scrum Guide recommends breaking work down into product backlog items that are small enough to be completed in a single sprint. This could take an hour of development time to several days, depending on what your team thinks is appropriate.
So how do you do this practically?
If your team is having trouble estimating more complex features, try looking at some of your other completed work and use that as a comparison. This should give you an idea of how long it typically takes to complete similar tasks.
Another option is to break larger items into subtasks that can be completed separately and added together later on. If that’s not possible, talk with your Scrum master about splitting up large tasks into a series of smaller ones that can be addressed independently by individuals or teams working in parallel.
Breaking down larger features into more granular tasks that are easier to manage may seem like a lot of work at first, but doing so makes it easier to visualize their completion and improve the quality of estimation. It’s worth the effort to break down your requirements into small, independent chunks that are more easily estimated.
Everyone Should Estimate
Make sure everyone estimates, not just the person who will be doing the work. Each member of your team can estimate how long it will take them to do a piece of work. For example, if you have five engineers on your team, you’ll want each engineer to give you an estimate for every task that needs to be done. If one engineer says it will take five days to complete a task and another says three days, you can confidently say that your team needs at least three dedicated days to complete that task.
The benefit of having estimates from all engineers is that you can get a better idea of what resources are required to complete your project. It also helps identify any bottlenecks in your project that need extra attention and builds consensus among team members. If your team thinks it’s going to take thirty days and one engineer says it will take fifteen, there’s something wrong with either that person’s estimate or the estimation process—or both. Thus, the team should continue to discuss and reason things out to decide on the estimate.
Another benefit is that when everyone estimates, the team discusses and counters each other, which helps in unraveling the real amount of time required to complete a task. It will also create an environment where you can have a structured discussion about how best to accomplish your task. And it allows your team members to better plan their time and consider the way things could be implemented.
Avoid the urge to rely on just one person’s estimate. Make sure that everyone is part of estimating what needs to be done. This will help improve consensus about how much time is actually required and help your team to better understand the scope of work.
Story Point Estimation with Fibonacci Numbers
Story point estimation gives your team a more accurate estimate of how long it will take to complete tasks. The best way to do that is by using Fibonacci numbers. As you might remember, the Fibonacci sequence is a series of numbers where each number is the sum of the two previous numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, and so on.
Why use Fibonacci? Well, let’s consider an example.
According to the Weber-Fechner Law, humans can identify the differences between objects in terms of proportion. Imagine that you see two boxes: one big, empty box and another smaller box full of stones.
Now, you are asked to determine which box is heavier just by looking at them, not by what is inside. Naturally, you’ll say that the bigger box is heavier.
Next, you are asked to pick up the boxes and then state which is heavier. You are surprised, in light of your previous answer, that the bigger box is lighter in comparison to the smaller box filled with stones.
Because the human mind perceives relativity and proportion, a bigger box appears heavier at face value as it is proportionally larger than the smaller one.
Now, let’s get back to the specifics of Fibonacci. In the series (1, 2, 3, 5, 8, and so on), the difference between the two succeeding numbers increases proportionally, and thus, the next derived number in the series has a higher value. Applying the Fibonacci concept to story points estimation helps agile teams understand the complexity of the story in proportion and to discuss estimations in light of relativity from a benchmark.
Confidence is another important aspect of a team delivering a user story. Consider a linear scale (1, 2, 3, 4, 5, 6, 7, 8, and so on). Here, the difference between the succeeding number in a linear scale is always the same and doesn’t increase proportionally, which provides no benchmark for estimating relative complexity. Linear scale estimations often work best for teams when project requirements are very clear and the availability of resources is consistent, giving the team more confidence in delivering the stories in a sprint or a release.
The Fibonacci series, on the other hand, gives teams more confidence in estimating complex stories with relative estimates due to its proportional increase. These estimates are often more realistic as they better incorporate the complexities involved in the evolution of Scrum and agile deliveries over time.
As a rule of thumb, if you are using story points, decide upon the upper limit, say 5 or 8, as it is typically too hard to estimate items beyond that with confidence. Doing so might lead to failures and missed deadlines. Thus, when something is estimated above your team’s threshold level, that means that you need to break the item into smaller, more manageable chunks, which can then be estimated better.
It’s also important to make sure, from the outset, that there is clarity about what an hour means to everyone on your team. If someone on your team works at twice the speed as anyone else, then their hour could mean two times as much work as anyone else’s. Thus, the estimations should be done on the basis of average performance.
For instance, a good estimation technique requires first creating a backlog of potential stories/tasks that describe what will be delivered by iteration (month), release (two to three months), or sprint (two to three weeks). Then ask your team to estimate it in hours. For example, the first team member says it might take twelve hours of effort, and another says six hours. Bridge the gap between these estimates by allowing the team to discuss. After discussing the estimates, if your team concludes that the task will take longer than anticipated, then break it down into smaller, more manageable pieces of work. This gives your team confidence to estimate better and also results in a better understanding of scope after a thorough discussion of the tasks at hand.
Estimation and Commitment
In many organizations, estimation is often considered a commitment. Say, for instance, a team estimates to deliver a functionality in two months with the available resources. These estimates are shared with higher management or even passed on to the customers. The teams then have to work day in, day out to meet these estimates, which could ultimately require providing additional resources or putting in more hours of work, as the estimate has been treated as a commitment. In some instances, missing estimates could have major repercussions from management or from customers based on the contract. However, under an agile approach, it is important to understand that an estimate is not a commitment . An estimate can change based on the scope of the work, team availability, or other dependencies. Also, keep in mind that estimating software development work is very difficult. Even if you come up with a high-level estimation, some amount of difference will always exist between the actual effort and initial estimates. This may occur due to change requests, cost escalation due to unavailability of materials, or any other factor beyond a team’s control when working on such projects.
Do not pressure anyone into giving an estimate they don’t feel comfortable with. Instead, ensure that your team members understand that estimation should just be a ballpark figure that may differ from the actual effort in some cases. In fact, both figures are equally valuable to the organization. Furthermore, agile teams should be responsible enough to manage their own time and, thus, do not need any external pressure to commit to anything unless it’s part of their charter or contractual obligations.
If you try to mix estimation with commitment, your team will be more worried about being penalized instead of focusing on delivering a high-quality product. This can have a negative impact on morale, productivity, and quality of work. Thus, keep your teams at ease and give them some leeway when it comes to estimation.
Scrum estimates are important for the success of your projects. By following the tips we’ve covered, you can focus on enhancing the quality and consistency of your team’s estimations and increasing collaboration between all stakeholders in a project.
For best results, always encourage an open forum for communication between all parties involved. This will help your team better understand requirements and have reasonable expectations before starting a project, rather than being stuck on fixing scope issues at later stages when changes are more expensive to implement.
By focusing on these strategies for improving your estimation, you will see a reduction in changes related to scope and improvement in planning projects with accurate estimates.
Nikhila Jain is a tech blogger who formerly worked as a technical lead & architect in the information technology space. With sixteen years of experience working in technologies like Java, Amazon services, Microservices, and Project and Team management, she wanted to blend her passion for writing with technology to help techies explore new domains.