Originally, anyone on an agile team used to write User Stories to
communicate the work to be done. However, over time, largely driven by
the expansion of the Scrum framework, the
Product Owner became the primary person writing these stories and
organizing them into a product backlog. However, anyone can (and should)
write a User Story. Fábio Aguiar and I wrote our book about the Product
Backlog Building technique to help everyone on the team write good
user stories.
What's makes a good User Story?
Before I introduce the PBB canvas, it's useful to understand what
makes a good User Story. So I'll describe various heuristics that are
commonly used.
3Ws of User Story
User Story is a textual format for the concise description of a
requirement, which seeks to answer three specific questions from the
acronym known as 3Ws: Who? What? and Why?
- Who is it for?
- What is the action or activity the person accomplishes with it?
- Why will the person use it (benefit or reason)?
INVEST
In the book Extreme Programming Explored, William C. Wake shared the
acronym INVEST, where each letter represents one of the six important
characteristics of a User Story:
- Independent: One story does not depend on another.
- Negotiable: A story captures the essence of what is desired. It is not
a fixed contract. Conversations and negotiation are welcome.
- Valuable: A story clearly describes customer or user value.
- Estimable: A story provides enough information for the development
team to estimate it.
- Small: A story should be relatively small in size to complete in
the shortest possible time and fit into an iteration (Sprint),
considering the context of the team.
- Testable: A story must be clear enough that tests can be defined for
it.
A few years after this creation, Mike Cohn ended up renaming the
letter S, from small, to sized appropriately, as some people created
stories a little bigger, but suited to their context.
3Cs Model
Card: The User Story description must fit on an index card, containing
enough to identify the User Story. The most common format is:
As a «role/profile»
I want to «action/activity»
so that «benefit/reason»
Here is an example:
“As a participant, I want to register for an event so that I can attend it.”
Conversation: A User Story description should fit in an index card.
The main reason is that there isn't much room to write, which forces the
written description to be brief. Therefore, a lot
of conversation is needed to clarify doubts and detail the work needed to
implement it. Working with User Stories means accepting that
conversations about work will be ongoing, and not just placed at the
beginning when the requirement is initially set. The best documents help
people remember conversations, not replace them.
Confirmation: This is where you determine if the User Story goal is
achieved. To do this, the acceptance criteria confirms that the User
Story has been implemented correctly and successfully delivered.
Acceptance criteria must be defined for each story before the team starts
implementing it. That way, there are no surprises when checking the
completion and verifying the outcomes.
Writing stories with PBB
As seen earlier, writing a User Story basically answers three main
questions: Who? What? Why?
The “who?” refers to the persona. The “what?” refers to the work item
to build the action or activity the person needs; and the “why?” speaks
to the benefits of using it.
In the PBB book, Fábio and I share a step by step for identifying personas,
features and work items for building great User Stories via the PBB canvas.
In this article I´ll share how to fill in the canvas and write a User Story
for a digital product example. It is about the Talks Collection, a digital
product created by a regional agile community to prepare a portfolio of talks
and organize events.
Next is a description of three steps for filing up the Persona, the Features
and the Product Backlog Items blocks of the PBB canvas. I use some of the Talks Collection example
personas and features to illustrate it.
Describe the persona
A persona represents a user of the product, and so a description should speak
not only of the person’s role, but also their needs and goals. This creates a
realistic representation of the user, helping the team to describe features
from the point of view of who will use the product.
Describe the main personas from questions such as: “What is this person’s profile?
What does this person do? What does this person expect?”
Currently, it is relatively common to find discovery workshops, inceptions,
and other activities that generate artifacts and knowledge about the personas
– such as, for example, the empathy map. If this is the case, share the previously
constructed material. But remember that, at the time of PBB, the focus is on the
profile of the personas and their activities, which are necessary points for the next step.
Understand the Features
With a good understanding of the persona and their activities,
it's time to analyze each one of
them, reread them, and look for actions or interactions of the personas with the product,
so that you can represent each of these interactions as a feature.
Describe the features from a answering the following questions: the user is trying to
do something, so the product must have a feature for that. What is it? What persona issues
does this feature solve? What benefits does it bring to the persona?
Write the feature description on one big post-it, then write down the challenges and benefits
on smaller post-Its and place them next to the post-It, describing the feature.
Features are generally described at a higher level than the work items
that will appear in a development plan. Before starting
to develop a feature, it must be analyzed and its work items must be described and quantified.
In PBB Canvas, you first identify, understand, and prioritize the features, then detail them in
product backlog items.
Identify the PBIs
Product Backlog Items (PBIs) are elements that make up the product backlog. They reflect the
development work needed to improve the product and to meet customer or stakeholder needs.
In the previous step, you described the features along with their challenges and benefits.
Now it becomes necessary to break these down further to allow for smaller, more accurate items.
These are called PBIs.
To identify the respective PBIs in the product backlog, ask participants to answer the following
questions: “What is the first work item (or step) for this feature? And the second? And the next ones?”
Each PBI must represent an action performed by a user on the product. For example: 1) “Buy a book” and
2) “Add a speaker to the conference.” These actions are described in textual form to provide context
and uniquely identify the item.
Connect the blocks as a User Story
The Product Backlog Items form the basis for the list of User
Stories. You take each PBI and use the persona and features to flesh
out the typical User Story template. The figure below shows an example
of this.
Figure 6: Writing User Story with PBB
- You fill the as a section, the who, of the story with the persona
profile, written on a post-it on the Persona block of the PBB canvas.
In the case it is ´speaker´.
- You fill the I want to section, the action, with the post-it on the Product Backlog Items block of the PBB canvas.
It represents one of the steps for building the Publish work feature.
For this story it's ´perform the publication of work´
- You fill the so that section, the benefit, with one of the post-its next to the Publish work feature. It represents one of the
benefits of the feature, here ´make content available´
So the final story reads:
As a speaker
I want to perform the publication of work
so that I can make content available
After writing the core elements of the User Story, it is time to fill it up with the extra information on Acceptance criteria,
tasks, User Interface, and enablers (if any). You can do it in the Product Backlog Items area of your PBB
canvas, or start documenting it on your tool of preference for recording User Stories.
User Story example
Below you find some details about the description of three
features for the Talks Collection digital product with some User Stories, acceptance criteria, tasks and
interface:
Following are the three sample features with their respective
personas and User Stories.
Persona: Speaker
Feature 1: Publish talk
- Story 1.1: As a speaker, I want to access a workspace in order to manage talks
privately
- Story 1.2: As a speaker, I want to publish talks in order to make content available.
- Story 1.3: As a speaker, I want to link the external presentation in order to
integrate talks
Persona: Participant
Feature 2: Participate in an event
- Story 2.1: As a participant, I want to find the available event in
order to view the schedule.
- Story 2.2: As a participant, I want to register for an event in order
to attend it.
- Story 2.3: As a participant, I want to check in at the event in order
to confirm attendance.
Persona: Organizer
Feature 3: Organize event
- Story 3.1: As an organizer, I want to define the event's schedule in
order to publicize the schedule.
- Story 3.2: As an organizer, I want to promote the event in the media in
order to attract an audience.
- Story 3.3: As an organizer, I want to invite co-organizers of the event
in order to facilitate organization.
Filling out the user story
This simple template is the core of a user story, but there a number
of additional elements that are worth writing down. While the PBB Canvas
doesn't aid in these further details, it's useful here to describe them.
You can add these to the PBIs in the canvas, or use other tools for story
tracking.
Acceptance Criteria
The acceptance criteria are intended to describe how to validate a User
Story. In doing so, acceptance criteria provide a checklist that determines when a User Story
is done, complete, and working. Below is a sample User Story from the
Product Backlog Building book:
“As an account holder, I want to withdraw money at the ATM to avoid
the bank line”.
Here is a possible acceptance criteria for this context:
- The account holder with sufficient balance is able to withdraw money
from her account.
- The account holder without sufficient balance is unable to withdraw
money from her account.
- The account holder with sufficient balance cannot withdraw money from
her account if the ATM does not have enough money to withdraw.
The format presented is compared to a checklist used to verify that
the story is complete and working, that is, if it passes through all the
acceptance criteria.
Breaking User Stories into tasks
It is very common to break a User Story into even smaller pieces about
the work that must be done, by stating, “these are the tasks.” By listing
the tasks needed to build a story, the development team goes into
technical details about how the smaller pieces will be implemented.
Unlike stories, tasks do not follow a defined textual format. They are
more direct, with a very technical language, from the development team to
the development team.
A task identifies something that needs to be done, something necessary
for a story. As such, the task will not necessarily be self-contained and
will not demonstrate business value. Most of them tend to be for
programmers, described in terms used by them. Some examples of tasks are,
change input table fields, create test accounts for users, and automate
data generation scripts.
User interface
Not every work item is associated with an interface. But for items
that will be associated with some user interface (or UI), you need to
clarify that association in the context of the User Story.
An interface can be described in a few ways: sketch (or simple
drawings on paper), wireframe, mockup, or prototype. The way to describe
it varies from team to team, depending on the team culture and the time
spent to detail it.
A question that arises is how much of the interface needs to be defined to
start working on the story? The answer is basically the team's agreement to
decide if the story is ready from a UI point of view. The most important thing
is that the group is aligned and comfortable with the work to be done.
Enabler
Sometimes writing a specific story can be difficult. As much as you try
to use the INVEST and 3Ws techniques as guides, for some cases, you still
can't write it satisfactorily. If this happens, try to see if you are
dealing with one of these two cases:
- The story relies on some previous study; or
- The story relies on something very technical that takes
considerable effort.
In both cases, you can either create a bigger story and consider this
a part of it, or you can break it down into something apart: an enabler.
This “something apart” is called the enabler because it is not adhered to
the story format. It is a work item needed to enable another story.
Exploratory Enabler
“As a developer, I want to research how asynchronous messaging works,
in order to decide how to implement chat.” This is not a story, and it
doesn't need to be described that way. This is an exploratory enabler,
needed before a User Story such as: “As an attendee, I want to send
messages in the event chat to interact with other attendees.”
This example demonstrates the need to work on an exploratory enabler –
“Research how asynchronous messaging works” – before working on the
story. An exploratory enabler performs research, background activities,
clarification, and/or choosing between options to enable effective work
on a story.
Spike is a common synonym for exploratory enabler.
Technical Enabler
Non-functional requirements, refactorings, pipeline or test
infrastructure improvements – these are some examples of activities that
sometimes take too much effort to be considered as part of a user story.
In these cases, you can describe them as technical enablers. You must
also indicate which stories depend on them. However, be very careful not
to overdo it and end up with an enabler-only backlog.
There is no need to write technical enablers in User Story format.
Instead of “As a developer, I want to migrate the automated test suite to
improve performance”, use a more direct textual format, such as: “Perform
the automated test migration.”
Example of a filled-out user story
Now, check out an example of a story the “publish talk” feature of
Talks Collection. It provides a full example of a User Story with acceptance criteria,
tasks, Ui and enablers.
User Story 1.1
As a speaker, I want to link the external presentation in
order to integrate talks.
Acceptance Criteria 1
Scenario 1: Link presentation across presentation sharing platform
Given that there is a valid link on the SlideShare platform
When I associate the external presentation link
Then It will show a preview of the presentation on the screen
Acceptance Criteria 2
Scenario 2: Associate presentation when publishing talks
Given that the presentation link is valid
When I publish the talk
Then it will show the associated presentation in the published talk details
Tasks:
- Consume the presentation endpoint.
- Create a UI to show a PDF file of the presentation.
- Create logic in the backend to link presentation with published talk.
- Change parameter to public or private link.
- Create test data to verify that the link is valid.
- Change DB to include the presentation link.
Interface Sketch
Exploratory Enabler:
Study endpoint API integration with online presentation
sharing platforms (SlideShare and Speaker Deck).
Technical Enabler:
Consume the oEmbed endpoint as a link tag in the header
so it can be automatically detected when embedding the
presentation.
Defining Ready and Done
Definition of Ready
The Definition of Ready (DoR) is the agreement between the team that
indicates when a PBI is ready to be pulled into a Sprint, that is, when
it has enough information to go into planning, execution, and delivery.
People often say, “This item is ready to start work”, and generally this
indicates that the team:
- Has the necessary information to work on the item.
- Understands the reason for the item.
- Can demonstrate the completion of the item.
- Identifies how the item composes/relates to a feature.
- Agrees that the item fits in a Sprint, or the designated time frame.
In relation to each PBI candidate for the next Sprint (or iteration of
work), the team checks the PBI Ready Checklist:
PBI ready checklist
- PBI is represented by a User Story.
- PBI is covered by acceptance criteria.
- PBI acceptance tests are identified (to be
enhanced or created)
- PBI has the necessary User Experience artifacts.
- PBI dependencies are identified (if any).
This list is an example of a checklist for DoR. Generally, teams define
and maintain their checklists, which demonstrate their preferences in
preparing the work.
Refinement of the product backlog must be continuous. The team will be
continuously working on the next candidate items, preparing them for the
next Sprint or work interaction. The use of the ready definition and the
done definition is not limited to Scrum alone; it is also a very useful
practice when working with Kanban and other agile methods.
Definition of Done
Definition of Done (DoD) is the agreement that demonstrates the
quality of the PBI produced, in which “done” confirms everyone's
satisfaction with the work performed.
DoD clarifies the understanding of the work completed as part of the
product increment. The moment a PBI meets the definition of done, it
means that the increment is ready to be released into the product.
If a PBI does not meet the DoD, it should not be released or even
featured in the Sprint Review. It must remain a work in progress (WIP)
for the team.
For each PBI considered done, the team demonstrates that the item:
PBI done checklist
- Delivers an increment of the product.
- Complies with the established acceptance criteria.
- Is documented for use.
- Adheres to coding standards.
- Maintains product performance indices.
This list is an example checklist for the DoD. Teams define and
maintain checklists, which demonstrate their preferences in job
verification.
You can download these sample DoR and DoD checklists as extra
resources from the Product Backlog Building here.