Task Estimation
Avi Siegel
•
9 min read
What is task estimation?
Task estimation is a process used on Agile teams where engineers agree upon the amount of work each task represents. It is officially performed during the Backlog Grooming ceremony (although it sometimes bleeds into Sprint Planning as well). The process helps the product manager (PM) and engineering manager (EM) plan sprints, understand when blockers may be impacting progress, and provide a view into the team’s velocity over time.
What are the goals of task estimation?
The primary goals of task estimation are to:
Finalize the preparation of backlog items so they are ready to be pulled into a sprint
Enable the PM to prioritize more effectively (e.g., it may be worth resolving a bug if it’s expected to take one day, but it may not be worth resolving it if it could take two sprints)
Nudge the team to further break down large sets of work when feasible
Inform the team as to approximately how much work can be done within an individual sprint, so it can be filled accordingly
Enable the PM and EM to know when it may be worthwhile to consult task owners about tasks that are moving slower than expected, so they can remove blockers and provide additional resources as necessary
Give the PM and EM and higher level leadership insight into team velocity so they can understand how far out the completion of certain sets of work may be
What strategies are used to estimate tasks?
At its core, the process of task estimation means that teams need to apply a specific value to an impossible-to-know-perfectly set of work. This mismatch of “exact” and “inexact” necessitates the use of strategies to make this imperfect process practical, effective, and useful.
Encourage abstraction of estimates
Estimates are determined using a combination of:
Expected effort - how much work does the task entail?
Uncertainty - how confident is the team in the estimate?
An important detail here is that expected effort is an abstract representation of the size of the task - it is explicitly and purposefully not a reference to the amount of time the task might take. This is by design, because:
It is essentially impossible to know exactly how much time a given task will take
The amount of time a task might take will be different for each person who might pick up the work
Even for teams that understand this necessary level of abstraction, it is admittedly difficult for individuals to think about estimates completely abstractly. And so, it is common for teams to reference time in their deliberations, but importantly, with specific anchors in place. For example, a 1 point task may be expected to take a senior engineer up to 1 day to complete, but a junior engineer may take longer, and a principal engineer may take less time. In this way, “1 point” would not represent “up to 1 day”, but rather would represent “up to 1 day for a senior engineer”.
Select an estimation scale
The most common estimation scales employ the Fibonacci sequence and T-shirt sizes:
Fibonacci sequence: 1, 2, 3, 5, 8, 13, etc. For instance, a 1 may represent “up to 1 day for a senior engineer”, whereas a 5 may represent “1-2 weeks for a senior engineer”. In such a setup, 5s should be rare, and anything higher than a 5 should be broken down into smaller tasks.
T-shirt sizes: S, M, L, XL, etc. For instance, a Small task may be expected to take “up to 2 days for a senior engineer”, whereas a Large task may be expected to take “1-2 weeks for a senior engineer”. In such a setup, Ls should be rare, and anything higher than an L should be broken down into smaller tasks.
A note on other scales: Some teams select other options for their estimation scale of choice, such as powers of 2, a strictly linear sequence (1, 2, 3, 4, etc.), or others. These tend to not work as well as the above options - for example:
Powers of 2 may sound like a logical choice for engineers, but most find it does not provide enough discrepancy as the numbers get higher (which occurs quickly due to the exponential nature of the scale).
Linear may sound logical as well, but most find it also becomes less useful as higher numbers are reached, in particular because people tend (even if they try to avoid it) to think about estimates in terms of days. E.g., how confident can a team really be that it will take a senior engineer 4 days vs. 5 days or 9 days vs. 10 days to complete a given task?
What is involved in task estimation?
Task estimation is performed during the Backlog Grooming ceremony, as each task is discussed. The final result of this part of Backlog Grooming is that each task will be assigned an estimate as to how much work it represents.
By far the most common approach to estimating tasks as a group is an exercise called “pointing poker”, where the team votes on task sizes. When employing this exercise, the below activities will be performed as a team for each task.
Review, refine, & understand task
The PM will present each task, after which the entire team will discuss all relevant details about each task, including (but not limited to):
Context
Job stories
Core requirements
Acceptance criteria
Available visuals (screenshots, mocks, etc.)
Outstanding questions
Refine the task as necessary. This may entail further editing of the details in the task, or if it is too large, breaking down the task into smaller tasks.
Note that this part of the exercise is more specific to the Backlog Grooming ceremony than the task estimation part of Backlog Grooming, but it is an important precursor because it leads directly to the explicit understanding of the work described by the task. With that understanding, the team can move on to estimation.
Vote on task estimate
The EM will open up voting so that each team member can provide their estimate. This can take the form of:
A tool that allows everyone to vote, and after all votes are in, allows the EM to reveal the tallies
Timed raising of hands, with the number of extended fingers denoting the size
Open discussion where someone with the most context provides their estimate, and discussion amongst the team ensues
Discuss & agree upon task estimate
Once the votes are in, it will be clear as to whether there is broad agreement or disagreement on the size of the ask.
If there is agreement, the agreed-upon size can be assigned to the task.
If there is disagreement, the EM should open the floor for discussion. It is often easiest and most useful to start with someone who disagreed with the majority opinion, as the difference in votes reveal they might know something the rest of the team does not. For example, if 4 engineers voted for a 2, and 1 engineer voted for a 3, perhaps that engineer is aware of an aspect of the work that may prove to be more difficult than others give it credit for. Or, as another example, if 3 engineers voted for a 3, and 2 engineers voted for a 1, perhaps the engineers with the lower votes have done this exact task before, and know it is heavily documented and straightforward to complete.
Once the team is in agreement as to how much work the task entails, the EM will assign the estimate to the task.
Who participates in task estimation?
Task estimation is performed during Backlog Grooming, which means that the same individuals will be present as during that ceremony:
Product manager (to present tasks)
Engineering manager (to lead the voting process)
Engineering team (to collaborate on the sizing of each task)
Best practices for task estimation
Estimate tasks in real-time, together as a team. It can be enticing to attempt to perform task estimation asynchronously to save time, but without discussion it is unlikely to result in accurate estimates. When there is disagreement on the estimate (as there typically is), conversation is necessary anyway, and often more efficient live. And even when everyone agrees upon an estimate, it is possible that discussion would have revealed unknowns that would have increased the estimate or knowns that would have decreased the estimate.
Don’t feel the need to debate estimates until no dissenters remain. Task estimation is not about being exact, it’s about providing reasonable-effort best guesses. Be cognizant of the time you’re spending. For instance, if after 5 minutes of discussion, a single engineer still thinks the task is a 2, but everyone else believes it should be a 3, the EM should close out the conversation, and make a final call one way or the other. In cases where the one dissenter is both the person with the most context and the likely person to be assigned the task, feel free to go with that person’s gut - allow them to own it.
Utilize the task estimation process to encourage the team to break down work more than they might otherwise be inclined to. The higher the estimate, the more likely it is to be wrong - the more work involved in a task, the more pieces of the system it may touch, and thus the more unknown-beforehand complications may arise. That means that small estimates are pure gold - the team more confidently believes the work will be done quickly. As such, expectations can be better managed when there are more smaller tasks than larger ones.
Get ahead of objections to task estimation. The biggest objections engineers often pose to estimating tasks is that 1) it’s impossible to know how long something will take (so why bother), and 2) they don’t want poor estimates to come back to hurt them later (in the form of being reprimanded for work taking longer than they said they expected it to take). To get past these objections, both leadership and the engineers need to understand and agree upon the purpose of estimation. On leadership’s side, there needs to be no negative repercussions for “bad” estimates. On the engineers’ side, they need to recognize that it is impossible to plan with no estimation. If the potential negatives are removed from the equation, the positives can stand out and be achieved.