需求清单写到“开发人员能据此判断做什么、不做什么、做到什么程度”就够了,不必细到每个按钮的颜色值,也不能只写“做一个企业官网”。判断标准是:清单里每一条都能对应一个可验收的结果,并且不依赖口头补充。
假设你要做一个面向本地客户的服务展示站,最初只写了三行需求:展示服务、能留言、手机上好看。这三行不是需求清单,而是目标。把它们展开时,容易走向两个极端:一是继续停留在口号层,二是把整站视觉稿提前写完。更合适的做法是按“页面、内容、功能、约束”四类拆到可判断的程度。
例如“能留言”可以写成:访客在服务详情页填写姓名、联系方式、需求描述并提交;提交后页面显示成功提示;你能在后台看到留言列表,并标记已处理。这里没有规定输入框宽度,也没有规定提示语的具体措辞,但开发和验收都能据此工作。假设项目要求“留言必须发送到指定邮箱”,那就要单独写清邮箱地址由谁提供、是否同时保留后台记录;这类信息如果漏写,开发阶段一定会回头确认。
需求清单的颗粒度,本质上是在两种方案之间选择。
选择依据不是项目大小,而是“变更成本由谁承担”。如果每次补充需求都要重新排期,就偏向方案一;如果补充需求只影响局部样式或文案,方案二更实际。无论选哪种,以下内容都不能省:页面清单、每页的核心目的、必须有的功能、内容由谁提供、上线前由谁验收。
把上面的假设项目写成清单,可以按以下顺序组织。每一项都应是可检查的陈述,而不是形容词。
常见错误是把“参考某个网站”当成需求。参考只能说明风格倾向,不能替代功能与内容判断。另一个常见错误是把技术选型写进需求清单,例如指定某个框架或插件;除非团队已有明确约束,否则技术选型应留给开发判断,需求清单只描述要达成的结果。
可以用一个简单检查:把清单交给没有参加前期沟通的人,让对方复述“要做什么、先做哪页、哪些不做”。如果对方能复述出主要页面、核心功能和交付责任,说明颗粒度基本合适;如果对方只能说出“做个网站”,说明还停留在目标层;如果对方开始追问按钮圆角是 4 像素还是 8 像素,说明已经写过了,这类细节可以留到设计阶段确认。
另一个检查项是“不做清单”。明确写出本期不做的功能,例如不接入在线支付、不做会员系统、不做多语言,能减少后期范围蔓延。适用条件是:这些“不做”的事项确实可能被误解为包含在内。如果团队对边界没有分歧,就不必为凑清单而罗列。
写完清单后,不要直接进入开发。安排一次逐条确认,重点问三个问题:每条需求对应哪个页面或功能;由谁提供所需内容;上线前由谁按什么标准验收。确认结果直接补进清单,再开始搭建。这样做的目的不是让文档变厚,而是让后续每一次“这个要不要做”都有据可查。