User Stories: One Sentence for Who, What, and Why
In "build a booking feature", the AI doesn't know who's booking, what they're booking, or what happens after. A user story forces you to say all three:
As a (who), I want (to do what), so that (I get what).
作为 到店顾客,
我要 在手机上选一个时间段提交预约,
为了 不用打电话也能确定我那天有位子。
作为 店员,
我要 在后台看到今天所有预约并标记「已到店」,
为了 不用再翻微信聊天记录核对。The "Not This Time" List Matters More Than the To-Do List
A real case: someone took on a mini app for a shop, and the client wanted it live in 14 days. The first thing he did wasn't write code. He sat down with the client and moved online payment, automatic payouts, complex scheduling, and loyalty points all into "not this time", keeping only a portfolio gallery, booking, channel binding, and an admin panel. Delivered in 10 days.
AI writes code fast, but you set the scope. If you don't lock it, it will very quickly build a pile of things you don't need.
第一版必做:
- 顾客:看作品、提交预约、查自己的预约
- 店员:看预约列表、标记已到店
这次不做(写进 CLAUDE.md 让 AI 也知道):
- 在线支付
- 会员积分
- 多门店
- 消息推送Before Building, Walk Through the Edge Cases
Another real case: a non-programmer used Claude Code to build his own business management system in 11 days, cutting reconciliation from 2 hours to 5 seconds. His secret was to talk through edge cases with the AI before starting each feature:
- Can a customer's WeChat ID be corrected after a typo? What happens to their past orders?
- A customer has 3 orders, 1 unpaid. Do they count as a returning customer?
- If an order is cancelled, does it still count as bad debt?
If you don't answer these, the AI answers them for you, and you won't know what it decided.
自测 · 学完检查一下
想真正动手做题、记进度、攒连胜?到互动课里练。
Which of these is a well-formed user story?
答案:As a gym member, I want to see my remaining class credits in the mini app, so that I don't have to ask at the front desk every time
The first has all three parts: role, action, motivation. The second and third have no role or motivation. The fourth has the right form but the subject is the developer; the subject of a user story is always the person using your product.
The fixed user story template is: As a ___, I want ___, so that ___. What goes in the first blank? (one word)
答案:role
The first blank is the role, meaning "who's using it". For the same feature, a customer and a shop assistant want completely different things, so decide the role first.
Ting is building a "family recipes" mini app. The first version is only for her and her mom. Which of these most belongs in "not this time"?
答案:User registration, login, and multi-user permissions
The first version has two users. Login and permissions are for "lots of strangers", and building them now only delays launch. Add, search, and save are the minimum skeleton that makes this product a product, so they must be built. The test for locking scope: without this, does the first version still work?
True or false: since AI writes code fast, the first version should include every feature you can think of. It doesn't cost you any time anyway.
答案:False
The cost isn't writing time. It's checking, fixing bugs, and having every later change accommodate all those features. The more features, the higher the odds that fixing one thing breaks three. The smaller the first version, the sooner it launches, and the sooner you learn what users actually want.
Before building a "booking time slots" feature, which of these is an edge case you must think through first?
答案:Two customers grab the same time slot at once. Who gets it?
Edge cases are "things that happen outside the normal flow": conflicts, duplicates, empty, errors. Colors, wording, and fonts are appearance and can be changed any time. If the double-booking rule isn't decided up front, it becomes a dispute after launch.
The AI asks you: "What should the page show when the to-do list is empty?" You haven't thought about it. What's the best response?
答案:Decide on the spot: show a line of gray text, "No to-dos yet. Add your first one"
Answers to edge cases must come from you. "Your call" means it decides for you and you don't know what it chose. "Not important" and "never happens" both plant a landmine for after launch: the empty state is the first thing a user sees when they open the page.