需求不是一句「我想要个功能」
「我想要一个能导出报表的功能」——这句话听起来很具体,但真做下去会发现:导出什么格式?给谁看?多长时间导一次?数据范围是什么?每一个问题没答清楚,做出来的东西都可能不是想要的。
需求工程要做的,就是把这种一句话的想法,一步步追问到团队能动手、能验收的程度。它不是写一份厚厚的需求文档存档,而是一套不断澄清、不断对齐的过程。
需求写错或写糊,后面设计、编码、测试全都会跟着错,而且越晚发现代价越大。
本文核心知识点
- 先问问题用户是谁、要解决什么、成功长什么样。
- 用户故事一句话说清角色、行为与价值。
- 验收标准把「做完」翻译成可判断的条件。
- 会拆分大块故事切成一两周能交付的小块。
- 持续对话需求随理解加深而更新,不是一次定稿。
先分清谁是用户、要解决什么问题
拿到一个想法,第一步不是讨论怎么做,而是先问三个问题:谁在用?他现在遇到什么麻烦?他期望变成什么样?把这三件事搞清楚,方案自然会收敛。
| 问题 | 要问出来的东西 | 例子 |
|---|---|---|
| 谁是用户 | 具体角色,不是「所有人」 | 是财务,还是店长? |
| 现在的麻烦 | 他现在是怎么凑合解决的 | 手工拼 Excel 到半夜 |
| 期望的样子 | 做完后他能少做什么 | 一键导出、十分钟完事 |
很多做歪的需求,都是因为跳过了这一步,直接钻进了「怎么做」。先把问题问对,比急着动手重要得多。
用户故事:作为谁、想要什么、为了什么
用户故事是一种把需求写小、写人话的格式。它不规定界面长什么样,而是讲清楚一个角色为了什么价值,需要什么能力。
# 一个干净的用户故事长这样
作为 财务人员
我想要 一键导出本月的销售报表
以便 不用再手工拼 Excel 就能对账
# 注意三点:
# - 角色具体(财务,而不是「管理员」)
# - 行为聚焦(导出本月报表,不是「做个报表模块」)
# - 价值清楚(省掉手工对账)
故事不是合同,而是一句提醒团队一起讨论的话。它背后真正的细节,要靠评审时大家你一言我一语补齐。
验收标准:把「做完了」说清楚
开发说「做完了」,产品说「这不是我要的」,十有八九是因为「做完」没有一个共同的判断标准。验收标准就是把这句话翻译成几条能被打勾的条件。
- 正常情况:导出的报表包含本月全部已完成订单。
- 边界情况:没有数据时给出明确提示,而不是导出空表。
- 格式要求:导出为通用表格格式,财务能直接打开。
- 权限要求:只有财务角色能看到导出按钮。
# 验收标准示例(讲清「什么算做完」)
- 能按月份筛选并导出报表
- 导出文件可被表格软件正常打开
- 无数据时显示提示而非报错
- 非财务角色看不到导出入口
有了这几条,开发知道做到什么程度算完,测试知道该测什么,产品验收也不用凭感觉。
大块故事怎么切成能做完的小块
一个故事如果要做好几周,那它大概率不是一个故事,而是一坨。拆小的好处是:每块都能独立交付、独立验收,出问题也好定位。
| 大块故事 | 拆法 | 每块价值 |
|---|---|---|
| 做一整套报表中心 | 先做导出销售报表 | 立刻解决财务对账痛点 |
| 完整的订单管理 | 先做下单与查询 | 先让用户能下成单 |
| 全面的通知系统 | 先做站内消息通知 | 先打通最急的通知链路 |
拆故事不是平均切块,而是每一块都要独立给用户带来一点价值,哪怕只是很小的一步。
估算排期前,先消掉模糊地带
在还没问清楚之前就估工期,估出来的数基本是猜。能估出靠谱的数,前提是这个故事已经足够小、边界足够清楚。
# 估工期前先过一遍这几个问题
- 角色、行为、价值都说清了吗?
- 验收标准能不能一条条打勾?
- 有没有藏着没说的外部依赖?
- 拆出来的小块,能不能一周内交付?
# 任何一条答不上来,先回去补需求,别硬估。
模糊的需求配上精确的工期,是最不靠谱的组合。
需求是对话,不是一次性文档
最后要扭转一个观念:需求不是开会写一次文档就定死的东西。随着开发推进、用户试用,理解会加深,需求也会自然调整。
- 把用户故事留在看板上,团队随时能看到、能补充。
- 开发中有疑问,立刻找产品确认,不自己脑补。
- 用户反馈回来的新问题,变成新的故事进看板。
当需求变成一场持续的对话,而不是一份落灰的文档,团队做出来的东西,才会越来越贴近用户真正要解决的问题。