User Story Mapping: Fixing the Flat Backlog
A prioritized backlog is still a flat list, and flat lists lose the one thing that matters most: the shape of the user's actual journey. Here's Jeff Patton's story map, the slicing discipline that makes it work, and the INVEST and SPIDR tools that keep the stories underneath it honest.

The sprint that convinced me flat backlogs were the problem was, on paper, a successful one. We shipped every committed story: an export function, two settings screens, an admin permissions matrix, a notification preference panel. All real, all requested, all done-done. And at the demo, watching it stitched together, someone asked the question that ruined the afternoon: “so… can a user actually finish signing up yet?” They could not. Four sprints in, we had built a scattering of well-made rooms for a house with no hallway. Every story had been prioritized, estimated, and delivered — and the backlog’s shape had quietly hidden the fact that no end-to-end journey worked at all.
That’s the specific disease Jeff Patton built story mapping to cure, and his diagnosis is blunt: a prioritized list destroys the second dimension. Rank-ordering forces every item into a single file, and single file has no way to represent “these five stories are steps in one journey” or “this story is a luxury version of that one.” In the delivery post of the strategy cascade series I covered how to sequence and deliver work; this post is about the layer that post skipped — how the backlog gets its structure before any sequencing framework touches it.
The map: a backbone and slices
A story map is built in two moves. First, the backbone: the user’s activities laid left to right in narrative order — sign up, set up a project, invite the team, do the core work, share the result. Patton’s framing is that you’re telling the product’s story, and the test of the backbone is that you can read it aloud left to right as a sentence about a user’s day. Under each activity hang the tasks and stories that serve it, more essential at the top, more optional further down.
Second — and this is where the map earns its keep — you slice horizontally. Each slice is a release: a thin line drawn across the entire backbone, taking a little from every activity, so that each slice is a complete, walkable journey at some level of sophistication. The first slice is the walking skeleton — the same instinct as the spike-and-skeleton pattern from the risk post, applied to product scope instead of architecture: sign up crudely, set up minimally, do the core thing once, share it badly. Every slice after that thickens the journey rather than lengthening a corridor to nowhere.
The vignette that made me a convert: rebuilding an onboarding flow, we mapped it and discovered the previous plan — the one from the flat backlog — had scheduled three consecutive sprints inside the first backbone column. Polishing signup to a mirror shine while everything to its right stayed imaginary. The map made the mistake look as absurd as it was; on the list, it had looked like sensible prioritization, because the list can’t show you that depth-first is a choice. We re-sliced, shipped a complete-but-crude journey in the first month, and the feedback from that crude slice reshuffled everything we’d planned to polish — which is the second thing slices buy you: real learning arrives per-journey, not per-feature.
Worked example
The onboarding map, re-sliced
The same backbone read left to right as a user's day, cut into two releases. The first slice is complete but crude end to end; the second thickens it. What used to be three sprints of signup polish is still on the map — it just sits in the backlog band, where its real priority is visible.
Backbone →
Sign up
Set up project
Invite team
Do core work
Share result
MVP
Sign up with an email and password
Create one project with a name
Invite a teammate by email link
Add and edit the first item
Share a read-only link
Release 2
Sign in with Google
Start from a project template
Bulk-invite from a CSV
Comment and assign work
Export to PDF
Backlog (unsliced)
Not in a release yet
Password strength meter and email verification
SSO and domain capture
Custom project fields
Keeping the stories underneath honest
A map is only as good as its cards, and two older disciplines keep the cards from rotting.
INVEST — independent, negotiable, valuable, estimable, small, testable — is Bill Wake’s checklist for a healthy story, and the letter teams fail most is V: cards that are horizontal layers (“build the API,” “build the UI,” “wire them up”) instead of vertical slices of user-visible value. Horizontal stories are how a flat backlog’s disease re-infects a story map — each layer card is real work, none of them is a walkable step of anyone’s journey, and the map degenerates back into a task list arranged under a narrative header.
Story splitting is the companion skill, because the most common objection to vertical slicing is “this story is too big to be vertical.” It almost never is. Mike Cohn’s SPIDR patterns name five ways to split without going horizontal: split off the spike (research the unknown separately), split by path (happy path first, edge cases later), by interface (one platform or input method first), by data (one record type first), by rules (relax the business rules, tighten them in a later story). Every one produces a smaller story that still crosses the whole stack and still delivers something a user could touch. On the teams I’ve run, “which SPIDR letter applies” replaced a recurring forty-minute argument with a five-minute one.
Worth naming what the map doesn’t replace: it structures the delivery backlog, it doesn’t validate that anything on it is worth building — that’s the discovery stack’s job, and the two connect exactly where Teresa Torres’s opportunity tree hands a chosen solution over to delivery. Map the solution you’ve validated; don’t let a beautiful map launder an unvalidated one into looking inevitable. In roadmap terms, the moment an item approaches the Now column is the moment it has earned a map — the roadmap holds problems, and the map is where a problem finally gets a solution shape.
The failure modes
The first is the one every artifact in this series shares: the map goes stale. Built in a two-day workshop, photographed, transcribed into a tool, never touched again — at which point it’s a historical document of what the team believed in March. A story map is a living plan or it’s wall art; the difference is whether sprint planning actually happens at the map, slicing and re-slicing, or happens in a ticket queue while the map decorates a Miro board nobody opens.
The second is subtler: backbone-as-org-chart. Teams under Conway’s Law pressure draw the backbone left to right in the order their teams touch the work — intake, processing, review, output — rather than the order the user experiences it. The map still looks like a map, but it’s a value-stream diagram of the org, and slicing it produces releases shaped like handoffs instead of journeys. The test is always the same: read the backbone aloud as a user’s story. If it only makes sense read as a department’s story, it’s not a user story map yet.
And the third: mapping everything. The map’s power is proportional to how much journey it shows per square meter, and a map that tries to hold every edge case and admin screen becomes exactly the undifferentiated pile it was meant to replace. Map the journeys that matter; leave the long tail in the list format it deserves — and if the list itself has rotted, that cleanup is its own job.
Put it to work
- Map your current release backlog in an hour. Backbone across the top in user-narrative order, current sprint’s stories placed underneath. Two things become visible immediately: columns with no stories (journey steps you’re ignoring) and columns with a tower of them (depth-first polishing in progress). Both were invisible in the list.
- Audit this sprint’s stories for the V. For each story in flight, name the user-visible change it ships. Count the horizontal layers — the “API for,” “backend of,” “part 1 of” stories. That count is how far back toward a flat task list you’ve already slid.
- Practice one SPIDR split. Take your current “too big to slice vertically” story and run all five letters against it. In my experience at least two produce a shippable thinner version — and the exercise of finding them teaches vertical slicing faster than any definition of it.
Further reading
- Jeff Patton, User Story Mapping — the source; the first three chapters are the argument, the rest is facilitation practice.
- Mike Cohn, User Stories Applied — INVEST and the craft of the individual story, from before maps existed to hold them.
- Mike Cohn’s “Five Story-Splitting Techniques” (SPIDR) — the splitting patterns in blog-post form.
- Henrik Kniberg’s “Making sense of MVP” — the skateboard-to-car essay; the same slicing logic as the map, in one drawing everyone’s seen and half of everyone misreads.
Keep reading

Cascading OKRs to Department and Product Without a Status Report
Most OKR cascades are arithmetic disguised as alignment — the company KR divided by headcount becomes every team's KR, and nobody notices that no actual thinking happened between the layers.

Where Discovery Interviews and Marketing Research Are the Same Conversation
A product manager and a marketer sitting in the same customer interview, taking completely different notes, never comparing them — this is the most common waste of customer contact in organizations that can afford neither the waste nor the duplication.

Mining Support Tickets into the Opportunity Solution Tree, Not Just a Bug Queue
A support team closing 200 tickets a week while the product team builds features nobody asked for is not a resource problem — it's a signal-routing problem, and the fix is a two-hour extraction pass that turns the support inbox into the richest discovery input your team has.

What did you take away?
Thoughts, pushback, or a story of your own? Drop a reply below — I read every one.
Comments are powered by Disqus. By posting you agree to theirterms.