3. 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
9. 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
10. 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.
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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
17. 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
18. 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
19. 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
20. 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
23. 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.
25. References
Books
• The Inmates are Running the Asylum; Alan Cooper
• User Stories Applied; Mike Cohn
• Agile Product Management with Scrum; Roman Pichler
• User Story Mapping; Jeff Patton
• Planning Extreme Programming; Kent Beck and Martin Fowler
Articles
• Ask me!