A guide to backlog refinement for agile scrum teams
Tags: agile, product, scrum, groomin
Published: 2022-03-09 16:52:10

## What is backlog grooming or backlog refinement?

Backlog refinement, also referred to as backlog grooming, is the practice of clarifying and creating a shared understanding of both the business requirements as well as implementation details of a piece of software ahead of its implementation. In this article, we'll first clarify some of the key terminology and motives behind backlog grooming. Afterwards, we'll provide some practical tips that can help agile teams run better refinement meetings.

### What's a product backlog?

Before clarifying why backlog refinement is important, let's define what needs refinement. A product backlog is a prioritised list of idea's or tasks that an agile team can choose to execute or implement with the goal of improving their software. Most common types of such improvement are the following:

- **User story:** describes a new feature from the eyes of the end user
- **Bug report:** describes how an existing feature did not work as expected
- **Spike:** describes something the team wants to learn more about or experiment with before making a bigger implementation decision.
- **Task:**  anything else, from running a post-deployment script to writing feature documentation.

Of course, it's not a coincidence that those are also the most common issue types in Jira.

As said above, a product backlog is a prioritised list where the highest priority items are positioned at the top. This makes it easy for the agile team to decide what to implement next. Backlog items can derive their priority from multiple sources for example a bug that breaks the software for many users should probably be fixed as soon as possible. At the same time, a spike blocking an important implementation decision about a feature with a tight deadline could be equally important.

Next, let's define what exactly is backlog refinement and why it's important.

### Why do agile teams refine their backlogs?

As briefly described in the introduction, backlog grooming is a practice that serves two main purposes in agile teams. First and foremost, it helps the team clarify the exact requirements of the backlog items. Clarifying can mean multiple things. It could be the product owner explaining the business reason behind a new feature, but it can also be a back-end engineer asking his colleagues about how to technically implement the requirements. The former is useful, because it gives the whole team an opportunity to contribute to how the product evolves to achieve its business goals. The latter is valuable because it gives the whole team a chance to contribute to implementation trade-offs. 

Given the wide range of questions that might come up, when is a ticket clear enough? To answer this question, it's important to know that before planning a backlog item into a sprint, it needs an estimation. While some agile teams split the practice of refinement and estimation in separate rituals, the goal of refinement should be for the team to reliably estimate the time/effort/complexity of implementing the backlog item. Because of this, personally, I don't believe it makes sense to separate grooming and estimation, as big differences in estimation of the same item across the team often spark the most useful discussions to clarify implementation strategy.
It's common that during backlog grooming, some questions come up that cannot be answered right away and therefore it can take multiple refinement iterations before the item can be estimated.

The second purpose of backlog grooming is to ensure the clarified requirements are shared amongst all members of the team. This is important for the team to be resilient against members leaving, regardless if temporary or forever, by having other team members take over their tasks.

## Practical tips for running a backlog grooming meeting

### Tip 1: Prepare for the meeting

**Product Owner**

As a product owner, to prepare for the backlog refinement meeting, do the following things:

- Ensure the tickets you want to discuss contain all details you have at the moment. Don't hesitate to be explicit about currently still open questions either.
- Make a list of items that you want to discuss with the team and put them in order of importance. 
- Share the list of tickets that you want to discuss with the team a day or two in advance.

**Engineers and other team members**

As an engineer or other team member, to prepare for the backlog refinement meeting, do the following things:

- Go through the list of tickets shared by the product owner ahead of the meeting, think about how you'd go about the implementation and write any questions that come up in the comments.

### Tip 2: Be aware of getting stuck in the rabbit hole

As discussed before, many questions can come up while refining backlog items and it might take multiple iterations for the team to feel confident about estimating an item reliably. Therefore, the discussion around one item can take over the whole meeting without even leading to an estimation. To prevent this, during the meeting, keep an eye on both the agenda with items for refinement as well as the time in order to time box certain discussions. When cutting a discussion short, make sure to agree on next steps. This could be a list of questions that need to be answered before discussing further, or a new spike item to be taken into the next sprint to evaluate different implementation strategies.

### Tip 3: Update the ticket descriptions during the meeting

While the team discusses questions and implementation options, make sure to update the ticket description with open questions that still need to be answered, as well as decisions commonly taken around the implementation strategy.

### Tip 4: Promote discussion during the meeting

Where the refinement of certain backlog items might lead the team to get stuck in the rabbit hole, other items might spark almost no reaction or discussion. This might be justified for simple improvement, however, lead to poor estimates and low quality implementation. To avoid this, the product owner or tech lead of the team can ask specific implementation questions to the team members and stimulate discussion by asking if others agree with that opinion. They could also themselves suggest options for the implementation strategy of a backlog item and ask the team for their preference.