Module 4 · Agile Business Analysis
Splitting stories
Break big stories into small, valuable slices with proven splitting patterns, so work finishes inside a sprint and feedback comes sooner.
About 20 minutes
The problem
"Yoruba, Hausa and Igbo language options" sits in the kiosk app's backlog at 8 points. In refinement, the developer says it will take most of a sprint, the tester can't see how to test "language options", and the product owner isn't sure all three languages are needed for the Surulere pilot anyway.
Big stories are where agile teams get into trouble. They're hard to estimate, they don't finish inside a sprint, they hide risk until late, and they delay feedback. In the team's own data, 8-point stories took longer to get through, from start to done, than small ones. Splitting large stories into small, still-valuable slices is one of the most practical skills a BA brings to refinement.
The concept
What a good split looks like
Each slice must still be a user story: valuable to a user on its own, and testable. Splitting by technical layer ("build the database", "build the screen") produces tasks, not stories, and nothing usable until all of them are done.
Splitting patterns
| Pattern | Split by | Kiosk app example |
|---|---|---|
| Workflow steps | the steps in the user's process | "Place an order" → choose items / choose delivery day / confirm |
| Business rules | the rules, one at a time | "Apply discounts" → volume discount / promotional price / minimum order value |
| Data variations | different kinds of data | "Language options" → Yoruba first, then Hausa, then Igbo |
| Happy and unhappy paths | the normal case first, errors later | "Pay by transfer" → successful payment / payment not received / wrong amount |
| Interfaces | one device or channel first | "Pay by card" → on Android first, then web |
| Simple then complex | the simplest version first | "Search products" → by name / by brand and category / with spelling mistakes |
| Spike | a short time-boxed investigation, when the unknowns are too big to split | "Choose SMS provider" |
How small?
Small enough that several fit in one sprint, typically 1 to 3 days of work each. If a story is more than about a quarter of the team's sprint, split it.
Example
"Pay by card" (5 points), split in refinement:
- As a kiosk owner, I want to pay for an order with a debit card, so that I don't need cash on delivery. (happy path, one card type)
- As a kiosk owner, I want to be told clearly when my card payment fails, so that I can try again or choose another way. (unhappy path)
- As a kiosk owner, I want to save my card for next time, so that reordering is faster. (simple then complex)
Story 1 alone is useful in the pilot. Stories 2 and 3 can follow, and story 3 might never be needed if most kiosks keep paying on delivery.
Walkthrough
- Find the stories of 8 points or more in
backlog.csv. - Compare the average cycle time (start to done) of stories of 8 points or more with stories of 3 points or less (the first task below).
- Choose a pattern for each large story and split it. Check that every slice is still valuable and testable.
- Re-estimate the slices. They often add up to more than the original, because splitting reveals work that was hidden.
- Ask the product owner which slices are needed for the pilot. Often the answer is "only the first one".
Practice
Practice
Agile data: for Done stories of 8 points or more, what is the average cycle time in days (done_date − started_date)? One decimal place.
Task
8 minSplit the 8-point story "As a kiosk owner, I want the app in Yoruba, Hausa and Igbo, so that I can use it in my own language" into at least three smaller user stories. Write each in As a … I want … so that … form, and name the splitting pattern you used for each in brackets at the end of the line.
Your work is checked for
- At least three stories in As a … I want … so that … form
- Each names a pattern in brackets
- Splits by language (data variations) for at least one story
- No technical-layer split (database, API, back end, front end)
Check your understanding
Answer every question to check.