User story mapping is a fantastic technique for capturing a broad understanding of a project or effort and breaking it down into actionable milestones or iterations. Often, bigger efforts have complex dependencies that may not be easily understood in isolation. The user story mapping process helps the team to think about the effort with an underlying structure and ultimately decide how to approach the work.
You can use whatever tools work for you—physical whiteboards, Miro, Mural, and even Figma. We mostly use Miro at Sourcegraph. It’s less about the tools and more about the process.
- 60-90 minutes
- Alignment on purpose and goals (5 min)
- Warmup activity (10 min)
- Workshop (35 min)
- Wrapup and next steps (5 min)
Ahead of the workshop, be sure to:
- Have a working space ready to go, with the warmup activity and basic skeleton of a user story map already in place
- Make sure everyone has access to the working space
- Share the workshop invite with the agenda included
Make a copy of this template to shortcut facilitating your own user story mapping workshop:
The workshop process here works well to break the ice, get folks comfortable with the tools, and keep each activity focused enough that it’s never overwhelming.
Every workshop benefits from a clear kickoff to shift everyone’s minds into workshop mode. Take a few minutes to thank everyone for joining, and recap the plan using the agenda. Then, talk about the format in terms of objectives. For example:
In today’s workshop, we’re going to be working together on something called a user story map. If you haven’t done this before, the idea is to collaboratively take a big, somewhat vague and overwhelming effort, and break it down into specific user-centered stories that we can then group and visualize as a series of iterative work efforts where each iteration’s stories are in some way related or necessary first-steps for later stories. We’ll take about ten minutes to do a quick warmup, and then we’ll jump right in. At the end of the workshop, we’ll have the starting point for our user story map that we can then switch to refining asynchronously.
It’s helpful to start workshops with some kind of warmup activity. These are usually meant to break the ice and get people in a generative mindset, but secretly also teach people how to use the tools (or refresh their muscle memory) so that when doing the actual workshop, everyone can focus on the activity, not figuring out the tools.
A warmup that works really well for user story mapping workshops provides sticky notes with everyone’s name on them ready to go. They first need to find that sticky, and drag it to some other space on the canvas. Then, they should replace their name in the note with the name of a household object (like a “toaster”). Next, they should make a copy of the note, and then in that note, add a use for that object. With a 1-minute timer, everyone should then generate as many different possible uses for that object they can think of. Often, this can be pretty entertaining when folks run out of obvious uses and have to start being creative (a toaster can make toast, warm a croissant, kick off a Rube Goldberg machine, warm your feet…).
When the timer’s up, we’ll go around and share which object we chose, and our top 3 uses. In Miro, the facilitator should use this to also “Bring everyone to me” when inviting someone to share.
This warmup can be found ready to go in the user story mapping workshop template.
By the end of the warmup, folks will:
- Be in a more creative mindset
- Know how to move stickies around, edit a sticky, duplicate a sticky, and make a new sticky
- Have experienced being “brought to me” to the facilitator’s view
- Be comfortable going between the workshop space and the video call
While the agenda just lists “Workshop” for this section, there’s three phases:
- Create the backbone (10 minutes)
- Add stories (15 minutes)
- Create iterations (10 minutes)
It’s not always helpful to share the phases ahead of time in the actual agenda.
In this stage, we’re going to co-create the user journey relevant to our work. At the top, there’s a row called “Steps” for this. The facilitator should explain what we’re going to achieve, give an example, and then set a timer for the rest of the phase. It’s helpful to recap the overall structure in this phase.
The first thing we’re going to do is define the user journey as a series of sequential steps. You’ll see there’s a row here for these. Each step represents a distinct moment in the user journey, where there might be a series of specific user stories. Our goal right now is to add all the steps from X to Y (depending on what the journey’s constraints involve). You may find as we go about this that some clear “stages” become apparent—for example, you might realize a bunch of steps related to creating an account all feel like they’re part of the same overall stage of “Signup.” As we go about this, feel free to add more steps, rearrange steps, and do whatever makes sense as we go!
Once there’s a good backbone in place for the user journey, we’re going to add all the related user stories. Each step is a column, and user stories that fall within that step should be added below, in the format “I want to…”
Depending on how detailed you get, it can be helpful to use different colours of stickies for different user types. For example, a single step might have different user stories for “regular” users and “admin” users. “As a user, I want to…” and “As an admin, I want to” are both good ways of framing the stories, and using coloured stickies can shortcut it a bit.
You may find that there’s duplicate stories for different user types. This is not only okay, but fantastic, because it helps us to visualize how the same problem might need to be solved in different ways for different types of users.
At this point, all of the user stories will be piled up in their columns. Our next activity is about breaking these stories into clear iterative groups. It’s helpful to create 3–4 lanes at the beginning of this phase, and label them 1, 2, 3, or X, X+1, X+2, etc. Then, I explain how to approach breaking down the stories into separate steps.
We have a fantastic collection of user stories for each of these steps now. This is really helpful, because we can see all the different things we’ll need to achieve to deliver this effort. But you can also see that there’s a lot of stuff here, and we can’t do it all at once. There’s some things that are dependent on other things, and there’s certain things we really need to do versus would like to do to be able to deliver a great minimum lovable product. For this last step, we’re going to take about ten minutes to look at these user stories and move them up and down into the lanes you see here. Each lane represents one iteration. This’ll help us to figure out when each story should be done, and think about it how it relates to all the other stories across the user journey. I’ve added a few lanes to get us started, but we can add or remove them as we need. If you think of a new story that should be added along the way, please go right ahead!
After the workshop is finished, it’s helpful to have a clear wrapup at the end. It gives the entire workshop a sense of conclusion, and helps everyone understand what will happen next.
And that’s it for our workshop! We now have a great starting point for our user story map: we’ve got a clear journey, a bunch of user stories, and now we have a better sense of how we can go about actually doing this work in an iterative way. As a next step, I’ll be going through and doing any cleanup to make it easy to follow. Then, we can reference this user story map while planning our work.