← thisisyazid.comArticles › User storiesENBM한국어
Agile and Scrum

Writing user stories: who, what and why

A user story is a small piece of work described from the point of view of the person who benefits from it. This guide breaks down the "As a…, I want…, so that…" template, explains the INVEST checklist for good stories, and shows how to split a big idea into stories a team can finish. About 12 minutes to read.

📇User storyA short description of something a user needs, and why. A reminder to have a conversation, not a full specification.
🧩The templateAs a who, I want what, so that why. Three parts, each with a job.
✅INVESTIndependent, Negotiable, Valuable, Estimable, Small, Testable. Six checks for a good story.
🎯Acceptance criteriaThe conditions that must be true for the story to be done. They make it testable.
Part 1

What is a user story?

A user story describes a need in everyday words, from the user's side of the screen. It deliberately leaves out how to build it. That is worked out together, by the people who will build it, in conversation with the people who need it.

A well-known way to remember this is Ron Jeffries' three Cs:

1. CardThe story is short enough to fit on an index card. It is a placeholder, not the whole story.
→
2. ConversationThe team and the Product Owner talk it through: questions, examples, edge cases, ideas.
→
3. ConfirmationAcceptance criteria record what was agreed, so everyone knows when it is done.

Do I have to use user stories? No. The Scrum Guide only asks for a Product Backlog of clear items. User stories are a popular way to write those items because they keep the focus on people and value. A bug fix or an upgrade can stay a plain task.

Part 2

The template, broken down

Most teams use one simple sentence. Each part has a different job, and a story is only as strong as its weakest part.

A user story split into who, what and why As a clinic receptionist, I want to see today's no-shows in one list, so that I can offer those slots to patients on the waiting list. WHO a real person or role WHAT what they want to do WHY the benefit they get
Who, what and why. If you only remember one thing, remember that the "why" is the part teams most often skip, and the one that matters most.
As a…

Who

The person who gets the benefit. Be specific enough that you could go and talk to them.

  • Use a real role: clinic receptionist, first-time buyer.
  • Avoid plain "user". Which user?
  • Never "the system" or "the developer". They are not the ones who benefit.
I want…

What

What they want to be able to do, in their words, not the team's.

  • Describe the goal or action, not the screen.
  • Leave out buttons, colours and technology.
  • One thing only. An "and" usually means two stories.
So that…

Why

The benefit. It tells the team what success looks like and helps the Product Owner decide what comes first.

  • Name a real outcome: time saved, money, risk, peace of mind.
  • If you can't write the why, ask whether the story is needed.
  • The why often suggests a simpler solution.

One part at a time: weak and better

Part❌ Weak✅ Better
WhoAs a user…As a parent paying school fees…
What…I want a dropdown with saved cards on the payment page……I want to pay with a card I have used before…
Why…so that I can pay.…so that paying each term takes seconds, not a hunt for my wallet.
Part 3

INVEST: six checks for a good story

Bill Wake proposed INVEST in 2003 as a quick test of whether a story is ready to work on. Run every story past these six letters before it goes into a Sprint.

IIndependentCan it be built and released on its own?

Stories that depend on each other must be done in a fixed order, which makes planning rigid.

Fails: "Story B only works once story A is finished."

Fix: combine them, or split differently so each one delivers something usable.

NNegotiableIs there room to discuss how?

A story is a starting point for a conversation, not a contract with every detail fixed.

Fails: the story already specifies the screen layout and the database table.

Fix: keep the need, drop the design. Decide the details together.

VValuableDoes a user or the business benefit?

Every story should deliver something someone outside the team would notice and care about.

Fails: "As a developer, I want to create the database tables."

Fix: slice vertically so each story includes the bit of database, logic and screen it needs.

EEstimableCan the team size it?

If nobody can guess how big it is, something important is still unknown.

Fails: "Integrate with the new payment provider", when nobody has seen their API.

Fix: run a short, time-boxed spike to learn, then write the story.

SSmallCan it be finished in a few days?

Small stories flow through the board quickly and give feedback early. Aim for several finished per Sprint.

Fails: "As a patient, I want to manage my appointments."

Fix: split it. See Part 5.

TTestableWill we know when it is done?

If you can't say how to test it, you can't say when it is finished.

Fails: "…so that the app feels faster."

Fix: add acceptance criteria: "results appear within 2 seconds for 95% of searches."

INVEST check on one story

As a clinic receptionist, I want to see today's no-shows in one list, so that I can offer those slots to patients on the waiting list.
CheckResult
Independent✅ Uses existing appointment data. Doesn't need another story first.
Negotiable✅ Doesn't say how the list looks. A filter on the existing schedule might be enough.
Valuable✅ Empty slots get filled, so more patients are seen and less income is lost.
Estimable✅ The team knows the appointment data well.
Small✅ A few days of work. Contacting waiting patients is a separate story.
Testable✅ Yes, with the acceptance criteria in Part 4.
Part 4

Acceptance criteria: how you know it's done

Acceptance criteria are the conditions a story must meet to be accepted. They are agreed in the conversation, written on the story, and checked before it counts as done. A popular format is Given / When / Then: a starting situation, an action, and the expected result.

As a clinic receptionist, I want to see today's no-shows in one list, so that I can offer those slots to patients on the waiting list.
Given a patient was booked for 10:00 today and has not checked in When it is 10:15 Then they appear in today's no-show list with their name, slot time and phone number Given a patient on the no-show list checks in late When the receptionist marks them as arrived Then they disappear from the no-show list Given no one has missed an appointment today When the receptionist opens the list Then it says "No no-shows today"
Describe results, not clicks.Why: "they appear in the list" survives a redesign. "Click the red tab" does not.
Aim for about 3 to 7 criteria.Why: one is usually too vague. More than eight often means the story should be split.
Include the unhappy path.What if there is no data, the input is wrong, or the user changes their mind? Why: that is where most bugs live.
Keep the Definition of Done separate.Shared rules like "code reviewed, tested, deployed" apply to every story, so don't repeat them. Why: criteria should only say what is special about this story.
Part 5

Breaking a big story down

Big ideas usually start too large to finish in a Sprint. A story that big is often called an epic. The aim is to cut it into small stories that each still deliver something real: thin slices through the whole cake, not separate layers. The slicing and sizing article covers the technique in more depth.

The epic

As a patient, I want to book a clinic appointment online, so that I don't have to call during office hours.

A good goal, but far too big: it covers choosing a doctor, finding a time, confirming, paying, reminders, cancelling and rescheduling. Here it is broken down:

An epic for online booking split into six smaller user stories, released in three rounds EPIC: book a clinic appointment online too big for one Sprint Release 1: book the basics Release 2: change of plans Release 3: nice to have 1. See free slots forone GP, this weeksimplest path thatstill has value 2. Book a slot and geta confirmation emailcompletes the corejourney 3. Cancel a bookingup to 24 h beforefrees the slot forsomeone else 4. Reschedule toanother free slotbuilds on 1 to 3 5. Get an SMS reminderthe day beforefewer no-shows 6. Choose any doctoracross all clinicswidens story 1
Six stories, each one usable on its own. After stories 1 and 2, patients can already book online. Everything after that makes it better.

Ways to split, with the booking example

Split by…How it worksFrom the booking epic
Workflow stepsOne story per step of the user's journey.See slots → book → get confirmation
Simple case firstBuild the simplest version, then add the variations.One GP this week first, then any doctor, any clinic, any date
Happy path, then exceptionsMake it work when all goes well, then handle problems.Book a free slot first. "Slot taken while you were booking" comes next.
OperationsCreate, change and remove are often separate stories.Book, cancel and reschedule
User rolesDifferent people may need different versions.A patient books for themselves, then a parent books for their child
Business rulesEach rule can be its own story."Cancel up to 24 hours before" and "no more than 2 bookings a week"
Quality laterMake it work, then make it fast or polished.Basic slot list first, then "results in under 2 seconds"

Don't split by layer. "Story 1: database. Story 2: back end. Story 3: screens." None of these gives a patient anything until all three are finished, so it fails the V in INVEST. Each story should cut through every layer it needs.

The resulting stories

#User story
1As a patient, I want to see free slots for my usual GP this week, so that I can pick a time that suits me without calling.
2As a patient, I want to book a free slot and get a confirmation email, so that I know my appointment is secured.
3As a patient, I want to cancel my booking up to 24 hours before, so that I'm not charged for a visit I can't make.
4As a patient, I want to move my booking to another free slot, so that I don't have to cancel and start again.
5As a patient, I want to get an SMS reminder the day before, so that I don't forget my appointment.
6As a patient, I want to choose any doctor at any of the group's clinics, so that I can be seen sooner when my GP is fully booked.

Story 2 combines booking and confirming on purpose. A booking with no confirmation leaves the patient unsure it worked, so on its own it wouldn't be valuable.

Part 6

More examples you can learn from

Good stories from different kinds of products, each with its key acceptance criteria. Notice how each one names a real person, describes the goal without the design, and gives a reason that matters.

🛒 Online shop
As a returning customer, I want to reorder a past order in one step, so that restocking my usual groceries takes seconds.
Acceptance criteria
  • Past orders show a "reorder" option.
  • Items that are out of stock are flagged before checkout, not after.
  • Prices shown are today's, not the old ones.
🏦 Banking app
As a card holder who has lost their wallet, I want to freeze my card from the app, so that nobody can use it while I look for it.
Acceptance criteria
  • A frozen card declines new payments within 1 minute.
  • Recurring bills can still go through, if I choose.
  • I can unfreeze it myself, in the app.
🎧 Customer support
As a support agent, I want to see a customer's last 3 contacts when their chat opens, so that they don't have to explain their problem again.
Acceptance criteria
  • The last 3 contacts show with date, channel and summary.
  • New customers show "No previous contacts".
  • The history appears before the agent's first reply.
🍜 Food delivery
As a hungry customer, I want to see a realistic delivery time before I pay, so that I can decide whether to order or cook instead.
Acceptance criteria
  • The estimate is shown on the checkout page.
  • It includes the restaurant's current wait time.
  • If the estimate is over 60 minutes, a warning is shown.
👋 New joiner (HR)
As a new employee, I want to see my first-week schedule before my first day, so that I know where to go and who I'm meeting.
Acceptance criteria
  • The schedule is emailed 3 working days before the start date.
  • Each item has a time, place and contact person.
  • Changes after sending trigger an update email.
🛡️ Compliance
As a compliance officer, I want to export every admin-access change for a date range, so that I can answer an auditor's request in minutes, not days.
Acceptance criteria
  • The export lists who changed what, when, and who approved it.
  • Any date range up to 12 months can be chosen.
  • The file opens in a spreadsheet without extra steps.
Part 7

Common mistakes, and how to fix them

❌ Weak storyWhat's wrong✅ Better
"As a user, I want a dashboard."Vague who, unclear what, no why.As a sales manager, I want to see this week's deals that are at risk, so that I can step in before they are lost.
"As a developer, I want to set up the database."A technical task with no user value.Make it part of the first story that needs it. If it truly stands alone, keep it as a plain task, not a story.
"As a customer, I want a blue Submit button at the bottom right."A design decision, not a need. Not negotiable.As a customer, I want to send my form without scrolling back up, so that I don't miss the last step.
"As an admin, I want to add, edit, delete and export users."Four stories in one. Not small.Split into four: add, edit, remove and export, each with its own why.
"As a shopper, I want a faster checkout."Not testable: how fast is fast?Same story, plus the criterion "checkout completes in 3 steps or fewer, under 60 seconds for a returning customer".
"Payment page"Just a label, not a story. No who, what or why.Write the need behind it, for example the school-fees story in Part 2.
Before a story enters the Sprint

The 60-second story checklist

Copy this template

As a ______________________ (who: a real role) I want ______________________ (what: the goal, not the design) so that ______________________ (why: the benefit) Acceptance criteria Given ____________ When ____________ Then ____________ Given ____________ When ____________ Then ____________ Given ____________ When ____________ Then ____________

Read next

All articles →