麦式参考 MickerBook Reference

范围蔓延

Scope Creep

也常被叫作:需求膨胀做着做着变大了加一点而已顺手加个功能越做越多

你可能会这么说

「说好做三件事,做着做着变成了十件事,还停不下来。」

范围蔓延 Scope Creep

需求在没人明确同意的情况下悄悄变大:每加一点都「很快」,合起来就是没完没了。

范围蔓延就是「说好的范围,在没人明确同意的情况下慢慢变大」。典型过程:本来要做「上传照片出对比图」,做到一半你说「顺手加个登录吧」,AI 说「排行榜也不难」,朋友说「收藏功能用户肯定想要」——每一个单看都合理,合起来第一版拖了一个月,而核心问题一个都没多验证。

和 AI 协作时,范围蔓延有个特别的放大器:AI 生成功能的成本几乎是零,它会主动往里加。你问「能不能做个注册」,它给你做完整账号体系;你说「加个分享」,它给你加社交分享、邀请链接、统计后台。它不是故意使坏,是它默认「做得多等于做得好」。你不拦,它就长大。

防蔓延不靠意志力,靠两件可观察的事。第一,开工前把范围写下来(参见 PRD 和验收标准),之后每多一个功能,都要有「谁同意加的、为什么加」的记录。第二,加功能前先问一句「它帮我验证核心问题吗」,不是就拒绝或写进「以后再说」。蔓延不可怕,可怕的是蔓延了还不知道——所以每次听到「快做完了」,就翻出原始清单对一遍,数一数多了几项。

长什么样 真实可交互,不是截图

✕ 蔓延中的需求上传照片 → 出对比图 → 加登录 → 加排行榜 → 加消息通知 → 加多语言,第一版做了两个月
✓ 原始范围上传照片 → 出对比图 → 分享链接
两周上线 有人真的在用

上面每一项单独看都不大,合起来就是两个月。判断标准只有一个:它帮我验证核心问题吗?不是,就写进「以后再说」。

拆开看,里面有这几块

  1. 1
    原始基线 Baseline

    开工前写下的范围清单。没有基线,「变大」就无从谈起。

  2. 2
    增量 Increment

    每一次「顺手加一点」。单次很小,累计很大。

  3. 3
    同意记录 Approval

    每加一项:谁、什么时候、为什么同意。

  4. 4
    拒绝清单 Backlog

    主动说「这版不做」并记下来,防止它悄悄回来。

常见的有哪几种

你自己加Self-inflicted

做着做着觉得「用户肯定想要」。

用在:最常见的一种,人人都会犯

AI 顺手加AI-added

AI 把「以后再说」当成「现在做了」。

用在:没写边界时必发生

别人要求加Stakeholder

客户或朋友说「加个功能很快吧」。

用在:有甲方或合作方时

容易搞混?这样区分

范围蔓延 正常迭代 Iteration

迭代是有计划地加功能:改范围、改文档、重新排期;蔓延是无计划地加:谁都没同意,文档没改,只是代码里多了一块。判断方法:加这个功能的时候,文档改了吗、有人明确拍板了吗。

范围蔓延 功能堆积 Feature bloat

蔓延是过程(范围怎么悄悄变大);功能堆积是结果(产品塞满了没人用的功能)。蔓延不刹住,最后就会变成功能堆积。

范围蔓延 需求变更 Requirement change

需求变更可能是合理的新决定,只要重新谈范围、更新文档;蔓延是没经过决定的范围变化。关键区别是「有没有明确拍板」这一下。

什么时候用得上

做到一半想加功能

先问「它验证核心问题吗」,再决定是加还是记进「以后再说」。

AI 报告完成时

对原始清单,数一数多了几项,多的每一项问一句「谁同意加的」。

项目迟迟不完

大概率在蔓延。把每轮新增记下来,一眼就能看出在往哪长。

你可以这样跟 AI 说

直接复制下面这段,把【】里的换成你的情况。它比一句「帮我加个 X」多说清楚了:改哪里、不许动啥、做完交什么。

【现状】我们之前定的范围是:[贴原始范围清单]
【目标】请帮我守住这个范围,并且主动指出蔓延
【要求】从现在起:
  1. 我每次提新功能,先别做,回我三个问题:它解决什么问题、是不是原范围必须、能不能放进「以后再说」
  2. 你自己想到的功能,写进「以后再说」清单发我,不要直接实现
  3. 每次完成阶段性工作,对照原始清单告诉我:哪些做了、哪些没做、有没有出现清单之外的东西(有就逐条列出,说明为什么会出现)
  4. 如果我坚持要加,明确告诉我这会让[上线时间/第一版范围]有什么变化,让我拍板
【边界】「以后再说」清单里的东西默认都不做,除非我明确说做
【交付】这轮工作结束时,给我一份对比:原始范围 vs 实际做了什么;多出的每一项都标出是谁提出、什么时候、为什么

这段不是「禁止加功能」,而是把「加功能」变成一个有代价的决定:让它先给影响评估,再让你拍板。蔓延之所以发生,就是因为加功能没有代价、没有记录。

它说「做好了」,你怎么自己验

这是本站的重头戏。AI 最会的不是写代码,是说「已完成」。这一条,它通常最多做到「主路径」这层:真实用户的正常操作能走通,不靠特殊参数。

要亲眼看到这些,才算数

  • 翻出开工前的原始清单,数一数现在实际做的东西,多出几项。
  • 对每一项多出的,能说出谁、什么时候、为什么同意加的吗?说不出的就是蔓延。
  • 最近三次「快做完了」的对话,每次对照清单,看范围是不是每次都在变。
  • AI 有没有把「以后再说」清单里的东西直接实现了(没让你拍板就做了 = 蔓延)。
  • 项目超过预计时间了吗?对比原始范围和实际范围,看看推迟最多的那块是不是后加的。

它常这么糊弄你

  • 「只是加个小功能,不影响进度」——每个小功能都说不影响,合起来就是延期。让它每次先给影响评估再动手。
  • 「这个用户肯定会想要」——「用户肯定想要」是臆测不是需求。想要什么,得有真人用了再说。
  • 「按你说的范围做的,加的都是必要功能」——对一下原始清单,让它逐条指出自己加了哪几处,而不是让它总结「都是必要的」。
  • 「范围没变,只是实现方式调整」——实现方式调整不会增加页面和功能。数页面、数功能,数量变了就是范围变了。

范围蔓延的验证是过程性的:靠原始基线 + 每次对照 + 记录新增。做到真实项目的范围变化可观察、每个新增都有归属,就到了「主路径」层;想更严谨,把每次范围变更也写进验收标准。

考考你 选一个你觉得对的

做打卡功能,中途你和 AI 加了排行榜、积分、消息提醒,每个都「不费事」。这是什么?