⚠️ Workshop Pilot — 3rd Session

⚔️ The Slicing
Dojo

The Art of Cutting Impossibly Thin
(and Still Delivering Value)

Nov 20, 2025 · A hands-on workshop for product teams

Quick poll

How many of you have worked on a project where scope kept growing and delivery kept slipping?
What's the biggest feature or epic you're currently working on?

Agenda

What we'll cover today

01📘 Theory: What & Why of SlicingTheory
02🧩 Patterns: 9 ways to slice workPatterns
03Meta-pattern & evaluating splitsMeta
04🗺️ Cynefin Framework: choose strategies by domainDeep Dive
05🛠️ Exercise(s) & debriefsExercise
06✅ Key takeaways & action planDebrief
Theory

What is Slicing?

Slicing is breaking large features into small, valuable increments delivered quickly. It is not cutting randomly — each slice must deliver coherent value.

Each thin vertical slice must be usable, testable, and feedback-ready.

Iterative vs Incremental

Iterative = repeated cycles for learning. Incremental = additive, each step builds on the last. We want both — thin vertical slices that are complete end-to-end.

🍖

The Carpaccio Test

Think carpaccio — thin, but each slice is complete and valuable on its own.

Would you rather eat half-cooked ingredients, or a small complete dish?

Feature
Slice 1
Slice 2
Slice 3
Slice 4
Theory

Vertical vs Horizontal

Horizontal ✗ — Technical completeness

All wheels
All chassis
All engine

Can't go anywhere until everything is finished. No value until all layers land.

Vertical ✓ — Working software incrementally

🛹
Skateboard
🛵
Scooter
🚲
Bicycle
🏍️
Moto
🚗
Car

Transportation value at every stage. Users can actually move forward.

Modern Best Practice = Vertical Slicing

Aligns with Agile · Reduces risk · Enables fast feedback · Allows course correction · Keeps teams unblocked

"Slice vertically to deliver value continuously, not horizontally to deliver everything eventually."

Theory

Why Slicing Well Matters

⚡ Reduce Lead Time

Smaller slices move faster through your system. Less WIP, shorter queues, faster time to production.

📦 Deliver Value Incrementally

Not in big batches. Keep It Simple, Ship It! Large batches = high WIP = slow flow.

🎓 Learn Faster

Early feedback and validation from real users — not assumptions. Every slice is a hypothesis you're testing.

🛡️ Reduce Risk

Ship manageable pieces. If something goes wrong, the blast radius is small. Fail small, learn fast.

🌊 Improve Flow & Maintain Momentum

Teams stay productive and unblocked. Continuous delivery keeps everyone moving — and motivated.

Theory

Growing vs Dividing

✗ DIVIDING ✓ GROWING
Start with the full scope Start with the smallest working version
Break it into smaller pieces Each increment is complete end-to-end
Each piece is a fragment — not valuable alone Each increment delivers value AND feedback
Value only delivered when ALL pieces are done You learn what the next increment should be
Feels like progress. Isn't. The solution grows toward completeness.

Dividing = Reductionism / Divide and conquer

TIP: Before You Slice

Check INVEST First

Before slicing, make sure the base story is worth slicing. The most common failure point is Value.

I

Independent

Deliverable without another slice

N

Negotiable

Details can still be discussed

V

Valuable ⚠️

Most common failure point

E

Estimable

Team can size it

S

Small

Fits comfortably in a sprint

T

Testable

Has clear acceptance criteria

If your base story lacks value, slicing it smaller won't magically create value — you'll just have small, worthless pieces. Garbage in, garbage out. Always ask: "What value does this deliver to users or the business?" If you can't answer clearly, reframe the story first.

Framework

How to Split a User Story

Three steps that apply to any story, any size.

1
Prepare
Check the story satisfies INVEST — especially Valuable. If it isn't a real story yet, combine it with other pieces first.
2
Apply Patterns
Use one or more of the 9 slicing patterns to find the thinnest valuable split. It may take a few tries.
3
Evaluate
Pick the split that lets you defer or discard the most. Prefer equally-sized slices.

If the split feels forced, go back to Step 2 and try a different pattern.

Step 1

Prepare the Input Story

Before slicing, make sure the story is actually sliceable.

Check INVEST — especially Valuable

"Unsplittable" stories are usually tasks or components masquerading as stories. If you start with something that isn't an increment of value, there's no way to slice it smaller and get an increment of value.

If not Valuable → combine first

Combine the non-story with the other pieces it belongs to — together they represent an increment of value. Then slice that.

If too big → proceed to Step 2

Once you have a Valuable starting point, move to the 9 patterns and find the right split.

Common "unsplittable" red flags

⚠️
"Set up the database schema"
⚠️
"Create the API endpoints"
⚠️
"Write unit tests for X"
⚠️
"Implement the data model"
⚠️
"Migrate to the new architecture"

None of these are stories. They're tasks hiding inside a bigger story that hasn't been written yet.

Patterns

9 Slicing Patterns

Different views of possibly the same problem and solution space — tools, not rules

🔄
Workflow Steps
Split by steps in a flow
✏️
CRUD Operations
Create / Read / Update / Delete
📋
Business Rules
Simple rule first, layer complexity
📊
Data Variations
One format / type at a time
📝
Data Entry Methods
Simplest input first
Defer Performance
Correct first, fast later
🎯
Simple / Complex
Happy path, then edge cases
🏋️
Major Effort
Sub-tasks that each deliver value
🔬
Spike
Time-boxed investigation
Pattern 1 / 9

🔄 Workflow Steps

Build simple end-to-end first, then add middle steps. Begin with the end — get something all the way through the workflow, even if simplified.

"As a content manager, I can publish a news story to the website."
❌ Wrong
Build step-by-step from start to end (nothing works until all steps are done)
✅ 1
Publish directly to website (simple end-to-end — it works!)
✅ 2
Add editor review step
✅ 3
Add legal review step
✅ 4
Add staging site preview

Key principle: Begin with the end. Then add middle steps that enrich the flow.

Pattern 2 / 9

✏️ Operations (CRUD)

Watch for the word "manage" — it almost always hides multiple operations.

"As a user, I can manage my account."

Split into independent stories:

→ 1
Sign up for an account
→ 2
Edit account settings
→ 3
Cancel my account

💡 "Manage my account" hides Create, Read, Update, Delete. Each can be its own story. Ask: which operation delivers most value first?

Pattern 3 / 9

📋 Business Rule Variations

When a story has multiple ways to accomplish the same goal using different rules, split by those rules. Build one rule completely, then add others.

"As a user, I can search for flights with flexible dates."
→ 1
Search as 'n days between x and y'
→ 2
Search as 'a weekend in December'
→ 3
Search as '± n days of x and y'

Each variation is a complete implementation. Start with the most common or most valuable rule. Each is independently valuable and testable.

Pattern 4 / 9

📊 Variations in Data

Build for today's simplest data. Don't build for hypothetical future complexity — evolve when you actually need it. YAGNI.

"As a user, I can search for transportation providers by trip origin and destination."
→ 1
Search by postal code (simplest)
→ 2
Expand to counties, cities, towns, or neighbourhoods
→ 3
Different areas for origin vs destination, polygons

💡 Hardcoded → simple → complex. Build simplest first; add complexity just-in-time. YAGNI = You Aren't Gonna Need It.

Pattern 5 / 9

📝 Data Entry Methods

When UI complexity exceeds functional complexity. Separate "make it work" from "make it pretty."

"As a user, I can search for flights between two destinations."
→ 1
Using simple date input fields (get the search working)
→ 2
Add fancy calendar UI component
→ 3
Add fancy animations and transitions

Note: Sometimes the fancy UI IS the value — then don't split this way. But validate the concept with simple input first.

Pattern 6 / 9

🏋️ Major Effort

When most effort is in the first implementation. Makes dependencies clear without inflated estimates — the infrastructure for the first item is the hard part.

"As a user, I can pay with Credit Card."
→ 1
Pay with one card type (infrastructure is built here — this is the big one)
→ 2
Pay with VISA
→ 3
Pay with MasterCard
→ 4
Pay with American Express

💡 Don't estimate all pieces the same — the first is bigger. Additional card types are incremental once the infrastructure exists.

Pattern 7 / 9

🎯 Simple / Complex

When a story keeps growing in planning ("what about x?") — STOP. Ask: "What's the simplest version of this?" Find the core and protect it from complexity creep.

"Search for flights" (keeps growing in planning...)
CORE
Keep core simple: basic flight search
→ #1
With 1 stop MAX
→ #2
Including nearby airports
→ #3
Using flexible dates

Empowerment: You can say "that's a separate story" — and mean it.

Pattern 8 / 9

⚡ Defer Performance

Make it work, then make it fast. The slow version teaches you about search logic, user behaviour, and edge cases. Then optimize.

"Search for flights" (with instant results)
→ 1
Slow version — with 'searching…' animation (just make it work)
→ 2
Fast version — ≤ 5 seconds, strict SLO

⚠️ CRITICAL: Don't mark stories 'done' if performance is actually in scope — track it explicitly. Applies to all non-functional requirements: performance, security, scale. Know when NOT to use this: payment processing must be secure from day one.

Pattern 9 / 9

🔬 Break Out a Spike

Last resort — use only when implementation is genuinely unknown. Do just enough investigation to answer specific questions, then STOP.

"As a user, I can pay by credit card."
🔬 Spike
Investigate credit card processing (time-boxed: 2–3 days max)
🛠️ Story
Implement credit card processing (using what we learned)

⏱️

Timebox

2–3 days max. Hard stop.

AC = Questions

Acceptance criteria = the specific questions to answer.

📄

Output = Knowledge

A decision or recommendation — not production code.

Remember: You probably know enough to build something — build it, learn from it. Ask: what's the smallest thing we could BUILD to learn?

Meta

🧠 Meta-Pattern

Find Complexity & Reduce Variations — your Swiss Army knife when you don't know which pattern to apply.

1
Find the core complexity
What could surprise you? What part of this is genuinely uncertain or hard? Go there first.
2
Identify the variations
Rules, roles, interfaces, data types, entities — list everything that creates complexity and variation in this story.
3
Reduce all variations to one
Pick the simplest instance of each variation. One rule, one role, one interface, one data type.
4
Find a single, complete slice through the complex part
This is your first story. It goes straight for the core difficulty — and teaches you the most.

The specific patterns are just applications of this meta-pattern. Spend time here — work through a real example from your backlog.

Evaluating

Evaluating Your Split

You've applied a pattern and have candidate slices. Now choose the best split from the options available.

1
Choose the split that lets you deprioritize or throw away work
Apply the 80/20 principle: most value comes from a small share of the functionality. A good split makes the low-value parts visible — so you can discard them. If every slice feels essential, the split is hiding waste.
2
Prefer more equally-sized stories
4 × 2-size > 1 × 5-point + 1 × 3-point. Equal sizing gives Product maximum freedom to prioritize each story separately. Bad split: all pieces required, no optionality.
3
Give Product more freedom to prioritize
A good split is one where the Product Owner can genuinely say "we don't need slice 3 this sprint" — or ever. If they can't, you haven't found the right split yet.

💡 It may take a few tries. Experiment — you'll know the right split when it reveals stories you can safely defer or throw away entirely.

More Patterns

Other Common Slicing Patterns

These don't always get a dedicated slide — but they're powerful in the right context.

👤
By user journey steps — login → browse → checkout. Each step in the journey is a candidate slice.
👥
By user roles — admin → user → guest. Higher-trust roles often need the feature first and most urgently.
By happy path → edge cases — ship what works for 80% first. Edge cases rarely need to ship together.
💻
By platform / channel — web → mobile → API. Each interface serves a different audience and can ship independently.
📊
By data complexity — hardcoded → simple → full data integration. Don't build for hypothetical future complexity.
Boundaries

When NOT to Slice

⚠️ Not every story needs to be sliced. Slicing has real overhead — consider the cost.

1. Consider the cost of slicing vs batching

Every slice carries ceremony: refinement, planning, review, retro. Sometimes coordination overhead exceeds benefits. If a story is already small (1–2 days) and well understood, don't slice just to slice.

2. Assess the value added by slicing in this context

For tightly coupled work where slices genuinely can't ship independently, batch delivery may be more efficient. True MVPs sometimes need to be complete. Ask: what do we actually gain by slicing this?

3. Weigh stakeholder concerns and objections

"We already committed to the full scope" → Slicing is risk reduction, not retreat.  |  "It's slower overall" → The first slice is slower. The second costs much less.  |  "Users won't understand" → The slice is complete — it just does less.

Evaluation

How to evaluate a slice

Run each candidate slice through this checklist before accepting it.

Does it deliver end-to-end value? A user can experience the outcome — not just a technical artefact.
Can it be tested independently? You can write acceptance criteria without referencing another in-progress slice.
Could it go to production alone? Even if you chose not to — it could. That's the standard.
Is it INVEST-compliant? Independent, Negotiable, Valuable, Estimable, Small, Testable.
Does the whole team understand it? If someone asks "but what exactly are we building?", it's not ready.
Is it smaller than a sprint? Anything that takes longer than 2 weeks needs another pass.

If any answer is 'no', keep slicing.

Anti-Patterns

When slicing goes wrong

Know the failure modes — they're surprisingly common.

⚠️ Splitting by technical layer
UI ticket, API ticket, DB ticket — this is horizontal, not vertical. Nobody can demo it. No user value until all three land. This is just task decomposition wearing a story hat.
⚠️ Slices with invisible value
"Set up the data model" is not a story. There's nothing a user can see, touch, or benefit from. If you can't describe the user value, it's a task — not a slice.
⚠️ Over-slicing
30 slices for a simple feature creates more overhead than value. Every story has ceremony: refinement, planning, review, retro. Find the right granularity — typically 3–7 slices per significant feature.
Break

☕ Break Time

10 minutes

Stretch, hydrate, come back ready for the dojo floor.

While you're up — think of one story from your current backlog that might be too big. We'll need it for round 2. 👊

Exercise 1 / 3

🧮 The Backulator Challenge

⏱ 90 minutes
Slice a Back Market calculator app — the Backulator — into the thinnest possible vertical slices. Each slice must be independently deployable and add genuine value to a real user.
Step 1
Teams of 3–4. List all possible slices — aim for 10 or more ideas
Step 2
Order them: what ships first? What could you defer or drop entirely?
Step 3
Apply at least 2 different patterns — name which ones you used
Step 4
3-min demo back to the group — walk your slice list, explain the order

Rules

✓ Each slice must be deployable
✓ Each slice must add value a user can see
✗ No "setup" or "infrastructure" slices
✗ No horizontal splits
🏆 Thinnest valid first slice wins

Good first slice test: Could a user open it, use it, and get something from it — even if it does very little?

Exercise 2 / 3

🥋 Dojo Round 2: Your Own Story

⏱ 20 minutes
Take a real story from your current backlog. If you don't have one, use: "As a seller, I can manage my product listings."
Step 1
Identify which pattern(s) apply to your story
Step 2
Create 3–5 slices using the pattern(s) you identified
Step 3
Validate each slice against INVEST
Step 4
Mark the MVP slice — which ships first and why?

Bonus: If your team disagrees on which slice is the MVP — that's the most valuable conversation of the day.

Exercise 3 / 3

🥋 Dojo Round 3: Slicing Negotiation

⏱ 30 minutes

Role-play between PM / EM / Design. Practise responding to the most common objections to slicing — the ones that actually happen in refinement.

Scenario A
"Users won't understand an incomplete feature — we need the full experience before we ship anything."
Scenario B
"This doesn't look good incomplete. Design needs all components built together for it to make visual sense."
Scenario C
"We already committed to the full scope. Slicing it now will confuse stakeholders and look like we're going backwards."
Scenario D
"Slicing just creates more overhead. It's actually faster to ship the whole thing at once."
Rules
2 people per round (PM role / EM role). 5 min per scenario, then swap. Share one effective response back to the group.
Deep Dive

Cynefin & Story Splitting

Dave Snowden's Cynefin model tells us which splitting strategy to use — before we pick a pattern.

🟢 Obvious

You've done this before. Just build it. If it's too big, find all the stories and do the most valuable ones first.

🔵 Complicated

Knowable with analysis. Find all the stories and do the most valuable and/or most risky ones first.

🟠 Complex ← most product work

Don't enumerate all the stories. Find one or two that provide value and teach you something. Build those. Use what you learn to find the rest.

🔴 Chaotic

Put out the fire. Splitting stories probably isn't important right now — act first, reflect later.

Disordered: You don't know which domain you're in. Identify the domain before splitting — or you'll apply the wrong strategy entirely.

Deep Dive

Complex vs Complicated

Most product development is complex — not complicated. This distinction matters more than any slicing pattern.

Complicated — sense → analyse → respond

Cause and effect are knowable in advance. Analyse, plan, execute. Traditional project management works here. Engineering problems governed by physical laws.

Complex — probe → sense → respond

Cause and effect are only visible in retrospect. The problem changes as you solve it. You learn about it by doing it. Probe first — enumerate later.

The Retrospective Coherence Trap

Once you know something, it feels like you should have known it all along. This tricks teams into saying "next time we should plan better" — but you couldn't have. The learning only emerged from doing the work.

In complex work: probe more, plan less. Start with the slice that goes straight for the core complexity.
Unsure if complex or complicated? Ask: "what part of this could surprise me?" — go there first.
Debrief

Debrief

Open discussion — go round the room, one answer per group per question.

1
"Which pattern did you find yourself reaching for most?"
Was it the one you expected? Did any pattern surprise you?
2
"What made slicing hard? What surprised you?"
Where did disagreements come up? What assumptions were hiding in plain sight?
3
"How does this change how you'd write stories tomorrow?"
Concretely — what would be different in your next refinement session?
4
"Which negotiation objection was hardest to answer? What worked?"
What framing or argument actually landed? What felt rehearsed and weak?
5
"What's one thing you'll try differently next sprint?"
One specific, actionable commitment. Not "slice better" — but what, exactly?
Takeaways

Key Takeaways

Slicing is vertical — every slice touches all layers and delivers standalone value. Horizontal splits are tasks, not stories.
The 9 patterns give you a toolkit — most stories fit one or more. When stuck, scan the list and ask which pattern unlocks the story.
Start with the thinnest slice that is genuinely valuable — not the thinnest slice that is technically possible. Value is the constraint.
INVEST is your quality check — run every candidate slice through it before committing. If it fails, keep slicing.
Over time, slicing becomes the way you think — not a technique you apply after. The goal is to never write a big story again.
Thank You

⚔️ Keep
Slicing

Small, vertical, valuable.

← → · T pause · R reset · ? help
--:-- | total --:--
Keyboard Shortcuts
Navigate← →
Pause / Resume timerT
Reset timersR
This panel?