Slicing User Stories

25
Slicing User Stories Dave Grant

Transcript of Slicing User Stories

Slicing User StoriesDave Grant

1. User Story Overview

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

Three C’s

• Card

• Conversation

• Confirmation

INVEST in Good Stories

• Independent

• Negotiable

• Valuable

• Estimable

• Sized Appropriately or Small

• Testable

Why Split?

… small enough so that the programmers can build half a dozen in an iteration.

Epic vs Story

• Epics are very large stories

• Coarse-grained vs fine-grained

• Release-scope vs sprint-scope

• Describe scenarios for personas

2. Splitting Techniques

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

3. Backlog Management

Treat Stories Like Cheese

Don’t slice more than you need to.

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.

4. Questions?

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!