How to write user stories developers understand
A user story describes a need from the user's perspective, not a technical solution. As a client, you write it as as-a-role/I-want-goal/so-that-benefit, and add acceptance criteria that make it testable. Keep the story small and focused on what, not how. Common traps: stories that are too big, and ones that already lock in the solution.
As a client, user stories are often your main tool for talking about what you want – without having to know code. But a bad story causes more problems than it solves: it’s either so vague that the team has to guess, or so detail-controlling that it stifles better solutions. This guide shows you how to write stories developers actually understand, with examples of what works and what doesn’t.
The format: as-a/I-want/so-that
The basic template for a user story looks like this:
As a [role], I want [goal], so that [benefit].
Three parts, all necessary. The role says who the need applies to – a first-time visitor and an administrator rarely want the same thing. The goal is what the person wants to achieve. The benefit, the so-that part, explains why – and it’s the part most often forgotten and the one that matters most. The benefit helps the team understand the purpose, propose the right solution, and weigh the story against others.
Compare a weak story and a good one:
- Weak: “The user should be able to filter.” (Which user? Filter what? Why?)
- Good: “As a returning customer, I want to filter my orders by date, so that I can quickly find a past purchase I want to return.”
The second gives the team everything it needs to build the right thing – and to come up with a smarter solution than you’d thought of yourself.
Acceptance criteria make the story testable
A story without acceptance criteria is just an opinion about what “done” means. The criteria are the concrete conditions that determine whether the story has been delivered, and they let everyone see the same thing. They don’t need to be technical – they describe what should hold from the user’s perspective.
For the filtering story above, the criteria might be:
| Acceptance criterion | Why it's needed |
|---|---|
| Can filter by start and end date | Defines the feature itself |
| An empty result shows a clear message | Covers what happens when nothing matches |
| The filter can be reset | Captures a common but easily forgotten need |
Put special effort into the edges – what happens when something is empty, wrong, or unexpected. That’s where unclear stories tend to fall apart later.
Common traps to avoid
Three mistakes keep recurring when clients write stories.
Stories that are too big. “As a customer, I want to be able to manage my entire account” isn’t a story, it’s a whole feature. It can’t be estimated or finished. Break it up: update details, change password, view order history – each its own small story delivering value.
Solution-dictating stories. “Put a blue button in the top right that opens a modal” takes away the team’s chance to propose something better. You’ve decided how before you’ve said what. Describe the need instead and leave the design to the people building it.
Pseudo-technical wish lists. A story should express a business need, not try to sound technical. Dressing the need in technical terms you don’t fully own just creates misunderstandings. Write in plain language about what the user wants – that’s your strength as a client, not a weakness.
A concrete example of breaking a story down
Say you want “booking” in your app. As a single story, it’s ungraspable. Broken into smaller parts, it becomes buildable:
- As a customer, I want to see available times, so that I know when I can book.
- As a customer, I want to select a time and confirm, so that I secure my spot.
- As a customer, I want to get a confirmation, so that I know the booking went through.
- As a customer, I want to be able to cancel, so that I don’t have to call if something changes.
Now each part has a clear what and why, can be estimated and tested separately, and can also be prioritized – maybe cancellation isn’t needed in the first version. That’s the whole point: small, clear stories give you both a better build and sharper prioritization.
Writing good stories ties into defining requirements without a technical background more broadly. Want support getting started with a backlog for your project? Get in touch.
Frequently asked questions
What is a user story?
A user story is a short description of something a user wants to be able to do, phrased from the user's perspective. It captures a need and its benefit, not a technical spec. The purpose is for the team to understand what should be achieved and why, and then work out how themselves. A story is a starting point for conversation, not a finished contract.
What does the as-a/I-want/so-that format mean?
It's the standard template: 'As a [role], I want [goal], so that [benefit].' The role says who the need applies to, the goal what the person wants to achieve, and the benefit why it's worth anything. The so-that part is the most important and the one most often forgotten – it explains the purpose, which helps the team find the right solution and prioritize things against each other.
What are acceptance criteria?
Acceptance criteria are the concrete conditions that must be met for the story to count as done. They make an otherwise vague story testable: everyone can see whether the criteria are met or not. Without them, "done" becomes an opinion. They don't need to be technical – they describe what should hold from the user's point of view, for example what happens when something goes wrong.
How big should a user story be?
Small enough to be built and tested within one sprint, ideally smaller. A common beginner trap is stories that are actually whole features – they become impossible to estimate and finish. If a story is too big, split it into several smaller ones that each deliver some value. Many small, clear stories beat a few unwieldy ones.
Should the client dictate how something gets built?
No. A common trap is solution-dictating stories that have already decided the technology or interface, for example "put a blue button in the top right." That takes away the team's chance to propose a better solution. Describe the need and the benefit – what and why – and leave how to the people building it. The exception is genuine requirements, like rules or legal requirements, which belong in the criteria.