Example User Stories v3

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

Example User Stories

This PDF contains sample user stories from three di erent products:
1. An early version of of the Scrum Alliance website
2. A site providing on-demand video courses for learning agile
3. The rst Planning Poker website
Some stories are good, some aren’t. Some are horrible.
I’m providing the full set of stories for each, though, so you can see what I considered a suitable initial product
backlog for each.
Since these are now being used for a teaching tool, I have provided a current critique of many stories in each
backlog, pointing out where it was either good or bad. I resisted the urge to provide a critique of every story
because doing so would be tedious for us both–a mistake I made in one story was o en repeated in other
stories.

A Danger in Critiquing Stories


In my courses on writing better user stories, we critique sample stories, and I generally point out the danger of
critiquing stories without having the bene t of being on the team that writes the story.
Stories are written to facilitate conversations. When looking at stories as an outsider, be aware that you have
not been privy to those conversations. Those conversations o en provide the additional context or word
de nitions that can make an acceptable story out of a seemingly bad one.

Don’t Strive for Perfect Stories


In 2002-3, I was researching traditional requirements techniques as background for writing my User Stories
Applied book. I came across a conference that promised participants would learn “how to write the perfect
requirements sentence.”
And I thought, “How ambitious!”
I’ll be happy if I can write halfway decent user stories that lead to great conversations. Yet here’s someone in the
traditional requirements world teaching how to write the perfect sentence.
That’s too much work. And too much pressure.
Back in the day (like twenty years ago in two cases), I wrote these three product backlogs to communicate with
real development teams. Those teams and I had prior conversations about the basics of what would be needed
and we supplemented each written story with conversations.
With the aid of hindsight, these user stories–warts and all–can be fun and instructive to use as examples of what
to do and what not to do when writing your own product backlogs.

Mike Cohn
February 2024

Page 1 of 32
fi
fi
fi
ff
ft
ft
Scrum Alliance Website
The following example user stories were written to describe the functionality in an early version of the Scrum
Alliance website. These stories were written between May 2003 and early 2004.

Pro les
1. As a site member, I want to describe myself on my own page in a semi-structured way so that others can
learn about me. That is, I can ll in prede ned elds, but also have room for a free-text eld or two. (It would
be nice to let this free text be Markdown or similar to enable some simple formatting.)

This story could be greatly improved by using acceptance criteria, for example:
“As a site member, I can describe myself on my own page so that others can learn about me.”
Acceptance Criteria:
• There are speci c elds for name, employer, location, …
• A free text eld allows the member to include any additional information.
• Optional: It would be great to support Markdown in the free text eld.
In this I changed “I want to…” to “I can…”. That’s largely just a matter of preference but I feel like “I
want” story is true whether the need is ful lled or not. An “I can” story is done only when the user truly
can do the thing.
Criticisms that this story speci es the user interface are unfounded. Saying that there are “ elds for
name, employer, location” does not imply any particular user interface implementation. It was a given
that this would be a website and that members would be able to describe themselves on the site.

2. As a site member, I can ll out an application to become a Certi ed Scrum Practitioner so that I can earn that
designation. [Note: Certi ed Scrum Practitioner was the initial name of what became known as Certi ed
Scrum Professional.]
3. As a Practitioner, I want my pro le page to include additional details about me (i.e., some of the answers to
my Practitioner application) so that I can showcase my experience.

This is another story that could bene t by moving some of the original story into acceptance criteria,
perhaps as:
As a Practitioner, I want my pro le to include additional details about me so that I can showcase my
experience.
Acceptance criteria:
• Show answers to these questions (...) from the Practitioner application. [I would have
mentioned speci c questions.]
In the updated story I also changed “I want my pro le page …” to “I want my pro le…,” dropping the
word page. It was 99% assumed that each member would have a pro le page. However, removing

Page 2 of 32
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
that word does make it a little more clear that the UX designer could do something di erent. Given
the context of this website at that time, this change would not have mattered but the story is slightly
improved, much as a song can be improved with more cowbell.
Also, note that I le this as “I want…” despite a comment above that I generally prefer “I can.” There
are no hard and fast rules to story writing except that the story should facilitate useful conversations. I
think this story works better with “I want…” so I le it that way.

4. As a site member, I can ll out an application to become a Certi ed Scrum Trainer so that I can teach CSM
and CSPO courses and certify others.
5. As a Trainer, I want my pro le page to include additional details about me (i.e., some of the answers to my
Trainer application) so that others can learn about me and decide if I’m the right trainer for them.

Yet another example of where acceptance criteria can improve the clarity and intent of a story. I won’t
call out that problem every single time from here on.

6. As a Practitioner or Trainer, when I write an article for the site I want a small graphic shown with the article
showing my CSP or CST status so that others know my certi cations when reading. (For example, Amazon’s
“Top 500 Reviewers” approach.)

This would be a good time to use a job story instead of a user story. Job stories replace the who of a
user story with a situation or trigger that initiates a story. Job stories begin with when so this story
could be better rewritten as:
When I post an article to the site, I want my certi cations shown near my name so that others know I
am quali ed.
A job story is better here because it deemphasizes who is doing the story and avoids the ugliness of
the dual roles in the user story version.
I also removed the statement about the “small graphic” as unnecessary and potentially too close to
an implementation detail.

7. As a trainer, I want my pro le to list my upcoming classes and include a link to a detailed page about each so
that prospective attendees can nd my courses.

This certainly could be split into two stories–one about the list of courses and one about the “detailed
page about each.” But this was written at the start of the project before any development work had
begun. At that time, it was better to leave this as a single, possibly large story, to be split when this
moved closer to the top of the product backlog.

8. As a site member, I can view the pro les of other members so that I can nd others I might want to connect
with.
9. As a site member, I can search for pro les based on a few elds (class attended, location, name) so I can nd
others I might want to connect with.

Page 3 of 32
fi
ft
fi
fi
fi
fi
fi
fi
fi
ft
fi
fi
fi
fi
ff
fi
It’s tempting to say the parenthetical portions should be moved to acceptance criteria. And they very
likely should in this case.
However, sometimes text in parentheses like this contains examples rather than requirements. If class
attended, location and name are examples of things to search for, then do keep them in the
parenthesis if the product owner would accept the story even if other information is searchable
instead.

10. As a site member, I can mark my pro le as private in which case only my name will appear so that no one can
learn things about me I don’t want shared.
11. As a site member, I can mark my email address as private even if the rest of my pro le is not so that no one
can contact me.
12. As a site member, I can send an email to any member via a form so that we can connect.
13. As a site administrator, I can read practicing and training applications and approve or reject them so that only
applicants who qualify can become CSPs or CSTs.

Back when this site launched, site administrators were also the reviewers of applications for advanced
certi cations. I should have anticipated the need to separate a technical site admin from someone
approving applications. Then I would have used a di erent role in the story.

14. As a site administrator, I can edit any site member pro le so that I can correct problems for members.

News
15. As a site visitor, I can read current news on the home page so that I stay current on agile news.

This story probably should not say that this will appear on the home page. But that had been
discussed and agreed to. So this story was documenting what developers and stakeholders had
already agreed to. As such, I think it’s ne.

16. As a site visitor, I can access old news that is no longer on the home page, so I can access things I remember
from the past or that others mention to me.

This story should be improved. It’s unclear if this means a URL from a view years ago remains valid
(allowing access to the “old news” via link) or whether this means users can search for (and nd) old
news articles.

17. As a site visitor, I can email news items to the editor, so they can be considered for publication. (Note: this
could just be an email link to the editor.)

I’m not sure this warrants a user story. It’s really just saying that someone can email the site. A better
story might have been something about having a “Contact Us” page with acceptance criteria of
speci c ways or people to contact.
Page 4 of 32
fi
fi
fi
fi
ff
fi
fi
fi
18. As a site editor, I can set the following dates on a news item: Start Publishing Date, Old News Date, Stop
Publishing Date so articles are published on and through appropriate dates. These dates refer to the date an
item becomes visible on the site (perhaps next Monday), the date it stops appearing on the home page, and
the date it is removed from the site (which may be never)

The explanation of what the dates mean is OK. That isn’t really part of the user story itself. Keep in
mind these were written before viable so ware solutions existed for maintaining product backlogs.
This was created in an Excel spreadsheet initially.
The speci c dates needed could have been acceptance criteria but they are so central to the story
that I think they’re OK here.

19. As a site member, I can subscribe to an RSS feed of news (and events?) so I remain su ciently and easily
informed.

The “and events” question is OK. It’s just saying that the RSS feed will contain news and that including
events should be considered. Remember stories enable conversations. The question is a reminder for
the product owner and team to discuss whether events will be included in the feed.

20. As a site editor, I can assign priority numbers to news items, so I can indicate which articles I want featured
most prominently on the site. Note: Items are displayed on the front page based on priority.

A website content management system (CMS) had already been selected. Within the CMS, items
could be tagged with priority values of 1–100 and would be displayed in that order. (It was possible to
assign the same value to multiple pieces of content.)
Given that everyone involved in this understood how this worked, this story is OK but not great–and
here’s why.
The bigger problem with this story is that it is really two stories: one about assigning priorities and a
second (buried in the note) about showing stories in priority order. I should have written two stories
instead:
• As a site editor, I can indicate the priority of articles to be displayed on the site so that I can help
people see the most important articles.
• When viewing articles on the site, I see them in priority order so that I am more likely to see the
most important articles.

Courses and Events


21. As a site visitor, I can see a list of all upcoming Certi cation Courses and can page through them if there are a
lot, so I can choose the best course for me.

Some people would criticize the “choose the best course for me” part but I don’t think that’s a
problem. Of course the site designers don’t know what is the best course for someone. This story was
about showing enough information to let that person decide.
Page 5 of 32
fi
ft
fi
ffi
Remember, too, this is from 2003-4 and there were far fewer Scrum certi cation courses back then
than now.
As this story nears the top of the product backlog, it will bene t from having acceptance criteria
added about what should be displayed.

22. As a site visitor, I can see a list of all upcoming “Other Courses” (non-certi cation courses) and can page
through them if necessary, so I can choose the best course for me
23. As a site visitor, I can see a list of all upcoming “Events” so I can decide if I want to attend any. (Events are
things such as the Scrum Gathering, conferences, free seminars, etc.)
24. As a trainer, I can create a new course or event, so site visitors can see it. Note: This includes the following
information: name, description (HTML), trainer names (multiple selection from a list), start date, end date,
venue name (HTML) and address, contact name, contact phone, contact email, a link for more information,
and a link to register. For a certi cation course the name of the class is a dropdown list; for others, it is free
text.

Another example where things included in a story would have been better listed as acceptance
criteria.

25. As a trainer, when I create an Other Course or Event, I am charged a listing fee for that activity so I don’t list
events I don’t really intend to hold.

This is long before job stories were invented but is essentially using the job story syntax with the
“When I create…” This is a good example of the occasional need to combine elements of user and job
stories. It is important to know that a trainer is creating the event and also important to know when
this story is happening.

26. As a site administrator, I can create an Other Course (?) or Event that is not charged a listing fee. This is so
that the Scrum Alliance doesn’t charge itself for Scrum Gatherings that it puts on.

It’s interesting that I wrote the story itself without a so-that clause but then included a second
sentence that uses “so that” to explain why. It probably should have just been one sentence even
though it would be pretty long.

27. As a site administrator, I can set the listing fee per Other Course or Event so that we have exibility on what (if
anything) to charge in the future.
28. As a trainer, I can update one of my existing courses or events so that it re ects accurate information.
29. As a trainer, I can delete one of my courses or events, so it’s no longer listed if I cancel for some reason.
30. As a trainer, I can copy one of my courses or events so that I can create a new one. When copying it I am
asked for the date(s) of the new course or event.

The second sentence of this should have been a separate backlog item, and probably best as a job
story:

Page 6 of 32
fi
fi
fi
fi
fl
fl
When copying a class or event, I can set the date of the new item so that everything is the same
except the date.
This could possibly bene t from including the user (trainer) in the story such as “As a trainer, when I
copy a class or event…” But it might have been su ciently obvious that it would be a trainer doing
this.
Additionally, the job story as I wrote it above does leave it open that perhaps this functionality is also
available to site admins.

31. As a site admin, I can delete any course or event, so I can remove things that will no longer occur.

This could have been split into separate items: one for deleting a course and another for deleting an
event (such as a conference). But I wrote it this way assuming it was small enough as is and that the
team would see this obvious split and use it if needed.

32. As a site editor, I can update any course or event so that I can x things the original author hasn’t.
33. As a trainer, admin, or editor, I can turn a course into an event or an event into a course, so I can correctly
classify anything that was entered incorrectly.
34. As a site visitor, I have an advanced search option that lets me ll in a form of search criteria (country, state,
trainer name, date range, word in description, etc.) so I can quickly nd what I’m looking for.

This is getting too deep into the user interface details by implying there is a basic and an advanced
search. It would be better as this job story plus acceptance criteria:
When searching for a course, I can optionally enter information that will narrow the results so that I
can more quickly nd a suitable course.
Acceptance criteria:
• Country and/or state
• Trainer name
• Date range
• Key words in the description

35. As a site visitor, when I’m viewing a course I can click on the trainer’s name and be taken to the trainer’s
pro le, so I can read more about a trainer before registering for a course.

This should de nitely not say something like “click on a trainer’s name.” That’s a likely mechanism for
letting someone see more about a trainer but so would a “Learn More” link or button. This level of
user interface detail should not be included.
The part about “be taken to the trainer’s pro le” should also be removed from the story. Perhaps site
visitors do not need to see a trainer’s entire pro le and instead maybe a hover-over popup showing a
little more about the trainer would be better. That decision should be le to the team (and ideally a
usability designer).

Page 7 of 32
fi
fi
fi
fi
fi
fi
ffi
fi
fi
fi
ft
And so a good job story replacement for this story would be:
When viewing a course, I have the option to learn more about the trainer so I can make an informed
decision about which course to take.

36. As a site visitor, I can subscribe to an RSS feed of upcoming courses and events so that I’m up to day without
having to visit the site.

FAQs
37. As a site visitor, I can read FAQs, so I can get quick answers.
38. As a site editor, I can maintain a FAQ section so that support gets fewer easily answered questions.
39. As a site visitor, I can do a full-text search of the FAQs, so I can nd an answer quickly. (Note: Only needed if
FAQs are more than one page.)

Resources
40. As a site member, I can download the latest training material and methodology PDFs so I have them.

This could certainly have been given a better so-that clause!

41. As a visitor, I can download presentations, PDFs, etc. on Scrum so that I can learn from them or use them.

Jobs
42. As a site member (?), I can scroll through a listing of jobs, so I can see if there are any I’m interested in. (There
won’t be enough at rst to justify search elds.

The question mark following the user role was to indicate that we were considering allowing non-
members to search for jobs.

43. As someone who wants to hire, I can post a help wanted ad so that I can attract candidates.
44. As a site admin, I need to approve each help wanted ad before it gets to the site so that we’re sure of the
quality of jobs being listed. Note: May not be needed long term.
45. As a site admin, I am emailed whenever a job is submitted so that I am aware of it and can decide if I want to
post it.

The admin’s goal is really to be noti ed. Saying that noti cation comes via email is another example of
specifying a user interface within a story. Considering this story was from 2003-4, I think it was largely
OK to say the noti cation was to be via email. Still it would have been better to leave that out.
Additionally, this could have been improved by combining elements of a job and user story such as:
Page 8 of 32
fi
fi
fi
fi
fi
fi
As a site admin, when a new job is posted, I want to be noti ed so that I’m aware of the new posting
and can approve or reject it.

46. As a site member, I can subscribe to an RSS feed of jobs available so that I can read them without visiting the
site.
47. As a site admin, I can edit and delete help wanted ads so I can correct small problems or make sure each ad
complies with site guidelines.

Obviously, this could easily have been split into two stories (edit, delete) if those were thought to be
su ciently large. At the start of a project, though, it was good to combine them to keep the product
backlog from expanding unnecessarily.

48. As a site admin, I want jobs to stop publishing on the site 30 days a er being posted so that jobs that may
have been lled aren’t still listed when the hiring party forgets to come back and delete the ad.

The idea of removing a job posting 30 days a er it’s listed could have been given as an acceptance
criterion to a story about posting the job. Minimally, though, this would have been better as a job
story:
When a job has been posted for 30 days, it is automatically removed from the site so that the site
doesn’t become cluttered with old, lled postings.

49. As someone who wants to hire, I want to be able to extend an ad for another 30 days (repeatedly) by visiting
the site and updating the posting so that my ad remains active. (Note, I can’t update it 10 times today and
extend the posting 300 days today.)

The “repeatedly” and note portions of this should have been given as acceptance criteria rather than
as parts of the story itself.

50. As someone who has posted an ad that is about to expire, seven days before it expires I want to be emailed a
reminder so that I can go extend the ad.

As before, specifying that the noti cation will be via email is not ideal.
Additionally, it would be better to avoid mandating that noti cations are 7 days in advance. Perhaps
we nd 14 days is better, or 3 days. It would have been better to write this story as “n days” and then
have a separate story for an admin to set the number of days.
This leads to the the following two stories, the rst of which combines elements of job and user
stories:
As a job poster, when one of my listings is n days from expiring, I want to be emailed a reminder so
that I can extend the job listing if needed.
As a site admin, I can con gure how many days ahead of a job posting expiration to notify the job
poster so that they can extend the listing.

Page 9 of 32
ffi
fi
fi
fi
fi
fi
ft
fi
fi
fi
ft
Articles
51. As a site visitor, I want to read a new article on the front page about once a week so that I’m up on all the
latest happenings.
52. As the site editor, I can include a teaser with each article so that site visitors can decide if they want to read
the rest. The teaser shows up on the home page for all to read.

The second sentence should not be here. It is specifying the user interface within the story. However,
displaying news on the home page was fundamental to the concept of the site so no one objected at
the time.

53. As a site member who has read a teaser on the front page, I want to read the entire article so that I can nish
articles that appeal to me.

Again, this story is specifying a user interface detail and should not.

54. As the site editor, I can add an article to the site so that the site has plenty of content.

This is a pretty lame so-that clause. The story might be ne without a so-that clause at all.

55. As a site editor, I can set start publishing dates (when teaser appears on front page), old article date (when it
disappears from home page), and stop publishing dates (when it's removed from site, if ever) for articles so
articles appear only during appropriate periods.

Yet again, user interface details included in the story. What we see with this set of stories is pretty
common: Once UI details creep into one story, that problem persists for a set of related stories.

56. As a site editor, I want to be able to designate whether or not an article (or for that matter any piece of info)
ever makes the home page so that the best content is featured most prominently. Note: Some articles will
never be shown on the home page.
57. As the site editor, I have pretty good control over how the article looks (such as the use of images and
captions, for example) so that articles are visually appealing.

The use of “pretty good control” here makes this a “pretty bad” story. 😀 Actually, it’s not as bad as it
sounds. This was an attempt to tell the developers that site editors needed to control basic formatting
of articles but that as the product owner, I would be reasonable and back o any request that was
overly time consuming.
Because we were using a commercial Content Management System (CMS) and because those tools
were less exible in 2003-4 than today, this was an acknowledgement that perhaps something
seemingly simple would be prohibitively expensive to do within the CMS. So the story was really a
request to let editors do as much as was viable without undue e ort in the CMS.

Page 10 of 32
fl
fi
ff
ff
fi
It could be improved by using acceptance criteria to specify speci c needs such as headlines styles,
including images, adding captions, using bold and italics, and so on.

58. As a site visitor, I want the link from the article teaser to take me directly to the body of the article, not to
another teaser setup, so that I can easily nish reading the article.

As with many of these, this is going too much into the user interface details.

59. As a site editor, I want to be able to indicate whether an article is publicly available or for members only so
that visitors are incentivized to become members.
60. As a site visitor, I want to be able to read some of your articles so that I can learn without rst joining the site.
61. As a site member, I want to have full access to all articles so there is a bene t to being a member.
62. As a site visitor, I can do a full-text search of article body, title, and author name so that I can nd what I want.

The speci c elds would have been better as acceptance criteria.

63. As a site visitor, I can subscribe to an RSS feed of articles (teasers only?) so that I can read them without
visiting the site.
64. As a site visitor, I can post comments about articles so that others can read them.

Home Page
65. As a site editor, I want to have a prominent area on the home page where I can put special announcements,
not necessarily news or articles, so that I can give them additional exposure.

I bet you’re expecting me to say that the user interface shouldn’t be speci ed here. Nope. I think this
is totally ne. We’ve all seen company websites that occasionally need big banner announcements on
the home page. That’s what this is about. Mentioning the user interface in a story that is all about the
user interface is ne 😀

66. As a site editor, I'd like to have some exibility as to where things appear so as to accommodate di erent
types of content.

Similar to a story above, this was me saying that site editors need to have some control over where
things go on the home page, but that I’d be reasonable in backing o any requests made di cult by
the CMS we were using.
It would have been a better story if I’d written exactly what exibility I wanted. But I knew that what I
wanted would be bound to the constraints of the CMS and I was OK with that.
I don’t think the story is great, but in the same sort of circumstance I might very well write such a
story again.

Page 11 of 32
fi
fi
fi
fi
fl
fi
fl
fi
ff
fi
fi
fi
ffi
fi
ff
67. As a trainer, the upcoming courses are what I want visitors to notice so that they register and there’s a
bene t to my membership.

This is an interesting one and maybe it’s better as a non-functional requirement. Remember, this was
shortly a er the rst CSM course. As the Scrum Alliance, we wanted to attract good trainers and to do
that their course listings needed some prominence on the site, including its home page.
I’m not sure this belongs as a story at all, but I understand why I wrote this.

68. As a site visitor, I want to see new content when I come to the site, so I come back more o en.
69. As a site visitor, I want to have articles that interest me and are easy to get to, so I come to the site for my
agile news and learning.
70. As a site visitor, I need to know as soon as I visit what on earth Scrum is, and why it needs an alliance so that I
don’t bounce immediately o the page.

This odd-sounding story actually seems decent. It is saying that back in 2003–4, visitors needed to
quickly know what Scrum was so they didn’t leave the site. I think it does a nice job of saying that
without overly specifying how that was to be done.

71. As a site visitor, I want to know as I glance around the home page what on earth a CSM is and why I'd want to
be one so that I read more.
72. As a site visitor, I want to be able to get back to the home page quickly and easily, so I don’t get lost
navigating and so the site works like every other site in the world.

This probably wasn’t needed. I think I wrote this because I’d seen a few sites around that time that did
not have a logo image that always went to the home page.
Unlike other stories here, this one actually does a good job of leaving the exact UI out of it even
though I basically wrote that I want to click on a logo and go to the home page.

73. As a site visitor, I want to see a list of the most popular items on the site so I am most likely to read the most
important or best content.

Ratings
74. As someone who successfully completed a Certi cation Course (becoming a Certi ed ScrumMaster or
Certi ed Scrum Product Owner), I am emailed a link to a survey about the course and instructor, so I can
provide feedback on the course.
75. As a trainer, I want to be assured that no one can submit a review multiple times and skew my results, so my
ratings are accurate.
76. As a trainer, I am noti ed about the results of surveys about my classes, so I can read them. (Questions: A er
each survey? A er a set period of time? Does the trainer get an email or just know to go to the site?)

Page 12 of 32
fi
fi
ft
ft
fi
fi
ff
fi
fi
ft
ft
The open issues are ne. Not everything is (or should be) known when a story is rst written.
Once the question about when this occurs is answered, this would have been good as a job story such
as:
When a new review is received about one of my courses, I am immediately noti ed so that I can read
the review.

77. As a site admin, I can see the results for each trainer and averages for the class (for all trainers), so I can
identify any outliers or possible problems.
78. As a site visitor who is considering attending a certi cation course, I want to see a trainer’s rating (either for
that course or for all of his or her certi cation courses combined), so I choose a course from an appropriate
trainer.
79. As a trainer, I want my rating to show up on my pro le page, so site visitors can choose wisely.

What is Scrum?
80. As a site visitor, I want there to be a section of the website that teaches me the basics of what Scrum is, so I
can learn that quickly.
81. As a site editor, I can create the content of the What Is Scrum section so that it’s there for visitors.

This is a pointless so-that clause. I think the story would be OK without any so-that clause because the
real story is the preceding one (the one about users wanting this section on the site). But, if a so-that
clause is provided, it should be better than this.

Registry
82. As a site visitor, I can view lists on the site of all Certi ed ScrumMasters, Practitioners, Trainers, and Certi ed
Scrum Product Owners.

This is missing a so-that clause. I don’t think the story loses a lot by that omission. A likely so-that
clause such as “...so that I can see who belongs to the Scrum Alliance” allows us to say the story is
complete, but I don’t think it will lead the team to build anything di erent from this story.

83. As a CSM, Practitioner, or Certi ed Scrum Product Owner, I can have my name listed in the registry without
becoming a member of the site so that employers or others can verify my certi cation. (For example, I take a
certi cation class but never register or let my membership lapse.)

The example and other parts of this could have been included as acceptance criteria instead.

84. As a trainer who has nished teaching a Certi cation class, I can load an Excel le ( rst name, last name,
email) into the site so that those course participants are added to the Scrum Alliance records. I am prompted

Page 13 of 32
fi
fi
fi
fi
fi
fi
fi
fi
fi
ff
fi
fi
fi
fi
fi
fi
for the trainer names (I may not have trained alone), certi cation date, and type of certi cation (i.e., CSM or
CSPO). Courses are marked as “pending” until the trainer pays the certi cation fees.

The mention of the Excel le in here is ne. At the time, class rosters were already being shared with
the Scrum Alliance (via email) as Excel les so mentioning them here was ne.
The story would have been better as a job story with the additional information as acceptance criteria,
such as:
When I nish teaching a course, I can upload an Excel le so those course participants become
certi ed.
Acceptance criteria:
• Allow trainer to list any co-trainers
• Require entry of course dates
• Require trainer to indicate if it was a CSM or a CSPO course [These were the only two course types
at the time.]
• Courses are marked pending (until the trainer pays the certi cation fee).

85. As a site admin, I can view all classes in a pending state so that I can approve any that need to be approved.
86. As a site admin who has received proof of payment from a trainer, I can move people in his or her class from
a pending state to the registry.

In the rst version of this site, per-participant payments happened o site. The trainer then showed a
receipt to prove the course had been paid for.

87. As a new Certi ed ScrumMaster or Certi ed Product Owner, once my name has been loaded to the registry I
am sent an email welcoming me to the Scrum Alliance and containing instructions on how to register /
activate my membership.

This could be a job story but I think it works well as it is because knowing the user is new is really
what’s key to this story.

88. As a site editor, I can edit the content of the email automatically sent to new Certi ed ScrumMasters and
Product Owners so that I don’t need to involve a programmer on simple email edits.

Membership
89. As a company, I can join the Scrum Alliance by paying a corporate membership fee so that I can show the
company’s support of Scrum. This will include uploading items related to corporate membership (e.g.,
company description, a logo of size x by y).

Page 14 of 32
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
ff
fi
fi
fi
fi
The latter parts here should have been acceptance criteria.

90. As a corporate sponsor, my logo is displayed on a “corporate sponsors” page so that others see the
company’s support of Scrum.
91. As a corporate sponsor I want my logo to randomly appear on the home page so that others see the
company’s support of Scrum. (That is, it rotates among other corporate sponsors.)
92. As a CSM or CSPO who has been approved for Practitioner status (by a site admin reading my submission), I
am charged a fee so that my certi cation status can be activated.
93. As a Certi ed Scrum Trainer, I can pay an annual fee so that my CST status is active.
94. As a site administrator, I can set the annual fees for members, Practitioners and Trainers so that fees can be
set without involving a programmer.
95. As someone whose membership (of any type) is about to expire, I am sent a reminder and a link so that I can
renew.

It would be nice in the acceptance criteria to say how far ahead that reminder is sent.

96. As a member who has forgotten my password, I can have the system email me a new password or a password
reminder.

For Trainers Only


97. As a site editor, I can post information in a trainers-only section so that only trainers see it.
98. As a trainer, I can read information of relevance only to trainers so that the Scrum Alliance can share
information with me easily.

Page 15 of 32
fi
fi
Video Training Website
Stories in this section were written for the rst version of a website that o ered online video training from a
variety of instructors.

Course Catalog
1. As an instructor, I can create a description of a course so that prospective participants can learn about it.As
an instructor, I can maintain a bio about myself so that it is used on any course listing for which I’m the
instructor.
2. As an instructor, I can maintain a bio about myself so that it is used on any course listing for which I’m the
instructor.
3. As a site visitor, I can view a detailed page about each course so that I can learn all about it.

This story speci es a part of the user interface in the story. However, the entire site is dedicated to
online video training. We knew there would be a page about each course.
This story is ne but as it moves up the product backlog, acceptance criteria should be added about
what information will be on the page.

4. As a site visitor, I can browse a catalog of all courses available so that I can pick the right one for me.
5. As a site visitor, I can see a list of other related courses when viewing a course so that I can see other courses
I might be interested in.

Account Management
6. As a site visitor, I can create an account so that I can track my progress.

This story could be better. Yes, tracking progress would be one bene t of creating an account. But any
number of things could have been listed instead in the so-that clause.

7. As a participant, I can manage my account so that it re ects my current information.

“Manage” is a slippery word. What does it mean here? Anyone reading the story can guess that it
means some or all of things like changing a user name, changing the password, changing the billing
address, and so on. But which?
Look out for words like manage, maintain, administer, and so on.
This story was far enough down the product backlog that it would not be done for a handful or more
sprints, so it’s an OK story. But as it moves up the backlog, acceptance criteria will need to be added or
the story split into whatever manage means.

Page 16 of 32
fi
fi
fi
fl
fi
ff
8. As a participant, I can view a list of all courses I’ve taken and the continuing education credits each earns me
so that I have access to that historical information and don’t need to call someone to get that info.

The so-that clause is needlessly long with the “don’t need to call someone” part. But that actually was
an underlying motivation for the feature. Without this feature on a related site, we were getting a lot
of phone calls about how to claim continuing education credits (PDUs, SEUs, etc.) and wanted to
make nding that data easy for course participants.

Course Creation
9. As an instructor, I can upload videos to be part of a course so that participants can watch those videos.
10. As an instructor, I can create a quiz to include in a video course so that participants can take those quizzes to
ensure they are learning.
11. As an instructor, I can properly sequence the elements of a course so that I can assemble them into an
amazing course.

This story is about arranging videos and quizzes into the right groupings (“modules”) within a course
and putting everything in the desired order. I think it does a good job saying what’s needed while
keeping speci c UI needs out.

12. As an instructor, I can indicate whether a discussion forum is part of a course so that I can add a forum to
some but not all courses.

Reading this story without the full context of this project, it probably sounds ne. However, it literally
was implemented by adding a checkbox on a screen with “Enable discussion forum.”
So, it’s OK as its own story but it might have been better as acceptance criteria for a higher-level story.

13. As an instructor, I can indicate the schedule for a course so that prospective participants and participants can
see what course elements will be presented each week and what they’ll be.
14. As an instructor, I can set the publication date for course elements (for a scheduled course) so that items
become available when I want and not sooner.
15. As an instructor, I can add subtitles to any video so that it is more accessible.
16. As an instructor, I can set the thumbnail image for each video so that the image is one I like rather than
randomly selected.
17. As a site owner, I want all videos to be watermarked with the company logo so that the videos are clearly
from this company.

Page 17 of 32
fi
fi
fi
Buying Courses
18. As a trainer, I can set the prices for my course so that I can make lthy lucre.
19. As a trainer, I can set quantity thresholds and discounts so that I can o er lower prices for larger orders such
as “buy three, get 10% o ”.
20. As a trainer, I can create discount codes I can give to people so that I can customize pricing.

Quite a few stories in this backlog are decent on their own, but are missing corresponding stories. This
story is a good example. It allows trainers to create discount codes that can be given to buyers, but
nowhere in the backlog is there a story allowing a buyer to enter a discount code!
Perhaps surprisingly, this did not create any problems during development. The team working on this
was very good. When they encountered stories like this, they could infer the story I’d overlooked and
build it.
This doesn’t absolve me from overlooking such requirements. I should have included stories for
things like a buyer using a discount code. But that this did not cause any problems on this project
reinforces the fact that stories exist to facilitate communication. Even with the missing story, this time
I communicated well enough and the team was su ciently empowered that they knew what to do.

21. As a site visitor, I can put courses in my shopping cart so that I can purchase them and participate in (watch)
them.
22. As a site visitor, I can put one chapter of a course in my shopping cart so that I can purchase just a part of a
course.
23. As a site visitor, I can pay for the courses in my cart with a credit card so that I can purchase them and
participate in (watch) them.
24. As a site visitor, I can pay for the courses in my cart with PayPal so that I can purchase them and participate in
(watch) them.

This story about paying with PayPal could have been combined with the credit card story initially and
then split by the team if they felt it was too big. But it’s likely best to have split them.

25. As a buyer, I receive a receipt for any course I pay for so that I can prove I paid for it.
26. As a participant, I can announce my participation in a course at various times to various social media sites so
that I can tell others about what I’m learning.
27. As a user, I can view the license terms before purchasing or subscribing so that I know what I’m getting.
28. As a participant, I can sign up for a monthly or annual subscription so that I can take all courses.As a
company, I can purchase multiple licenses so that I can manage course registrations for a group of people.
29. As a company, I can purchase multiple licenses so that I can manage course registrations for a group of
people.
30. As a company, I manage a set of course registrations so that I can control which employees in my company
have access to which courses.

Page 18 of 32
ff
ffi
fi
ff
31. As a company, I can purchase a site license so that everyone in my company can take a course.

License Admin
32. As a buyer, I can easily apply a license I buy to myself so that I can instantly start viewing a course.
33. As a buyer, I can distribute licenses to others in my company so that they can view a course I pay for.
34. As a buyer, I can share a company-wide license with everyone in my company so that everyone in the
company can view the course.

Viewing Courses
35. As a participant, I want each course element (such as a video) marked as done a er I view or complete it so
that I can see which parts of a course I’ve completed.
36. As a participant, I can re-watch any video so that I can make sure I understand it.
37. As a site visitor, I can view some videos for free so that I can decide if I want to buy the full course.
38. As a participant, I can set a mode on the videos so that one begins as the previous one nishes so that I can
watch without having to touch my keyboard, mouse or screen.

This story does a good job of avoiding speci cation of the user interface. It is saying that participants
can enable a feature to automatically play the next video a er each video nishes.

Course Completion
39. As a participant, I am shown a page telling me how to get my continuing education credits a er I complete
the course so that I earn the credit I might have been interested in.
40. As a participant, I can earn a certi cate of completion by nishing a course so that I have proof that I
completed a course.

It would have been nice to include acceptance criteria about what it means to complete a course. If
someone watches 99% of the course, have they completed it? What if they take all the quizzes but
don’t pass all of them? When it became time to work on this story, these were the discussions we had.
They were added at that time as acceptance criteria.

41. As a participant, I can earn a badge showing that I completed a course so that I can display that badge on my
own website.
42. As a participant, I have a page I can link to and share with others that shows all the training courses I’ve
completed so that people can see all the great stu I’ve learned.

Yes, this is including the user interface in a story. But in this case, that’s ne. The idea behind this was
that a course participant could share a link to a page that showed their accomplishments. Everyone
Page 19 of 32
fi
fi
ff
fi
ft
fi
fi
ft
fi
ft
involved in discussions knew that would be a page and nothing more than that has been requested
here.

Miscellaneous
43. As a site visitor, I can read an FAQ so that all my questions are answered.
44. As a search engine, I can view a site map so that all pages are indexed.

This probably would have been better just being noted as a non-functional requirement of the
system. Shortly before this project I’d been involved with a website that had no sitemap and wanted
to be clear that this site needed one for SEO reasons at the time.

45. As a site visitor, I can read a privacy policy so that I know what’s private.
46. As a site visitor, I can sign up for a newsletter so that I get announcements about new courses and other
information.
47. As a site visitor, I see “Featured Products” on the home page so that I see the products the site most wants
all visitors to see.

Note the omission of a story that lets an admin mark products as “featured.” 🤔

Again, this story includes a UI detail, but I don’t think it’s a problem because UI discussions had
already been held and showing featured products on the home page had been agreed to. Think about
Amazon doing a rewrite of their home page: It’s a safe assumption an eCommerce site’s home page
will show products.

48. As a participant, I do not want the site shut down while I’m in the midst of a quiz or video so that my progress
isn’t interrupted.

Another that would probably be better as a non-functional requirement about how system
maintenance cannot a ect someone actively using the site. Minimally, the story should be improved
to say we don’t want to take the site down while an instructor is designing a new quiz or adding
videos.

Forums
49. As a participant, I can participate in a forum for a course so that I can discuss questions and topics with the
instructor and other participants.

Page 20 of 32
ff
Announcements
50. As an instructor, I can post announcements to a “home page” for a Scheduled Course so that I can tell
participants about important things such as “I’m delayed in posting module 7.”
51. As a participant, I can read announcements from an instructor for a Scheduled Course so that I can keep up
to date on news.

Hey, here’s at least one example of me remembering to add both sides of a story. In the previous
story, an instructor can post announcements and here, participants can read those announcements.

Quizzes
52. As an instructor, I can create quizzes so that participants can assess their learning.
53. As a participant, I can take a quiz as part of a course so that I can get feedback on how well I learned material
in the previous video(s).
54. As a participant, I see if I pass a quiz a er I nish taking it so that I can get feedback on how well I learned
material in the previous video(s).

Somewhere in here, I should have included something about what would be a passing score on a quiz.
That wasn’t as straightforward as it may seem. Some quizzes had very few questions so the passing
threshold needed to be variable.
For example, if a quiz had 10 questions then 7 (70%) might be a good passing score. But if a quiz had
one question, the instructor might decide that a passing score is getting that one question right (i.e.,
100%).

55. As a participant, I can see which quizzes I’ve passed, not passed, or not yet taken when viewing the course
outline so that I know which quizzes I need to take or possibly re-take.
56. As an instructor, I want quiz responses stored in the database so that I can see how people are doing at
various questions, perhaps so I can x one that is worded poorly.
57. As a participant, I want to receive feedback a er each quiz question so that I can see if I got the question
right or wrong.
58. As a participant, I can navigate a quiz by submitting an answer or by pressing skip (forward) or back so that I
can answer questions in a di erent order if I’d like.

This story de nes parts of the user interface and does go a little too far. The “pressing skip” implies
there would be a “Skip” button or link. There probably will be, but it would be better to have written
the story more generally as:
As a participant, I can navigate a quiz by answering a question or moving to another question.
Acceptance Criteria:

Page 21 of 32
fi
ff
fi
ft
fi
ft
• Moving forward and back a question is su cient. We don’t need direct movement to any question.
That is, while on question 4, the user does not need to immediately go to question 2.

59. As a participant, I can get answers via video rather than text so that I watch rather than read an answer.

Non-Functional Requirements
60. As a visitor, I want to be able to view the site and videos in any reasonable browser so that I can use what I’m
accustomed to.

Acceptance criteria would need to be added about what we considered a “reasonable browser.” A lot
of times I see people object to stories (or non-functionals) like this. However, I’ll defend this as a good
item once acceptance criteria have been added. Acceptance criteria for this could take the form of:
• Tested and fully functional on current versions of Chrome, Edge, and Safari.
• Fully functional on all versions of those browsers released in the prior 12 months. [Normally this
would include some amount of spot testing but not testing both versions 18.2.1341 and 18.2.1342
of some browser.]

Comments
61. As a participant, I can leave a comment about a course so that I can tell the world what I think of it.
62. As an instructor, I can respond to comments on my videos so that I can support my course participants.

Course Evaluation
63. As a participant, I am shown an evaluation form a er completing a course so that I can tell the company
what I think of their classes and their devilishly good-looking trainers.

Just having fun with the last bit of this story. There’s nothing wrong with having fun.

64. As an instructor, I can opt into receiving an email of every course evaluation as it is completed by a
participant so that I get real-time feedback on my courses.

It would have been better perhaps to not specify that the noti cations are via email. But there weren’t
so many trainers involved that we felt the need to support multiple noti cation methods. Still, an
improvement would be this set of stories:
As an instructor, I can opt into being noti ed of each new course evaluation so that I can see them
immediately.
Acceptance criteria:

Page 22 of 32
fi
ffi
ft
fi
fi
• Instructor can choose between email, SMS, and Slack noti cations
When a new course evaluation is completed, as the instructor of that course I am noti ed of the new
evaluation.
Acceptance criteria:
• Instructor is only noti ed if they’ve opted in
• Instructor is noti ed in the manner they’ve chosen (email, SMS, Slack)
Note that I le out a so-that clause in the job story above. I felt it was already a little long and the so-
that wasn’t going to add enough value to warrant making it even longer.

65. As an instructor, I can view all feedback for a course when logged in so that I can see historical or aggregate
data on my courses.
66. As an instructor, I can export all feedback for a course to a CSV le so that I can perform more in-depth
analysis.

I think a CSV (Comma-Separate Value) le is such a common and obvious export format that it’s
acceptable to speci cally state that in the story.

Reporting
67. As a site owner, I receive a periodic email summarizing registrations for the day, week. and month to date so
that I know how we’re doing.

The site owner mentioned here was me and I prefer email over other communication, so speci cally
stating email here was ne. Compare this with the next story.

68. As a trainer, I receive a periodic sales summary at the frequencies I select so that I know how my courses are
doing.

This story doesn’t say how trainers will receive their sales summaries. This was to allow more exibility
in how that information was delivered.

69. As a trainer, I can run a few helpful reports to be determined later so that I can monitor various aspects of my
courses.

This story sucks if it’s at the top of the product backlog and ready to be implemented. However, this
was written at the start of the project when reporting was a few months o . As such, it’s OK to write a
basic story saying that we’ll eventually need reports but don’t know what they are yet.

70. As a sys admin, I can run any report a trainer can run so that I can see overall information for any trainer on
the site.

Page 23 of 32
ft
fi
fi
fi
fi
fi
fi
fi
ff
fi
fl
fi
PlanningPoker.com
The user stories here were written for the rst version of www.PlanningPoker.com, which allows estimators in
di erent locations to estimate collaboratively.

Game
1. As a moderator, I want to create a new game by entering a name and an optional description so that I can
start inviting estimators.

Most of the stories for this site say “I want to…” I’ve noted previously in this document that I prefer “I
can…” Most of the time the di erence is minor, but I’d write essentially all of these stories di erently
today.
Also, this would possibly be better with the “name and optional description” as acceptance criteria,
but at least the name was fundamental to the story. So moving “optional description” to the
acceptance criteria would be a very minor improvement.

2. As a moderator, I want to invite estimators by giving them a URL where they can access the game so that we
can start the game.

Yes, it’s possible to say this should not have gone to the level of saying that it is a URL that is shared.
However, we were building a website and websites run on URLs. Even if we’d decided to share
something like a unique game identi er, that identi er would have been part of a URL. And sharing a
URL is more helpful than a number that gets entered at a URL.
So it’s easy to argue this story could be improved, but if I’d written this more vaguely, a developer
would have likely asked, “So you mean something like a URL?”

3. As an estimator, I want to join a game by entering my name on the page I received the URL for so that I can
participate.

This one should have been written without the UI details. This was written long before job stories had
been invented, but today I’d write it as a job story:
When joining a game, I want to enter my name so that everyone knows which estimates are mine.

4. As a moderator, I want to start a round by entering an item in a single multi-line text eld so that we can
estimate it.

The “multi-line text eld” is de nitely too much UI detail in the story. With this story I was telling the
developers that things being estimated could be longer than they probably thought. Better would
have been to include an acceptance criterion saying “up to 256 characters” (or some other length).

Page 24 of 32
ff
fi
ff
fi
fi
fi
fi
fi
ff
5. As an estimator, I want to see the item we’re estimating so that I know what I’m giving an estimate for.

This would have been better as a non-functional requirement. It could have said something about
how the item being estimated is always visible while it is being estimated.

6. As an estimator, I want to see all items we will try to estimate this session so that I have a feel for the sizes of
the various items.

This story could be improved in a number of ways. When I read this, my rst question is when does an
estimator want to see all the items? Is it before the estimating session begins? During it?
The intent was that any time, an estimator could go somewhere on the site and see the list of items
that had been loaded up for estimating. To be more clear about when this can occur, it would be
better today as a slightly modi ed job story with acceptance criteria:
Any time during a session, I can see all the items currently planned to be estimated.
Acceptance Criteria:
• User can see all items to be estimated
• User can also see items already estimated during the sessions and the estimate each was given

7. As a moderator, I want to see all items we will try to estimate this session so that I can answer questions
about the current story such as "does this include ___”.

This story should never have existed. In the roles for this site it was de ned that the moderator could
also be an estimator. Given that there is already a story about estimators seeing the list of items to
estimate, the moderator’s need is covered by that.
Further, the preceding job story can be fully said to cover both an estimator’s and moderator’s needs
because of how job stories leave out the explicit user role. The job story above says simply, “I can see
all the items…” As such, the user doing this could be a moderator or an estimator.

8. As a moderator, I want to select an item to be estimated or re-estimated so that the team sees that item and
can estimate it.

Maybe I got a little too into the UI in saying “so that the team sees the item.” Stating just that a
moderator can select an item to estimate or re-estimate would have been su cient, especially with a
non-functional requirement saying the current item being estimated should always be visible. (See
story #5 for more on that.)

9. As a moderator, I want to add an item to the list of items to be estimated so that we can be exible and
accommodate situations where we think of a new story while playing.
10. As a moderator, I want to edit an item in the list of items to be estimated so that I can make it better re ect
the team's understanding of the item.
11. As a moderator, I want to delete an item from the list of items to be estimated so that we can remove it and
not estimate it.

Page 25 of 32
fi
fi
fi
ffi
fl
fl
12. As a participant, I want to immediately see that an estimate has been given by a speci c estimator so that I
know who has already given an estimate and who we’re still waiting for.

This story is perhaps too vague. It’s saying that participants can see when other participants have
picked an estimate value but they should not yet be able to see that value. It would be better as a job
story:
When a participant has chosen an estimate, I want to know that they’ve chosen without seeing the
value they chose so that we can see who is and is not ready to share estimates.

13. As a participant, I want to be shown all estimates at the same time a er all estimators have given their
estimate so that I can be sure estimates are independent and not in uenced by other estimates given in the
same draw.

This is another that would be better as a job story:


When every participant has selected an estimate, all estimates are shown at the same time so that no
one is unduly in uenced by seeing someone else’s estimate before providing their own.

14. As a participant, I want to be able to change my estimate up until the last person selects a card and all are
shown so that I can change my mind based on information I hear.
15. As a participant, I want to be able to see each estimator's prior estimates for the story being estimated so
that I can see how his or her opinion has changed so I can ask questions.

Like many stories in Planning Poker, this would be better today as a job story:
When estimating an item that has had a prior draw [show of cards], I want to be able to see everyone’s
most recent estimate so that I can use that information to determine my next estimate.

16. As a moderator, I want to show all estimates immediately so that I can decide to show the estimates that
have been given even though not all estimators have given their estimate.

This story is confusing as written. The idea in Planning Poker is that each person’s estimate would be
hidden until everyone has estimated. Then all estimates would be shown at the same time.
This story is about the situation when someone is logged in and should be estimating but has perhaps
stepped away brie y. The moderator needs a way to force a ip of the cards. I’d rewrite it as:
As a moderator, I can force ip all estimates received so far so that the game can proceed even if a
participant is unavailable.

17. As a participant, I want to see who gave what estimates during the current round so that I know this when
we’re discussing the estimates.
18. As a participant, I want to be able to start a two-minute countdown timer that all participants can see so that I
can limit the time spent discussing the estimates when I think we’ve talked long enough.
19. As a participant, I want to have the two-minute timer reset itself as soon as we all play an estimate so that it's
ready for use on the next round.

Page 26 of 32
fl
fl
fl
fl
ft
fl
fi
This probably wasn’t needed. If I have a so ware timer that hasn’t run down to 0:00 yet, I can just
restart the timer. If it was needed, it should have been an acceptance criteria of the prior story just
saying that the timer can be started at any time.

20. As a moderator, I want to accept the average of all estimates so that we can move on to the next item when
we agree.

Decent story except that “average” should have been de ned.

21. As a moderator, I want to have the "estimate" eld lled in automatically if all estimators show the same card
so that I can accept it more quickly.

De nitely specifying too much of the user interface here.

22. As a moderator, I want to enter the agreed-upon estimate so that we can move on to the next item when we
agree.

As with the prior story, this is too much UI detail. The basic concept is this: A er participants show
cards, the moderator at some point needs to record the ultimately selected estimate. Naturally that
gets typed somewhere, or picked from a list or some similar mechanism. These two stories should not
imply how or where that is done.

23. As a participant, I want to scroll back through the stories and estimates from prior draws [displays of all cards]
so that I can use this information when I estimate the item of the current draw.

The “scroll back” is too much UI detail, but I don’t think it was written as an actual UI instruction.

24. As a moderator, I want to estimate a story we estimated earlier in the session again so that we can give a new
estimate if we feel di erent about the story a er estimating other related stories.

Needlessly wordy. This is just saying that the moderator can pick any story to be the next to be
estimated, even one that was previously estimated. This should have been an acceptance criterion to
story #8 about selecting an item to estimate. (Technically that story implies it already as it says the
item can be re-estimated.)

25. As a participant, I want to always have the cards in the same order across multiple draws so that it's easy to
compare estimates.
26. As a moderator, I want to import stories (some of which may have estimates already) from a spreadsheet so
that I don't have to copy and paste each individual story.

Specifying that the import is from a spreadsheet should have been le out of the story. When the
developers built this, we agreed to use a CSV le (exported from a spreadsheet).

Page 27 of 32
fi
ff
ft
ft
fi
fi
fi
fi
ft
ft
The story should have included acceptance criteria about the possible columns and formatting of
those.

27. As a moderator, I want to copy/paste stories (some of which may have estimates already) from a
spreadsheet so that I can get started more quickly.

This sounds like it may have too much UI detail. However, we’d tested this as part of the prior story
about importing, and we knew we wanted to support copy / paste directly from Excel and Google
Sheets. I’m going to say this story is OK except that that it could have been improved with acceptance
criteria.

Archive
28. As a moderator, I want to browse through previous games so that I can nd the previous game I’m looking
for.
29. As a moderator, I want to view a transcript of a game so that I can see the stories and estimates.

The next two stories (HTML export and CSV export) should have just been acceptance criteria for this
story.

30. As a moderator, I want to export a transcript of a game as a HTML le so that I can save the stories and
estimates locally.
31. As a moderator, I want to export a transcript of a game as a CSV le so that I can further process the stories
and estimates.
32. As a moderator, I want to delete a game so that stories and estimates for this game are no longer stored.

Account
33. As a moderator, I want to create an account for the application by entering my name, email address, a
password and a username so that I can start using the application.

The details here should have been listed as acceptance criteria.

34. As a moderator, I want to log in using my account name and password so that I can start using the
application.
35. As a moderator, I want to change my account details so that I can keep my account details up-to-date.

The account details that are changeable by a moderator should be included as acceptance criteria at
some point. If this story won’t be done for a while, it’s ne as is. But those details will be needed
eventually.

Page 28 of 32
fi
fi
fi
fi
36. As a moderator, I want to delete my account so that account information and games are no longer stored.

I’m not sure the so-that clause here is the best. There’s already a backlog item about deleting games. I
think better would be:
As a moderator, I can delete my account so that my information is no longer stored.

37. As a moderator, I want to see dates and times in my local timezone so that I don't have to do timezone
conversion myself.

Localization such as this would have been better as a non-functional requirement.

38. As a moderator, I want to get a password reminder by email so that I can get back to using the application
when I've forgotten my password.

This would be better if it did not assume how a user would regain access. However, back when this
application was developed (2004), emailing password reminders was the norm. A better version would
be a job story:
When I’ve forgotten my account credentials, I can regain access to my account so that I can continue
using the site.
With “regain access” this version is still a little clunky. But I didn’t want to say “recover my credentials”
because that implies a solution that keeps the current credentials in place, which may or may not be
what the developers implement.
Despite being a little clunky, I think “regain access” conveys the idea. And it will certainly lead to the
right discussion between developers and product owner.

39. As a moderator, I want to select whether to have the team estimate with {0, 1/2, 1, 2, 3, 5, 8, etc.} or {0, 1, 2, 4,
8, 16, 32, etc.} so that so that the team can use either the modi ed Fibonacci sequence or powers of 2.

Even at this time, these were accepted, common sequences for estimating so specifying them isn’t
being too prescriptive. It would have been nice to let the moderator de ne any sequence, but that
would be an additional story.
Additionally, the “so-that” is weak as it just repeats what the sequences are. I’d change it along the
lines of “...so that the team can use the sequence they prefer.”
Finally, it’s not clear when this occurs. Is it when a game is set up? During the game? Can it be
changed during a game? Changing to a job story would have made that more clear:
When creating a new game, I can select the estimating sequence to use so that the team can use the
sequence they prefer.
Acceptance criteria:
• 0, 1, 2, 3, 5, 8,13
• 0, 1, 2, 4, 8, 16

Page 29 of 32
fi
fi
40. As a participant, I want to have a small thumbnail photo displayed near where my cards are played so that the
game is more personal because I see who I'm estimating with.

This is de nitely too much user interface detail. More should have been le up to the UX designer as
with a story such as:
When participating in a game, I can see who else is estimating and their estimates.
Acceptance Criteria:
• Minimally, show each participant’s initials near the value they select.
• Perhaps better: Show their name.
• Bonus points if you can show a photo or little avatar.
“Bonus points” doesn’t refer to story points. It’s just saying the designer (or team, in general, if without
a speci c designer) earns psychic bonus points if they can implement the cooler version with
graphics. Sometimes I’d express this as “Co ee’s on me if you can…”

Non-Functional
41. As a developer, I want to have written a site which is compliant with XHTML and CSS standards so that as
many people as possible can access the site and view it as intended.

When this backlog was written, I o en wrote non-functional requirements as stories themselves. I
moved away from that many years ago. While non-functionals can be stories, they are o en best just
written as statements in the same way acceptance criteria are.
This non-functional was just saying to comply with common web standards. Note that this site was a
couple of years before even Google Maps. A lot of companies were doing strange things to create
more interactive websites. I’d outsourced development of this project to a company. Because I hadn’t
explicitly prohibited it, their rst version ran only on Internet Explorer and required some strange add-
ons.

42. As a developer, I want to have a list of de nitions for commonly used terms so that everyone working on the
project can understand each other more easily.

A very weird story. I think I wrote this to try to reduce confusion on terms between hardcore (real)
poker players and non-players as well as between native and non-native English speakers. The result
of this was just a small glossary of terms like game, draw, ip, and so on.

43. As a developer, I want to have created database indexes so that the queries run as fast as possible.

I have no idea why this was included in the backlog.

Page 30 of 32
fi
fi
fi
ft
fi
ff
fl
ft
ft
44. As a user, I want to be able to use Unicode so that I can use any language I like.

A good example of why I no longer write this type of requirement as a user story.

45. As a developer, I want to have the application function correctly in Internet Explorer 6 and 7, Firefox 1.5 and
2, and Safari 2 so that as many people as possible can fully use the application.

This should just be listed as a non-functional requirement rather than written as a story. And it should
have said something about staying current.

46. As a user, I want to see sensible and predictable URLs so that the application feels logical and transparent.

I have no idea why this was included. And I don’t know what an “unpredictable” URL would even look
like. 🤯

47. As a developer, I want to have the site comply with the W3C accessibility guidelines where possible so that
people with accessibility issues can use the application.
48. As a user, I want to have the application respond quickly to my actions so that I don't get bored.

I remember adding this because the initial version was very slow. Remember this is back in the era
when eCommerce sites were plagued by users hitting buy buttons twice because everything was so
slow back then.

49. As a user, I want to have nice error pages when something goes wrong so that I can trust the system and its
developers.

I remember adding this when the team tried to convince me that dumping Java errors on the screen
would be useful for users in reporting bugs. No product owner should have to write a story (or non-
functional) like this. It’s just expected that a system handles errors gracefully.

50. As a Researcher, I want results to be stored in a non-identi able way so that I can study the data to see things
like whether estimates converged around the rst opinion given by "estimator A" for example.

Hey, one of these stories in this section isn’t too bad. 😂 This story is just saying that we wanted
anonymized data around how many draws it took to agree, how far apart rst estimates were, and so
on. Those should be listed as acceptance criteria and they were as this story moved toward the top of
the backlog.

Page 31 of 32
fi
fi
fi
51. As an admin, I want to be able to see some metrics on use of the game so that I can see how much it is being
used.

This story needs acceptance criteria. Those were eventually added. They were things like: largest
game played in a period, mean and median number of players, average number of stories estimated
in a game, and so on.

52. As a moderator, I want to invite up to 15 estimators so that we can play with large but not immense teams.

Another good example of why I don’t recommend stories these days for non-functionals. This is a
long-winded way of saying, “Support up to 15 estimators per game.”

Looking for more on user stories?


Checkout Mike’s video course, Better User Stories.
https://www.betteruserstories.com

Page 32 of 32

You might also like