第一章 需求黑洞:为什么你的项目总在返工?

说实话,我做了十几年项目,最怕的不是技术难题,而是需求。

技术难题再难,总有解法。但需求这东西,就像个无底洞。你永远不知道下一秒会冒出什么新要求。我见过太多团队,代码写了一半,产品经理跑过来说:「客户觉得这个功能不够好,我们改一下吧。」

这一改,就是三天。改完第三天,客户又说:「嗯,还是原来的好。」

你想想看,这种场景是不是很熟悉?

1.1 需求黑洞的三种典型症状

需求黑洞不是一天形成的。它通常有三个阶段,我管它叫「三不」:

  • 需求不明确——客户说「我要一个智能系统」,但什么是「智能」?没人说得清。
  • 需求频繁变更——今天说要A,明天说要B,后天说A+B。
  • 需求文档缺失——全靠口头沟通,出了问题谁也说不清楚。

我在一个电商项目中遇到过这种情况。客户说「我要一个推荐系统」,我们团队花了两个月做了一套基于协同过滤的算法。结果上线前一天,客户说:「不对,我要的是基于内容的推荐。」

两个月白干了。

为什么会这样?因为一开始的需求描述,只有一句话。没有文档,没有原型,没有确认流程。

1.2 需求黑洞的根源分析

说白了,需求黑洞的本质是信息不对称。客户以为自己说清楚了,你以为自己听懂了。但中间隔着一层「我以为」。我画了一张图,你看看就明白了:

客户想法 (模糊的) 开发理解 (偏差的) 信息衰减 口头沟通 (无记录) 返工重做 (成本翻倍) 需求变更

你看,从客户想法到开发理解,中间至少衰减了30%的信息。再加上没有文档记录,口头沟通又衰减30%。最后落到代码里的,可能只有客户原始想法的40%。

这就是返工的根源。

1.3 我的实战解法:需求冻结三板斧

我这些年总结了一套方法,叫「需求冻结三板斧」。说白了就是三个步骤:

  1. 写下来——所有需求必须形成文档,哪怕是一页纸。
  2. 画出来——用原型图、流程图把需求可视化。
  3. 签下来——关键节点必须客户签字确认。

核心原则:没有文档的需求,等于不存在。没有确认的变更,等于没发生。

我习惯在每个项目启动时,先做一次「需求澄清会」。会上我会问三个问题:

  • 这个功能解决什么问题?
  • 用户是谁?他们怎么用?
  • 不做这个功能会怎样?

你别说,第三个问题特别管用。很多需求一问这个,客户自己就放弃了。

1.4 需求变更管理流程

需求变更是躲不掉的。但我们可以管理它。我设计了一个简单的变更流程:

步骤 动作 产出物 责任人
1 提出变更请求 变更申请单 需求方
2 评估影响范围 影响分析报告 技术负责人
3 评估工作量 工时估算表 项目经理
4 变更评审会 评审纪要 变更控制委员会
5 确认实施 变更确认书 双方签字

我曾经在一个项目中严格执行这个流程。客户一开始很不习惯,觉得太麻烦。但三个月后,客户主动跟我说:「你们这个流程好,至少我们知道每次变更要花多少钱了。」

小技巧:变更申请单上一定要加一栏「不变更的风险」。很多时候客户看到「不变更也没啥大问题」,就放弃了。

1.5 需求文档的「三页纸」原则

很多人觉得写需求文档很痛苦。我理解。所以我提倡「三页纸」原则:

  • 第一页:一句话说清楚项目目标
  • 第二页:核心功能列表(不超过10条)
  • 第三页:关键用户场景(3-5个)

别小看这三页纸。我见过太多项目,连第一页都写不出来。你想想看,连项目目标都说不清楚,后面怎么可能不返工?

注意:需求文档不是越厚越好。我见过50页的需求文档,最后没人看。三页纸,重点突出,大家才愿意读。

1.6 避坑指南

最后,分享几个我踩过的坑:

  • 不要相信「先做出来看看」——这句话背后意味着「我也不知道要什么」。
  • 不要用口头确认替代书面确认——人的记忆是会骗人的。
  • 不要跳过原型验证——一个可点击的原型,胜过十页需求文档。

我曾经因为一个口头确认,多花了三周时间。客户说「这个功能先这样吧」,我以为他满意了。结果验收的时候他说:「我当时说先这样,意思是先放着,后面再改。」

嗯,从那以后,所有确认必须邮件回复。没有邮件,就当没说过。

好了,这一章就到这里。下一章我们聊聊「技术债务」——那个你欠下的,迟早要还的东西。