How to Write Your First User Story
Write clear user stories with a common format, testable acceptance criteria, and examples of mistakes to avoid.
User stories describe who needs something, what they need, and why.
This guide covers the user story format, acceptance criteria, and common mistakes when describing user needs.
What is a user story?
A user story commonly starts with a short statement that explains:
- WHO needs something (a real person)
- WHAT they need (their goal)
- WHY they need it (the value)
The statement gives the team a starting point for discussing the need. Supporting details and acceptance criteria clarify the scope.
Example: ordering lunch
- Prescriptive: "I want you to use whole wheat bread, slice tomatoes 4mm thick, apply 15g of mayo..."
- User-focused: "I need a healthy lunch that I can eat quickly during my meeting"
Example: a software feature
- Prescriptive: "Create a blue button that calls API endpoint /reset with POST method..."
- User-focused: "As a forgetful user, I want to reset my password, so that I can access my account again"
The user story format
A common user story template is:
As a [type of user] I want [their goal] So that [the benefit they get]
What the format captures
The three parts identify the user, their goal, and the benefit. Engineering can use that intent when discussing the implementation.
Write your first story
Step 1: Think of an app you used today. Pick one annoying thing about it.
Step 2: Fill in these blanks:
- As a _________ (what kind of user are you?)
- I want _________ (what would help?)
- So that _________ (why would this matter?)
Example: "As a busy parent, I want to save my shopping list, so that I don't forget items at the store"
Compare story examples
Evolution of a Story
Attempt 1 (Too vague): "As a user, I want a button"
- Problem: What button? Why? Who needs it?
Attempt 2 (Better but prescriptive): "As a user, I want a red download button in the top right"
- Problem: That's a solution, not a need
Attempt 3 (Good!): "As a mobile user, I want to download articles, so that I can read them offline during my commute"
- Clear user, clear need, clear value
More Good Examples
E-commerce:
As a returning customer, I want to reorder my previous purchases with one click, So that I save time on routine shopping
Banking app:
As a freelancer, I want to categorize my transactions, So that I can track business expenses for taxes
Social media:
As a content creator, I want to schedule posts in advance, So that I can maintain consistent presence while traveling
Define acceptance criteria
Acceptance criteria define the outcomes engineering and QA can check to determine whether a story is complete.
Start Simple: The Checklist
A checklist is a straightforward way to record acceptance criteria.
For our password reset story:
- User receives email within 2 minutes - Link in email works for 24 hours - User can set a new password - Old password stops working - User gets confirmation
Check each criterion when reviewing whether the story meets its requirements.
What Makes Good Criteria?
Ask yourself:
- Can someone test this? (Not "system should be fast" but "page loads in 2 seconds")
- Is it clear? (Your QA tester should understand immediately)
- Does it focus on WHAT happens, not HOW? (Results, not methods)
When You're Ready: Advanced Formats
After mastering checklists, you might explore:
- Scenario format (Given-When-Then) for complex workflows1
- Rules format for validation requirements
Choose the format that makes the expected behavior easiest to review.
Review story quality
The INVEST criteria2 provide six checks for story quality:
Check whether a story is ready
- Independent: Can it be planned separately from other stories? Identify dependencies that could affect delivery.
- Negotiable: Can the team discuss and adjust the details?
- Valuable: Does it provide value to a user or customer?
- Estimable: Does the team understand it well enough to estimate the work?
- Small: Can it fit within the team’s planning period? Split it if needed.
- Testable: Can the team verify the acceptance criteria?
Red Flag Example
Story: "Implement backend infrastructure"
What's wrong?
- No user mentioned
- No value stated
- Scope is unclear
- No testable outcome is specified
A clearer story: "As a developer, I want a user authentication service, so that I can secure user accounts without building from scratch"
Prioritizing Your Stories
After writing multiple user stories, decide which to build first by using a prioritization framework to evaluate each story's value against its effort.
Advanced Topics (When You're Ready)
The following sections cover relative estimates and ways to split larger stories.
Estimating Story Size
Teams often estimate story size using "story points", relative measures of effort.
Illustrative estimates: These sizes depend on the team and its existing system.
- Base story (3 points): "User can reset password via email"
- Simpler story (1-2 points): "User can login with Google"
- Complex story (8 points): "User can enable two-factor authentication"
- Too big (20+ points): "User can export all their data" (needs splitting)
Story Splitting Patterns
When stories are too big, split them by:
- User steps in a workflow
- Different user types
- Business rules
- Data types
Common mistakes
Mistake 1: Writing for the System, Not Users
Wrong: "As the database, I want to be optimized" Right: "As a user, I want faster search results, so that I don't abandon my session"
Mistake 2: a story that is too large
Wrong: "As a user, I want a complete messaging system"
Right: Break it down:
- "As a user, I want to send text messages"
- "As a user, I want to see message history"
- "As a user, I want to know when messages are read"
Mistake 3: Telling Developers How to Code
Wrong: "As a user, I want a dropdown with 5 sorting options using React Select" Right: "As a shopper, I want to sort products by price, so that I can find deals quickly"
Mistake 4: Forgetting the "So That" (No Value)
Wrong: "As an admin, I want to see logs" Right: "As an admin, I want to see error logs, so that I can help customers faster"
Draft a story
Story template
Use this template:
As a ________________ I want ________________ So that ________________ Done when: - ________________ - ________________ - ________________
Check the focus of your draft
These phrases can help you describe the user need and value:
- "The user needs..."
- "This helps them..."
- "They can verify by..."
- "The value is..."
Check whether these phrases prescribe a solution before explaining the need:
- "The system should..."
- "Use this technology..."
- "Put a button here..."
- "The database needs..."
If they do, clarify what the user needs before specifying the solution.
Copy These Prompts
Converting Requirements to Stories:
Convert this requirement into user stories: [paste requirement] - Identify the user personas involved - Break into small, independent stories - Use the "As a... I want... So that..." format - Include 3-5 acceptance criteria for each story
Writing Acceptance Criteria:
Write acceptance criteria for this user story: [paste story] - Use Given-When-Then format - Include happy path and edge cases - Make each criterion testable - Focus on behavior, not implementation
Story Splitting:
This user story is too large for one sprint: [paste story] Split it into smaller stories using these patterns: - By user steps/workflow - By business rules - By data types - Show how the stories connect but remain independent
Estimating Story Points:
Estimate story points for these user stories: Base reference: [paste a 3-point story] Stories to estimate: [paste stories] - Compare complexity relative to base - Consider effort, uncertainty, and dependencies - Suggest if any stories need splitting
Templates and Examples
User Story Template:
STORY-ID: [JIRA/Azure ID] Title: [Short descriptive title] As a [specific user persona] I want [specific functionality] So that [business/user value] Acceptance Criteria: 1. [Specific testable criterion] 2. [Specific testable criterion] 3. [Specific testable criterion] Notes: - [Any additional context] - [Links to designs/mocks] - [Dependencies or risks]
Illustrative project example:
STORY-101: Save favorite restaurants As a regular customer I want to save my favorite restaurants So that I can quickly reorder from places I love Acceptance Criteria: - Heart icon appears on restaurant cards - Clicking heart adds/removes from favorites - Favorites appear in a dedicated "Favorites" section - Maximum of 50 favorites allowed - Favorites sync across devices - Unfavoriting removes it immediately Notes: - Design mockup: [link to Figma] - Coordinate with backend team on sync logic - Consider offline behavior as follow-up story
Working with your team
Who Writes What
- You (PM): The story and acceptance criteria
- Designer: Visual specs (linked to your story)
- Developer: Technical approach (their choice)
- QA: Test cases (based on your criteria)
Your First Week Writing Stories
Day 1-2: Write stories for features you personally use Day 3-4: Share with a developer friend for feedback Day 5: Write stories for your actual product Weekend: Review which stories were clear vs confusing
What to review with your team
- Clear user focus
- Understandable value
- Testable outcomes
- Willingness to clarify
Practice with your team
Write a story for an app you use, then share it with a developer for feedback. As you write more stories, track which ones need clarification and use that feedback to improve the next set.
Footnotes
-
North, Dan. "Introducing BDD." 2006. Dan North created the Given-When-Then format as part of Behavior-Driven Development to improve requirement clarity. ↩
-
Bill Wake, "INVEST in Good Stories, and SMART Tasks" (2003). ↩