slicing user stories
TRANSCRIPT
What are User Stories?
“We demonstrate progress by delivering tested, integrated code that implements a story. A story
should be understandable to customers and developers, testable, valuable to the customer
and small enough so that the programmers can build half a dozen in an iteration.”
— @RonJeffries and @KentBeck
INVEST in Good Stories
• Independent
• Negotiable
• Valuable
• Estimable
• Sized Appropriately or Small
• Testable
Epic vs Story
• Epics are very large stories
• Coarse-grained vs fine-grained
• Release-scope vs sprint-scope
• Describe scenarios for personas
Our Epic
As a reader, I want to find a book, decide what to read, and buy it so that I have something to
read on holiday
Splitting Rules
• After splitting your story, it should still be a good story by INVEST standards
• Don’t slice on technology or tiers
• If the scope is too big, split. If you don’t know enough, spike.
Split on Conjunctions
As a reader, I want to find a book, decide what to read, and buy it so that I have something to
read on holiday
• As a reader, I want to find a book, so that I can read reviews
• As a reader, I want to read reviews, so I know if a book is worth buying
• As a reader, I want to buy a book, so that I have something to read on holiday
Split on Workflow Steps
As a reader, I want to buy a book, so that I have something to read on holiday
• As a reader, I want to add my book to a shopping basket, so can shop for multiple books
• As a reader, I want to provide my delivery address, so I don’t have to travel to collect my book
• As a reader, I want to pay for my book, so I don’t have to pay a driver on delivery
Split on Major Effort
As a reader, I want to pay for my book, so I don’t have to pay a driver on delivery
• As a reader, I want to pay by my favourite credit card (one of Visa, Mastercard, Diners Club, American Express), so I don’t have to pay a driver on delivery
• As a reader, I want to pay by any credit card (Visa, Mastercard, Diners Club, American Express), so I don’t have to pay a driver on delivery
Split on Acceptance Criteria
As a reader, I want to pay by my favourite credit card (one of Visa, Mastercard, Diners Club, American
Express), so I don’t have to pay a driver on delivery
• As a customer service rep, I want credit cards with invalid dates to be rejected, so that the user can provide a valid one
• As a customer service rep, I want credit cards with invalid PANs to be rejected, so that the user can provide a valid one
• As a fraud officer, I want credit cards with invalid addresses to be rejected, so that orders are not shipped to fraudulent addresses
Split on Complexity / Generics
As a reader, I want to find a book, so that I can read reviews
• As a reader, I want to pick a book from Oprah’s Book Club collection, so I can read reviews
• As a reader, I want to be recommended a book, so I can read reviews
• As a reader, I want to search for a book, so I can read reviews
Split on Data
As a reader, I want to search for a book, so I can read reviews
• As a reader, I want to search for a book by ISBN, so I can read reviews
• As a reader, I want to search for a book by author, so I can read reviews
• As a reader, I want to search for a book by title, so I can read reviews
• As a reader, I want to search for a book by publisher, so I can read reviews
• As a reader, I want to search for a book by blurb, so I can read reviews
Split on Non-Functionals
As a reader, I want to search for a book by blurb, so I can read reviews
• As a reader, I want to search all books by blurb within 500 milliseconds, so I can read reviews
• As a reader, I want to search all books by blurb within 10 seconds, so I can read reviews
Split on Interfaces
As a reader, I want to search for a book by blurb, so I can read reviews
• As a reader, I want to search for a book by blurb on my iPhone, so I can read reviews
• As a reader, I want to search for a book by blurb on my Nexus 6, so I can read reviews
• As a reader, I want to search for a book by blurb on my desktop, so I can read reviews
Split on CRUD
As a reader, I want to provide my delivery address, so I don’t have to travel to collect my
book
• As a reader, I want to add a delivery address, so I can choose my address quickly in future
• As a reader, I want to update a delivery address, so I can change my surname after getting married
• As a reader, I want to delete a delivery address that I no longer live at, so I don’t accidentally send an order to it in future
Split on Business Rules
As a reader, I want to add a delivery address, so I can choose my address quickly in future
• As a customer service rep, I want to suggest address normalisation changes, so that I can minimise incorrect deliveries of orders
• As a customer service rep, I want to validate postcodes, so that I can minimise incorrect deliveries of orders
Beware Story Card Hell
Story Card Hell occurs when you have so many user stories in your product backlog (PBL) that it becomes impossible to:
• prioritise stories effectively
• understand each card
Your PBL should contain a mixture of user stories of different sizes, with enough ready stories to feed 2-3 sprints.