In the world of agility, each team has its own patterns, depending on the team history, its members, or its objectives. Every team handles their ceremonies and purpose differently; but some issues tend to appear more frequently than others.
This article aims to tackle issues that agile teams tend to experience during the backlog refinement ceremony.
What is backlog refinement?
Backlog refinement is an agile ceremony with the following goals:
- adding precision, context and use cases to existing stories in the backlog, as well as prioritizing them,
- making sure stories in the backlog, especially stories for the next sprint, are well understood by the team,
- sizing the stories that needs to be.
What could go wrong in a standard backlog refinement?
A standard backlog refinement would potentially look like this:
- Opening: the team starts with an icebreaker, like a game or a short activity at the beginning of the grooming session).
- Presenting new stories to be discussed / sized during the session.
- Discussing and sizing each and every story.
- Making sure that the stories for the next sprint planning are ready and well-understood.
- Closing, small empowering sentence or a simple ROTI (Return On Time Invested).
We have had the chance to experience this ceremony multiple times in our team and found multiple issues that were slowing us down :
- Stories that came along were discovered on the spot, making the discussion more complicated as it required prior reflexion.
- Stories requiring input (the famous “I need to look this up in the code” or “We need to ask this person something”) before being able to size.
- Stories that take the whole duration of the grooming session to be discussed, forcing the team to have multiple meetings before being sprint-ready.
- Stories that are too big and require to be split in order to be sized.
- Stories that lacked a refresh and members didn’t remember what was agreed on in the previous session.
Results of these issues, as we experienced them, were bad sizing and extreme time loss. This resulted sometimes in loss of interest from team members.
Our solution: Asynchronous grooming
We decided we had to do something to tackle these issues, so we took a look around and got inspired by GitLabs’ “Start with an issue”.
We started small: we created a Slack channel specific to grooming, allowing our Product Manager to share stories to the rest of the team. This in turn made it possible for the team to discover these stories before the meeting actually happened.
Once we figured out the benefit of this change, we went a step further, creating discussions around the stories before actually taking them to a grooming session. Using emojis directly in Slack, we decided that a story that does not have the ✅ emoji from each member of the team was not ready to be sized.
From this rule, asynchronous discussions started to emerge. We linked each discussion to each story, allowing us to actually have a track record for each story.
Then came the bot.
We obviously had some issues along with these enhancements, one of those being the fact that people tend to forget about the grooming channel, being absorbed in their daily tasks.
One of our members created a bot that reminded everyone on a daily basis of the stories requiring discussion, as well as stories seeking approval before being taken to grooming sessions.
From all this, not only were we ready to size every story at the grooming session, but we stopped having feedback such as “I don’t remember what we said about this” or “how did we get to this description again?”. Everyone knew why we were have a meeting, and what was the agenda of the ceremony.
After several months of experiencing this new way of grooming, we were able to witness further benefits:
- Grooming sessions went from 2 hours to 20–30 minutes, allowing every member to decide on their agenda for digging into the new stories. This was even more useful when the team was on a full-remote policy, and is still relevant with the Work From Anywhere policy at PayFit.
- Team members were more invested during grooming as each one took time to understand and investigate the story.
- Sizing was more accurate, allowing more predictability on the overall team velocity.
- Developers were more prone to creating stories and proposing them to grooming sessions.
As we follow agile patterns, we want to keep improving on this new pattern. We came up with a few new ideas:
Replacing the ceremony and switch to asynchronous sizing as well
For now, we do not wish to switch to a full asynchronous ceremony as we feel that live discussion and exchange is still too precious and useful to do without.
Automated JIRA x Slack Bot
We currently copy-paste every story created by team members to the Slack channel, and we handle the synchronization between these two tools.
We are going to start working on a tool to automatically post new stories on the channel and remind us of forgotten stories (for instance, those created X months ago and never discussed again).
We also have multiple fake sprints to list stories to refine, ready to be groomed and groomed. We could automatize moving them from one fake sprint to the other.
In conclusion, asynchronous grooming was an amazing enhancement. It was a great way of experiencing continuous improvement while being able to quickly witness how the changes affected the team.
If you want to give it a try, or have any idea to improve what we have been setting up, feel free to ping us on Twitter @PayfitEng, we would be more than happy to discuss it with you!
by Vincent Dufrasnes, software engineer at PayFit.