User stories are core to many agile methodologies but are often misunderstood by those new to agile. However, proper user stories are important for planning, scoping, delivering value, and change management. This hands-on event will be spent creating, evaluating, and hopefully improving our own user story skills. Bring post-its and sharpies.
The video for this presentation is available here: http://vimeo.com/33850718
3. Example Scenario
Social Recipe Site
• Amir (our hero) loves to cook and tell everyone about his culinary
prowess. His little known secret is that he uses a web site in order to
search for, rate, and select popular recipes. He likes that he can
search for recipes by popularity and type so that he can impress his
guests. He also appreciates that he can privately annotate and
comment on recipes that he has tried so that he can keep track of
which recipes were popular with his guests and also so that he
doesn’t repeat that recipe for the same guest at a later date.
Develop a list of interesting things the system could do
to provide some kind of value to an end user like Amir.
• (Think quantity, not quality)
3
7. Why User Stories
Placeholder for a conversation
• Documents are not a great tool for common
understanding so we tell stories.
• The key is the conversation that occurs.
• The story is a record/pointer/reminder of that
conversation.
• Create them together, not in isolation
7
9. Why is it important to write good user stories?
As an office worker, I want to send an e-mail so that
my co-workers can have a full inbox.
9
10. Why is it important to write good user stories?
As an office worker, I want to send an e-mail so that
my co-workers can have a full inbox.
10
11. Formats
Traditional
• As a [role], I want to [some action], so that [goal/result]
• [who] [what] [why]
- This format is a great thinking tool
Reverse (start with why)
• In order to [goal/result], as a [user], I want to [some
action]
• [why] [who] [what]
11
12. Formats
• A Bad Example
- As a CFO I want more features so that we can make more
revenue
12
13. Formats
Other
• Title / Sentence / Acceptance Tests
• Card / Conversation / Confirmation
• Feature [X] will move metric [Y] - Lean Startup
13
14. Example Scenario
Social Recipe Site
• Mark (our hero) owns and operates a small town
catering business. He regularly posts recipes on the
site and some of his popular recipes have earned
him free product as a thank you from suppliers such
as Kraft. He has started to diversify his recipe
submissions to reach a wider audience and likes to
view his submission dashboard to see real time
updates of his recipe popularity and comments.
14
15. INVEST – Independent
Don’t mix priorities; try to make the order of development un-important
• Bad
- As a recipe contributor, I want a dashboard that shows my
recipes, ratings, and comments so that I can find this
information in one place.
• Good
- As a recipe contributor, I want to see a list of the recipes that
I have contributed so that I can select one for editing or
reviewing.
- As a recipe contributor, I want to see the comments for each
of my recipes so that I can respond to any questions.
- As a recipe contributor, I want to see the ratings for each of
my recipes so that I can improve my contributions.
15
16. INVEST – Negotiable
Allow room for the team to have control over the solution
• Bad…
- As a recipe contributor, I want to post recipes including title,
description, instructions, pictures and a list of attributes
to choose from multi-select list boxes such as season,
culture, time to prep, recipe size, estimated cost so that my
recipes can be displayed in targeted search results.
• Good
- As a recipe contributor, I want to post basic recipe and photo
information with searchable fields so that users can find and
view my recipe.
- As a recipe contributor, I want to set attributes for my recipes
so that it can be displayed in targeted search results.
16
17. INVEST – Valuable
Once complete, the story provides value to a user or stakeholder
• Bad
- As a developer, I want to create a recipe database
table, so that I can store recipe details
- As a developer, I want to call a recipe web service to
retrieve recipe details
- As a developer, I want to create the recipe list UI.
• Good
- As a recipe contributor, I want to see a list of the
recipes that I have contributed so that I can select
one for editing or reviewing.
17
18. INVEST – Estimable
We understand it well enough to be able to estimate it (relatively)
• Bad
- As a website owner, I want the website to be secure
so that I don’t have angry customers
• Good
- As a recipe contributor, I want to be the only one who
can edit my recipes so that I have confidence in the
site.
18
19. INVEST – Small
Too big is hard to estimate, too small is too detailed
• Bad
- As a recipe contributor I want to see stats so that I can understand
which of my recipes are the most effective
- As a recipe contributor I want the submitted date time for each
recipe to be set automatically
• Good
- As a recipe contributor I want to see the number of views per
recipe per day for each of my recipes so that I can understand
which of my recipes are the most effective.
19
20. INVEST – Testable
We can define tests that help us understand when it is done
• Bad
- As a website owner I want to the site to be useable so that I can enter
recipes easily
• Good
- Option 1: Using tests to define “usable”
• As a recipe contributor, I want to post basic recipe and photo information
that allows users to search for and view my recipe.
- Test: Recipes should be entered within 30 seconds 80% of the time.
- Option 2: Write a usability user story (this story might be created later in a product lifecycle – after
the site is already live):
• As a website owner I want the recipe contribution functionality to be rated
at least 4.2/5 on a usability survey so that I am confident that recipes can be
entered easily.
- Option 3: Lean Startup
• Feature [simplify recipe entry] will move metric [% of recipe contributors
that complete their contributions]
20
21. Non Functional Requirements/Constraints
Some tips:
• Create a check list of constraints that each story
is compared against
• Write them as tests
• Sometimes they can be written as stories
- (examples as above with security, usability)
21
22. Details, details, details
Add details later – just in time
• It is ok and common to record a few things about
each story at the beginning:
- A few bullets on the types acceptance tests
- Constraints (non-functional requirements)
- A few drawings
- Etc
• Add and confirm details later once the story has been
selected as one of the next few to be delivered.
22
23. Last Thoughts on User Stories
• Stories shrink in size and grow in detail
over time.
• Planning Poker helps you make sure your
stories are INVEST; They also add to the
conversation.
23
24. Revisiting the first example
• Self correct your original statements using
INVEST and one of these formats (5 minutes):
- As a [user] I want to [some action] so that
[goal/result]
- In order to [goal/result], as a [user], I want
to [some action]
• Review your corrections as a group (5 minutes)
• Large Group Discussion (10 minutes)
24
25. To Summarize
User Stories
1. Communicate!
2. INVEST
I - Independent
N - Negotiable
V - Valuable
E - Estimable
S - Small
T - Testable
3. Scope statements
steve.rogalsky@protegra.co @srogalsky
m
blog.protegra.com
winnipegagilist.blogspot.com
25
Editor's Notes
Combined prioritiesSomething that is dependentIndependent goal.
Show us your best ones. Let us evaluate based on INVEST.