A guide to user stories
A user story is a tool used in Agile software development that maps the end user’s experience. Instead of asking development teams to create one massive project, outlining user stories breaks big projects down into actionable, bite-sized steps that are more manageable. This ultimately helps Agile teams avoid common problems with formatting, collaboration, flexibility, and momentum.
User stories are a helpful tool that ensures everything you design doesn’t just hit on technical details but also gives value to the end user. These user stories create a shared understanding between project members so everyone works toward the same goal.
In this guide, we’ll explain how user stories work, why they’re beneficial, and how to write user stories for your teams.
This post will discuss:
- What user stories are
- User story vs. use case
- Benefits of user stories
- Who should write user stories
- User story lifecycle
- How to write user stories
- User story template and examples
- How to add detail to user stories
What are user stories?
A user story is a development tool that captures features or functionality from the perspective of an end user or a customer. Agile teams write user stories on sticky notes or index cards and track them on a whiteboard — or via a digital Kanban board — to monitor progress.
The purpose of a user story is to write a very simple, clear description of each requirement. Instead of focusing on the technical details, user stories keep your team focused on what matters most — the end-user experience.
The first mention of a user story was in Kent Beck’s 1999 book Extreme Programming Explained. In 2001, Ron Jeffries expanded on Beck’s concept of user stories by adding the 3Cs framework — card, conversation, and confirmation — to user stories. Bill Wake created the INVEST checklist in 2003, which gave teams a memorable set of guidelines for writing effective user stories. Although Wake came up with the acronym, Mike Cohn’s 2004 book User Stories Applied: For Agile Software Development popularized the checklist.
Even as they gained traction among developers, user stories were deliberately kept informal. They’re written on index cards or sticky notes as a way to facilitate planning and discussion. Aesthetics don’t matter at all — instead, user stories emphasize substance and function.
Today, developers follow the INVEST acronym to write actionable user stories:
- Independent. Each user story should be independent of other stories. This way, the team can work on user stories in any order, and changes to one story won’t affect the other stories.
- Negotiable. User stories aren’t set in stone. These stories are iterative and should change as the team gathers more information.
- Valuable. The ultimate goal of the product you’re building is to deliver value to the end user. If a story isn’t valuable, it likely isn’t worth your time.
- Estimable. You should be able to roughly estimate the size of a user story so you know how to prioritize and schedule work.
- Small. Make user stories small enough that the developers can code and test them within a single iteration, usually within three days.
- Testable. Every user story should have a clear set of criteria to determine whether it’s user-ready or if it needs changes.
User story vs. use case
User stories and use cases are both helpful tools developers use to define system requirements, but they have different purposes. Both concepts detail the user experience, but these terms aren’t interchangeable. Ivar Jacobson invented the concept of use cases in the 1980s to detail a system’s behavior and the sequence of interactions required between a user and the system.
A use case often describes additional steps, like the preconditions required before the use case can begin. User stories, on the other hand, are short, simple descriptions that focus on the essence of a user’s requirement. They’re less detailed than use cases and are used more as conversation starters and collaboration tools.
Benefits of user stories
By breaking a big project into smaller user stories, it’s much easier for teams to tackle complex projects with ease. User stories also help Agile development teams:
- Eliminate confusion with a simple format. User stories are concise and non-technical, which means everyone can understand them. This simplified format removes complexity and gives everyone a clear understanding of the user’s needs.
- Keep the focus on the user. User stories help developers focus less on the features and more on the ultimate purpose of a solution, which is to help an end user.
- Enable collaboration. User stories make it much easier for team members to collaborate with each other by clarifying user needs and, in turn, streamlining the development process.
- Drive creative solutions. User stories don’t prescribe a solution — they focus on a need. This gives developers the freedom to think outside the box and create more innovative solutions that fulfill the user’s needs in the best possible way.
- Increase flexibility. User stories are incredibly flexible, so you have the freedom to adjust as you learn more about the solution or your user’s needs. This allows Agile teams to embrace change and adapt as things change.
- Create momentum. Since they’re small and actionable, user stories allow for incremental development and a steady stream of wins for your team. Developers can see their progress and achievements in real time, which only adds fuel to your team’s momentum.
Who should write user stories?
User stories are usually written during the planning phase of a project. However, sometimes it might be necessary to edit or add user stories as features are added or as requirements change.
Technically, anyone can write user stories, but product owners are typically in charge of creating and managing user stories. Since they’re in charge of the product’s vision, the product owner will write the initial user stories. Over the course of the project, members of the development team can also contribute user stories, especially if they need to break big technical steps into more manageable stories.
It isn’t unusual for stakeholders like customers or even the C-suite to contribute user stories, too, although the product manager usually has the final word.
User story lifecycle
Every user story goes through six states during a software project.
In the pending stage, you identify user stories by writing a brief description about them. There are no detailed requirements just yet. At this stage, the story sits in a backlog until the team addresses or discards it.
Once the team chooses a story, they add it to their to-do list, which means it’s ready for execution. At this stage, the team places the to-do into a sprint and adds it to their schedule.
To execute the user story, the team needs to discuss the story’s criteria. The team decides on requirements, wireframes, and storyboards to map out the finer details of the user story.
In the developing stage, the programming team codes, tests, and integrates the story, ensuring it fulfills the user’s request.
This is the testing phase. Depending on your workflows, a different developer, the product owner, or even the end user might test the solution. The goal is to confirm that the feature solves the requirements. If it doesn’t, it goes back to development until it’s confirmed.
At this point the user story has passed all tests, and the team adds it to the next release.
How to write user stories
User stories are all about simplicity. Follow these five tips to write simple but helpful user stories for your development team:
- Define “done.” A story is generally done when the user can complete the outlined task, but be sure to outline what “done” means. This will make it much easier to close the loop on each user story.
- Consider creating multiple stories. If you have multiple end users, write separate stories for each of them so you address everyone’s needs.
- Outline tasks and subtasks. Breaking a large project into smaller tasks makes it possible to delegate to-dos and allows for independent work. It also makes it much easier to track the team’s progress and output.
- Write a story for each step of a larger process. If a user story includes a complex process, break it into smaller stories. It might add more sticky notes to your board, but it makes the work much more manageable.
- Welcome and implement feedback. Agile work is all about collaboration and iteration. Adjust user stories based on feedback and data so you ultimately create a higher quality product.
It’s helpful to know how to write user stories, but if you’ve never written them before, this can still feel daunting. Let’s consider some real-life examples of good user stories.
User story template and examples
User stories are often expressed in a simple template: “As a [persona], I [want to], [so that].” The persona piece specifies who your end user is, whether that’s a busy parent shopping for baby clothes online or a busy professional who needs accounting software. The “want to” part expresses the features the persona wants to see, and the “so that” part explains the reason why the feature matters to the persona.
- As a [restaurant owner], I want to [update specials daily in my digital menu] so that [diners can see today’s specials without calling the restaurant].
- As a [registered user], I want to [be able to reset my password] so that [I can access my account without contacting customer service].
- As an [online shopper], I want to [filter products by price] so that [I can easily find the products that fit my budget].
This structure isn’t required, but it’s helpful for defining when a user story is “done.” When the solution captures the persona’s desired value, you can consider the story complete.
How to add detail to user stories
At this point, you know how to write effective user stories, but you might find that they’re still lacking some detail. There are two ways to add detail to user stories — either split up the user story into a smaller story or add acceptance criteria with the 3Cs.
For example, the user story “As a [marketing manager], I want to [preview changes to my blogs] so that [I can ensure it renders correctly]” is too broad from a development perspective. Break it into a smaller user story like “As a [marketing manager], I want to [have a preview pane in the blog publisher] so that [I can preview blog content before it goes live].”
You can also refine user stories with the 3Cs:
- Card. This is the written user story that follows the concise, written “As a [persona], I [want to] [so that]” template. At this stage, the story is just a reminder without a lot of detail.
- Conversation. This is the discussion between the team, users, and product owner. It focuses on the actual value provided to the end user, as well as more detailed technical information and testing requirements.
- Confirmation. During confirmation, the team agrees on acceptance criteria that will tell you when a story is done. This eliminates ambiguity and makes it clear whether you’ve met the brief or not.
Hassle-free support for user stories
User stories make it possible for development teams to break big, intimidating projects into actionable tasks. They eliminate confusion and ensure Agile teams create solutions that end users find valuable.
When you’re ready to get started, explore solutions that help you exceed your users’ expectations. Adobe Workfront makes your goals visible, so the team can prioritize work, track progress, and measure results. It’s an all-in-one solution that lets you see user stories, sprint progress, and burndown charts in an intuitive dashboard.