Ship a vertical slice by cutting each story so it crosses every layer — UI, logic, data, and any integration — for one narrow scenario, rather than building an entire layer (all UI, or all backend) before anything works end to end. A thin vertical slice is small, but it is a complete, demoable path through the system, which is what actually retires risk.
Quick answer: Split stories so each one delivers a complete, if narrow, path through every layer of the system — not a complete layer across every feature.
SPIDRand thehamburger methodare the two most reliable tools for finding where a workflow can be narrowed instead of flattened.
Why Horizontal Slicing Feels Safe and Isn't
Horizontal slicing — building the whole data layer, then the whole API, then the whole UI — feels safe because each phase produces a familiar, complete-looking deliverable. It's risky because nothing is demoable, testable, or sellable until the last phase, which is exactly when integration problems are most expensive to fix.
Teams default to horizontal slicing for structural reasons, not because anyone decided integration risk was acceptable:
- Specialization pulls work apart. A backend engineer wants a backend-shaped ticket; a frontend engineer wants a frontend-shaped ticket. Splitting by layer matches how the team is staffed, not how value is delivered.
- Sprint planning rewards visible completion. "API done" and "UI done" both look like progress on a burndown chart, even though neither one is usable by a customer.
- Nobody owns the seam. When the backend and frontend are built in separate sprints by separate people, integration becomes a phase instead of a constant — and that phase absorbs whatever went unnoticed during isolated development.
The cost shows up late, which is precisely why it's so expensive. The Standish Group's long-running CHAOS research on software project outcomes has repeatedly found that projects delivered in small increments succeed at meaningfully higher rates than large, monolithic efforts — the direction is consistent even as exact figures shift release to release. Google's DORA research program reaches a related conclusion from a different angle: teams that ship in smaller batches measure shorter lead times and lower change-failure rates, because each change carries less undiscovered interaction with the rest of the system.
Vertical slicing doesn't eliminate integration work. It moves the moment of integration from "the end of the project" to "the end of every story" — small, cheap, and frequent instead of large, expensive, and rare. That shift is also what makes a delivery cadence trustworthy enough to plan against, which is the backbone of any agile delivery rhythm your stakeholders can actually rely on.
| Horizontal slicing (by layer) | Vertical slicing (by scenario) | |
|---|---|---|
| First demoable output | End of the layer-building phase (often weeks) | End of the first story (days) |
| Integration risk | Deferred and concentrated at the end | Surfaced early, in small doses |
| What "done" means mid-sprint | A layer is complete but unusable alone | A narrow scenario works end to end |
| Feedback loop | Delayed until a full layer stack exists | Immediate — real users can react to real behavior |
| Failure visibility | Hidden until integration | Visible story by story |
The Vertical Slice Test: What "Thin" Actually Means
A story passes the vertical slice test when it can be demoed to a real user, deployed on its own, and produces a visible business or user outcome — even if that outcome only covers one narrow path. "Thin" describes scope, not layers: you're narrowing the scenario, not skipping a tier of the architecture.
This is the same idea Alistair Cockburn named the walking skeleton in his work on Crystal methodologies: the smallest possible end-to-end implementation that connects every major architectural piece, even if each piece does almost nothing yet.
A walking skeleton is trivial in what it does and complete in how it's wired together — a checkout walking skeleton might charge one hardcoded amount to one test card, proving the whole path is connected before anyone builds out the details.
Bill Wake's INVEST criteria (Independent, Negotiable, Valuable, Estimable, Small, Testable) is a useful filter here, but two letters matter most for vertical slicing specifically:
- Valuable — the slice must produce an outcome someone outside the team cares about, not an internal milestone like "schema migrated."
- Testable — if QA can't exercise the slice as a black box, it isn't actually a complete path through the system yet.
Deciding how thin a slice can go while staying valuable is a discovery question as much as a delivery one — it depends on what you've already validated about the user's actual need. Teams that run dual-track discovery alongside delivery tend to slice thinner with more confidence, because they already know which single path matters most before they touch a backlog.
SPIDR: Five Patterns for Cutting a Story Vertically
SPIDR is a story-splitting technique from Mike Cohn that gives five concrete angles for narrowing an oversized story without dropping a layer: Spikes, Paths, Interfaces, Data, and Rules. Running a stuck story through these five lenses in order usually finds a workable cut before the team resorts to guessing.
Cohn, founder of Mountain Goat Software and author of User Stories Applied, developed SPIDR specifically because "just make it smaller" is advice every team has heard and few can execute without a checklist.
| Pattern | What you narrow | Example split |
|---|---|---|
| Spikes | Unknowns, before committing to a build estimate | Timebox a research spike on the payment gateway's tokenization API before writing the checkout story |
| Paths | Which route through the workflow ships first | Ship the "happy path" checkout before "apply discount code" or "split shipment" paths |
| Interfaces | Which surface the user or system touches | Ship web checkout before the mobile app checkout, or the UI before the admin API |
| Data | Which subset of data or record types is supported | Ship checkout for physical goods before digital goods, which carry different tax and fulfillment rules |
| Rules | Which business rules apply first | Ship checkout without promotional pricing rules, then add the rules engine as a follow-up slice |
A few practical notes on using SPIDR well:
- Start with Spikes only when there's a genuine unknown. Using a spike to avoid estimating is a smell, not a technique — reserve it for real technical uncertainty.
- Paths and Rules do the most work in practice. Most "too big" stories are hiding multiple paths or multiple business rules bundled into one description.
- Interfaces and Data slices still need the full stack. Slicing by interface means the web version is a complete vertical slice on its own, not a UI-only ticket waiting for a backend.
Oversized stories aren't just a scheduling problem — they distort measurement too. A lot of the critique of velocity as a value proxy starts with teams estimating stories that were never actually one unit of value to begin with, because nobody ran them through a splitting pass first.
The Hamburger Method: Slicing by Layer Discipline, Not Feature Discipline
The hamburger method is a visual training device used in many story-splitting workshops to make the vertical-versus-horizontal distinction physical: draw a story as a hamburger, with a bun, lettuce, patty, and cheese standing in for UI, business logic, validation rules, and data. A correctly sliced story is a thin wedge cut straight down through the burger — every ingredient present, just less of each. A horizontally sliced story is a plate of just buns, or just patties.
The exercise is deliberately low-tech because the failure mode it targets is conceptual, not technical. Teams that intellectually understand vertical slicing still default to "let's do the backend story this sprint and the frontend story next sprint" under deadline pressure, because it's the path of least resistance for how work gets assigned. Drawing the burger and asking "does this story include a bite of every layer?" catches that regression before it reaches the sprint board.
Combine it with SPIDR rather than choosing one over the other:
SPIDRtells you where to cut — which path, which rule, which interface, which data subset.- The hamburger check tells you whether the cut is still vertical — whether the resulting story actually touches UI, logic, and data, or only one of them.
A SPIDR-split story that only touches the UI has failed the hamburger test regardless of how well-scoped its business description sounds.
Deciding who runs this exercise is worth being explicit about. In most teams the product owner drives the actual story split during backlog refinement, while the product manager sets the outcome the split needs to protect — a distinction worth revisiting if your team blurs PM and PO role boundaries enough that nobody is clearly accountable for either job.
Worked Example: Slicing a Checkout Flow by Payment Type
The clearest way to see vertical slicing in practice is to watch it fail first. A team building checkout for an e-commerce product often starts by scoping "Payments" as one epic and splitting it by technical component: build the gateway integration, then the checkout UI, then the confirmation flow.
Nothing is shippable until all three pieces are done, and the riskiest part — how the gateway actually behaves under real card data, declines, and retries — is discovered last, right before launch, when there's no slack left to absorb surprises.
A vertical slice by payment type inverts that order. Instead of building the whole payment layer before any checkout works, each slice ships one complete checkout path for one payment method, then the next slice adds another — using SPIDR's Data and Rules patterns together, since payment method is both a data variant and a set of distinct business rules (fraud checks, settlement timing, refund handling).
| Slice | Scope | Layers touched | Shippable on its own? |
|---|---|---|---|
| 1. Credit card checkout | Cart → shipping → card payment → confirmation | UI, order logic, gateway integration, data model | Yes — full revenue path |
| 2. Add PayPal | Same flow, PayPal as a second payment option | Same layers, extended payment-method branch | Yes — no rework of slice 1 |
| 3. Add Apple Pay / Google Pay | Same flow, wallet-based payment | Same layers, new authorization handshake | Yes |
| 4. Add gift card / store credit | Same flow, stored-value redemption | Same layers, new balance-check rule | Yes |
| 5. Add buy-now-pay-later | Same flow, third-party credit decision | Same layers, new external decision call | Yes |
Each row is a complete walking skeleton for one payment method, not a fragment of the whole payments system. That has a direct product consequence: after slice 1 ships, the team already has a real, revenue-generating checkout in production and can watch actual conversion and drop-off before investing in a second payment method at all.
It also reframes the decision of which payment method goes first as a prioritization question, not a technical one. Different payment types often serve genuinely different customer segments and different jobs the customer is hiring checkout to do — a buyer reaching for buy-now-pay-later is often solving a different problem than one paying by corporate card, and that difference should drive slice order, not engineering convenience.
Making the Split Visible Before You Write a Single Story
A vertical slice is easiest to agree on when the team can see it, not just describe it in a ticket. Before the checkout example above becomes five backlog stories, it helps to sketch the thinnest end-to-end path as a low-fidelity flow — cart, shipping, one payment method, confirmation — so the team can point at the picture and agree on what "slice 1" excludes, not just what it includes.
This is the exact gap Prodinja's Wireframing lo-fi composer is designed to close: it lets you sketch a flow's screens in sequence and mark the thinnest path through them, which turns "vertical slice" from an abstract splitting rule into a concrete artifact you can hand to a team before a single story is written. Seeing the whole path — even sketched roughly — makes it easier to spot when a proposed "slice" quietly skips a layer, or when a payment method's flow secretly diverges from the reference happy path assumed in slice 1.
Sketching the flow first also surfaces where checkout sits inside a longer sequence of customer decisions, since a payment step rarely stands alone — mapping it against a broader customer journey often reveals that the moment right before payment carries most of the emotional risk, which can change which slice a team chooses to ship first.
Key Takeaways
- Vertical slices cross every layer for a narrow scenario; horizontal slices complete one layer for every scenario — only the first produces something demoable and testable early.
SPIDR(Spikes, Paths, Interfaces, Data, Rules) gives five concrete angles for narrowing a story without dropping a layer — Paths and Rules do the most work in practice.- The
hamburger methodis a visual check, not a splitting technique on its own: it confirms aSPIDR-split story still touches UI, logic, and data, rather than just one of them. - Alistair Cockburn's
walking skeletonis the smallest version of this idea — a trivial but fully connected path through the whole system, built before any layer is fleshed out. - In the checkout example, slicing by payment type ships a complete, revenue-generating flow after the very first story, instead of after the entire payments epic.
- Sketching the thinnest end-to-end flow before writing stories — whether on a whiteboard or in a tool like Prodinja's Wireframing composer — makes a vertical split concrete enough for a team to agree on.
- Oversized, horizontally-cut stories are a major hidden cause of unreliable velocity, since a "done" layer story rarely maps to one unit of delivered value.
Frequently Asked Questions
What is the difference between vertical slicing and horizontal slicing in agile?
Vertical slicing cuts a story so it crosses every architectural layer (UI, logic, data) for one narrow scenario, producing something demoable immediately. Horizontal slicing completes one entire layer — all of the backend, or all of the UI — across every scenario before anything is usable end to end.
What does SPIDR stand for in story splitting?
SPIDR stands for Spikes, Paths, Interfaces, Data, and Rules — five patterns from Mike Cohn for narrowing an oversized story. Each pattern narrows a different dimension of scope while keeping the resulting story a complete path through the system, rather than dropping a layer entirely.
How small should a vertical slice actually be?
A vertical slice should be as small as it can be while still being demoable, testable as a black box, and valuable to someone outside the team — often a single path, payment type, or business rule. If a story only produces an internal milestone like "database migrated," it hasn't passed the vertical slice test yet.
Is the hamburger method the same thing as SPIDR?
No — they solve different problems. SPIDR tells you where to cut a story (which path, rule, interface, or data subset), while the hamburger method is a visual check confirming the resulting slice still touches every layer instead of just one.
Can every story be sliced vertically, even infrastructure work?
Most product-facing stories can be sliced vertically once you find the right dimension with SPIDR, but some foundational infrastructure genuinely has no observable behavior until multiple pieces exist together. In those cases, a walking skeleton — the smallest fully connected version of the system — is the closer target, with visible product stories layered on top of it immediately after.