Story Splitting Techniques | Smaller Deliverables
Break large stories into deliverable increments. GitScrum tracks split stories with parent-child relationships and progress rollups for visibility.
9 min read
Large stories create risk and delay feedback. GitScrum helps teams track split stories with parent-child relationships and progress rollups.
Why Split Stories
The Problem with Large Stories
LARGE STORY PROBLEMS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β LARGE STORY (13 points): β
β "As a user, I can manage my account settings" β
β β
β WHAT HAPPENS: β
β β
β Day 1: "Working on it" β
β Day 2: "Still working on it" β
β Day 3: "Making progress" β
β Day 4: "Almost done" β
β Day 5: "90% done" β
β Day 6: "Just finishing up" β
β Day 7: "Found an issue" β
β Day 8: "Actually 50% done" β
β Day 9-15: More of the same... β
β β
β PROBLEMS: β
β β
β β No feedback until done β
β β "90% done" for days β
β β Hard to estimate accurately β
β β Risk hidden until too late β
β β Blocks other work β
β β Can't ship partial value β
β β Sprint commitment unclear β
β β
β THE ALTERNATIVE: β
β β
β Split into 5 stories (2-3 points each) β
β Ship 1-2 per day β
β Get feedback continuously β
β Adapt based on learning β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Benefits of Small Stories
SMALL STORY BENEFITS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β PREDICTABLE FLOW: β
β β’ Stories complete daily β
β β’ Burndown is smooth β
β β’ Progress visible β
β β
β BETTER ESTIMATES: β
β β’ Less unknown in smaller scope β
β β’ Easier to compare β
β β’ More accurate velocity β
β β
β FASTER FEEDBACK: β
β β’ Ship to users sooner β
β β’ Catch issues early β
β β’ Course correct quickly β
β β
β LOWER RISK: β
β β’ Less rework if wrong β
β β’ Easier to pivot β
β β’ Fewer integration issues β
β β
β TEAM BENEFITS: β
β β’ More satisfying (completion!) β
β β’ Easier collaboration β
β β’ Less context to share β
β β
β IDEAL SIZE: β
β β’ 1-3 days of work β
β β’ 1-5 story points β
β β’ Fits in a sprint easily β
β β’ Delivers something usable β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Splitting Techniques
By Workflow Steps
SPLIT BY WORKFLOW:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ORIGINAL STORY: β
β "As a user, I can manage my profile" β
β (Too big - 13 points) β
β β
β IDENTIFY WORKFLOW STEPS: β
β View β Edit β Save β Validate β Notify β
β β
β SPLIT STORIES: β
β β
β 1. "As a user, I can view my current profile" β
β (2 points) - Display only β
β β
β 2. "As a user, I can edit my name and email" β
β (3 points) - Basic editing β
β β
β 3. "As a user, I can upload a profile photo" β
β (3 points) - Photo handling β
β β
β 4. "As a user, I can change my password" β
β (3 points) - Security sensitive β
β β
β 5. "As a user, I receive email when profile changes" β
β (2 points) - Notification β
β β
β EACH STORY: β
β β Delivers value independently β
β β Can be tested independently β
β β Can ship independently β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
By Data Variations
SPLIT BY DATA/INPUT TYPE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ORIGINAL STORY: β
β "As a user, I can pay for my order" β
β (Too big - 13 points) β
β β
β IDENTIFY VARIATIONS: β
β Credit card, PayPal, Apple Pay, Bank transfer β
β β
β SPLIT STORIES: β
β β
β 1. "As a user, I can pay with credit card" β
β (5 points) - Start with most common β
β β
β 2. "As a user, I can pay with PayPal" β
β (3 points) - Second option β
β β
β 3. "As a user, I can pay with Apple Pay" β
β (3 points) - Third option β
β β
β 4. "As a user, I can pay via bank transfer" β
β (3 points) - Fourth option β
β β
β BENEFITS: β
β β’ Ship credit card first (most value) β
β β’ Learn from each payment type β
β β’ Can defer less common types β
β β
β OTHER DATA SPLITS: β
β β’ By user type (admin, regular, guest) β
β β’ By file type (PDF, CSV, Excel) β
β β’ By region (US, EU, Asia) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
By Operations
SPLIT BY CRUD OPERATIONS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ORIGINAL STORY: β
β "As an admin, I can manage products" β
β (Too big - too vague) β
β β
β CRUD BREAKDOWN: β
β β
β CREATE: β
β "As an admin, I can add a new product" β
β (3 points) β
β β
β READ: β
β "As an admin, I can view all products" β
β (2 points) β
β β
β UPDATE: β
β "As an admin, I can edit product details" β
β (3 points) β
β β
β DELETE: β
β "As an admin, I can remove a product" β
β (2 points) β
β β
β FURTHER SPLITS IF NEEDED: β
β β
β "Add product" might become: β
β β’ Add product with basic info β
β β’ Add product photos β
β β’ Add product pricing β
β β’ Add product variants β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
By Interface
SPLIT BY INTERFACE/PLATFORM:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ORIGINAL STORY: β
β "As a user, I can view my dashboard" β
β (13 points - includes web and mobile) β
β β
β SPLIT BY PLATFORM: β
β β
β 1. "As a web user, I can view my dashboard" β
β (5 points) - Web version first β
β β
β 2. "As a mobile user, I can view my dashboard" β
β (5 points) - Mobile adaptation β
β β
β SPLIT BY COMPONENT: β
β β
β Dashboard might become: β
β 1. "...I can see my activity summary" β
β 2. "...I can see recent transactions" β
β 3. "...I can see quick actions" β
β 4. "...I can see notifications" β
β β
β SPLIT BY QUALITY: β
β β
β 1. Basic dashboard (text only) β
β 2. Dashboard with charts β
β 3. Dashboard with real-time updates β
β 4. Dashboard with customization β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
By Complexity
SPLIT BY HAPPY PATH / EDGE CASES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ORIGINAL STORY: β
β "As a user, I can checkout my order" β
β (Too big - includes all edge cases) β
β β
β SPLIT APPROACH: β
β β
β HAPPY PATH FIRST: β
β 1. "...I can checkout with valid payment" β
β (5 points) - Assumes everything works β
β β
β ERROR HANDLING: β
β 2. "...I see clear error if payment fails" β
β (2 points) - Declined cards β
β β
β EDGE CASES: β
β 3. "...I can retry if payment times out" β
β (2 points) - Network issues β
β β
β 4. "...I'm protected from duplicate orders" β
β (3 points) - Double-click protection β
β β
β VALIDATION: β
β 5. "...I'm told if card is expired" β
β (1 point) - Validation rule β
β β
β BENEFITS: β
β β’ Ship happy path first β
β β’ Add robustness incrementally β
β β’ Can defer rare edge cases β
β β’ Users get value earlier β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Tracking Split Stories
GitScrum Structure
ORGANIZING SPLIT STORIES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β EPIC: Account Management β
β β
β βββ STORY: Profile management (original - closed) β
β β β
β βββ CHILD STORIES: β
β βββ View profile (3 pts) β
Done β
β βββ Edit basic info (3 pts) β
Done β
β βββ Upload photo (3 pts) π In Progress β
β βββ Change password (3 pts) β¬ To Do β
β βββ Email notifications (2 pts) β¬ To Do β
β β
β GITSCRUM VIEW: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Profile Management ββ
β β Progress: ββββββββββ 43% (6/14 points) ββ
β β ββ
β β β View profile (3 pts) ββ
β β β Edit basic info (3 pts) ββ
β β π Upload photo (3 pts) ββ
β β β Change password (3 pts) ββ
β β β Email notifications (2 pts) ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ROLLUP: β
β Parent story tracks total progress β
β Each child is independent and deliverable β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
When Not to Split
SPLITTING LIMITS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DON'T SPLIT IF: β
β β
β PIECES HAVE NO VALUE: β
β β "Create database table" β
β β "Write API endpoint" β
β β "Build UI form" β
β β These are tasks, not stories β
β β Group into one valuable story β
β β
β TOO SMALL ALREADY: β
β β 1-point stories split further β
β β Overhead exceeds value β
β β Just do it β
β β
β ARTIFICIALLY SPLIT: β
β β "Part 1", "Part 2", "Part 3" β
β β Not independently valuable β
β β Find natural split points β
β β
β BETTER APPROACH: β
β β
β Ask: "Can a user do something useful with just this?" β
β β
β Yes β Good split β
β No β Keep together or find different split β
β β
β "VIEW + EDIT" is better than "BACKEND + FRONTEND" β
β Horizontal slices > Vertical slices β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ