尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

产品经理为什么不能一次性确定需求?需求变更的本质与应对

产品经理为什么不能一次性确定需求?需求变更的本质与应对 我先描述一个几乎每个互联网公司都会定期上演的场景。研发同学拿着需求文档走到产品经理工位旁边把屏幕一转“这个需求你到底想清楚没有上周说要做A这周又说改成B下周是不是还要改成C你不能一次性把需求确定好吗”业务方也在旁边补刀“对啊你怎么老是变来变去的我们业务等着上线呢。”产品经理坐在工位上一时语塞。这个场景我见过太多次甚至可以说只要你在产品、研发、运营任何一个岗位待过两年以上一定亲历过类似的对话。今天我想认真聊聊这个问题——产品经理为什么不能一次性确定好需求是产品经理能力不行是故意折腾研发还是这个岗位本身就存在某种结构性困境我的结论可能会让很多人意外“一次性确定需求”这件事本身就是一个伪命题。它不是产品经理“不想做”而是“做不到”。即便强行做到了结果往往比需求变更更可怕。这篇文章我会从需求产生的基本规律、人的认知局限、商业环境的不确定性、组织协作的博弈以及最后怎么在现实工作中跟这个“不确定性”共处一层层拆开来讲。1. 先破除一个执念“一次性确定需求”本身就是伪命题1.1 需求不是“被确定”出来的而是“被探索”出来的很多研发同学对需求的理解是需求 一份写清楚功能点、页面字段、交互逻辑、异常处理的文档。只要这份文档写得足够细、足够全开发照着做就完了做完就上线上线就完事。但这个理解把产品工作给想反了。产品经理的日常工作不是“翻译业务方的想法”而是“探索业务问题的答案”。业务方面对一个模糊的商业问题说“我想让用户更多地使用我们的App”产品经理要把这句话转化成“在首页增加一个签到入口”“优化首次启动的引导流程”“把核心功能从第三层级提升到首页Tab”这样具体可执行的动作。这个转化过程就是探索。既然是探索就意味着原始答案大概率是错的。用户会不会为了签到奖励而每天打开App首次启动引导改成三步会不会流失更多用户核心功能上浮之后广告位收入会不会下降这些问题在没有上线之前没有任何人能给出百分之百正确的答案。产品经理能做的是提出一个基于当前信息的合理假设然后用最小成本把它做出来放到真实环境里验证再根据结果调整下一步。所以你会发现所谓“需求变更”很多时候并不是产品经理出尔反尔而是探索过程中拿到了新的反馈认知升级了方案自然要跟着调整。1.2 “确定性完备”违反产品工作的基本规律我见过不少研发同学提过一个诉求麻烦需求文档写全一点把边界情况、异常流程、权限控制都写清楚我们就不会来回改了。这个诉求是合理的但它建立在另一个前提上产品经理能预见到所有边界情况和异常流程。而实际上产品经理的视野是有限的尤其是在复杂业务里。举个我自己的例子。早年做电商后台的时候运营提了个需求订单列表增加一个“导出Excel”按钮把筛选后的订单数据导出来。听起来很简单吧就这么一个功能真正做到一半的时候问题才开始浮现数据量超过10万行怎么办Excel单表最多104万行但打开10万行已经会卡死要不要做分文件导出导出的字段由谁指定如果运营只勾选了其中8个字段表头怎么生成订单金额是导出“应付金额”还是“实付金额”退款订单要不要排除如果导出过程中有新订单产生计算口径要不要锁定这些问题的数量级远超出业务方最初那一句“加个导出按钮”的信息量。产品经理不可能在需求评审当场把所有问题都预见到很多细节是做到那一步、看到真实数据、听到真实反馈之后才意识到“原来这里还有一个坑”。1.3 需求变更不是“没做好”而是产品工作进入了下一阶段换个角度想需求变更其实是一个信号它说明产品工作已经取得了阶段性进展。如果需求从来没有变过可能只有两种解释一种是这个产品根本没有真正上线、没有真实用户在用另一种是团队已经停止思考纯粹在按图纸施工即便图纸画错了也不管。前者是项目尚未启动后者是组织已经僵化。这两种状态都不健康。所以我在带团队的时候从来不把“需求是否变更”作为产品经理的考核指标。我反而会关注另一件事需求变更之后团队能不能在最短时间内调整认知、同步信息、重新排期这比“强迫需求不变”要实际得多。2. 需求变来变去的深层原因认知差与信息差2.1 业务方说不清产品经理也问不全很多人有一个误解觉得业务方或者老板应该一开始就把需求描述清楚。但真实情况是大部分业务方在提需求的时候自己也不知道最终想要什么。举个例子运营过来说“我想在首页做一个弹窗推一下新品活动。”你问他弹窗出现频率是每次启动都弹还是每天一次用户关掉之后第二天还弹不弹已购买用户要不要过滤弹窗里的商品是按销量排序还是按运营手动配置点击之后跳转到商品详情页还是活动专题页大部分运营会被你问懵因为他就只是“想搞个弹窗”根本没有经历过这些细节的推敲。这不是业务方不专业而是需求发起方往往站在业务目标和直觉层面产品经理站在功能和逻辑层面。这两者之间天然存在一层翻译损耗。产品经理的工作就是通过提问把业务目标翻译成可执行的功能定义。但问题在于提问的前提是“知道自己不知道什么”。一个刚入行的产品经理连自己漏了什么都不知道自然问不出关键问题等到研发做出来、业务方一看不对才反应过来——哦原来漏了这个。2.2 用户自己都不知道自己要什么如果说业务方说不清还只是第一层那用户层面的不确定性就更深了。亨利·福特那句“如果你问用户想要什么他们会说想要一匹更快的马”已经把这个道理讲得很透了。我见过太多产品经理在立项之初喜欢做用户调研问用户“你希望增加什么功能”用户啪啦啪啦说一堆。产品经理把用户原话整理成需求文档转手交给研发。结果做出来之后用户根本不买账因为用户说的是一回事真正使用场景里做的是另一回事。这不是用户的错也不是产品经理的错。用户表达的是显性诉求而产品要解决的是深层动机。显性诉求和深层动机之间通常会有一段距离这段距离要靠产品设计去弥补并且要在真实使用中反复验证才能逼近。指望一次性把这条路径走到位本质上是在赌赌用户表达的每一个字都是准确的赌自己的理解没有偏差。在真实世界里这种赌局的胜率低得可怜。2.3 语言表达的天然损耗口径、场景与边界条件还有一个更隐蔽的原因是语言本身的局限性。两个人讨论一个需求产品经理说“用户在支付成功后可以看到订单详情”研发理解成“支付成功之后跳转到订单详情页”产品经理想的其实是“支付成功之后弹一个对话框里面有个查看订单详情的按钮”。同一个句子两种理解做出来完全不一样。这类偏差在需求评审会上几乎不可能被发现因为它藏在人们对“看到”这个词的不同想象里。我有一次复盘一个返工项目发现源头就是需求文档里写了一句“支付页面需要做一定防护”。开发理解为加一个二次确认弹窗测试理解为校验支付金额异常产品经理实际想要的是防止用户连续点击按钮导致重复下单。三个人三种理解最后上线之后用户连点两次生成了两笔订单业务炸了。这种损耗不是说文档写细一点就能完全避免的。语言本身是有带宽上限的任何一段文字描述都无法承载完整的业务场景和交互细节。这也是为什么现在越来越多的团队倾向用原型图、交互稿、可点击Demo来代替纯文字需求文档——因为图形和交互能传递的信息密度远高于文字。但即便用上了原型也只能降低损耗不能消除损耗因为原型同样存在理解偏差。3. 商业环境与组织博弈需求是“活”的不是“死”的3.1 市场、竞品、战略变化会直接碾压原有需求前面讲的都是认知层面的原因但需求变更是由更现实的力量驱动的商业环境本身就在快速变化。一个很典型的场景年初定了今年的产品规划Q2要做一个会员成长体系。做到一半竞品突然发布了一个新功能直接命中你核心用户的痛点。这个时候你是按原计划继续做会员成长体系还是先花两周做一个应对竞品的功能几乎所有业务负责人都会选后者。于是产品经理手里的需求池马上要重新洗牌。还有一个更常见的场景公司战略调整。原来做C端流量增长的团队突然被调去做B端商业化产品原来优先级最高的“用户拉新”需求一夜之间让位给“提高付费转化”。这些都不以产品经理的意志为转移。需求的优先级本质上是对商业价值的排序而商业价值会随着市场环境实时变化。产品经理唯一能做的是持续关注这些变化及时调整需求池的排序。如果产品经理死守一个静态的规划表那不是在“确定需求”而是在“无视市场”。3.2 老板和业务方的“临时起意”其实是资源再分配我经常听到研发同学吐槽“老板拍脑袋想了一个需求就要我们马上做之前排好的计划全部打乱。”这个吐槽背后有一个被忽视的事实老板和业务方的“临时起意”往往包含了他们没有说出口的对资源的再分配意愿。当业务方说“这个功能很急能不能插个队”的时候他的潜台词是我认为这个功能的业务价值高于你当前正在做的那些需求。只不过他没有用这种理性表达方式而是用“我很着急”“老板要求的”“客户在等”来传递优先级信号。产品经理在中间起的作用不是照单全收也不是生硬拒绝而是把这个“临时起意”纳入正式的需求评审机制用统一的标准衡量它的价值、成本、风险和紧迫性然后给出一个综合判断。这个过程本身就是对不确定性的消解。但这也意味着需求池永远不可能是一个一潭死水的静态清单它更像是一个有进有出的、动态调整的蓄水池。试图让它静止下来反而违背了组织资源调度的基本规律。3.3 需求变更在组织层面的真实代价被低估了说到需求变更对研发团队的伤害这个必须承认——它确实会产生真实且巨大的成本。研发的工时评估、任务拆解、技术方案设计都是基于一个明确的需求范围展开的。需求一改意味着代码要重写、测试用例要重构、排期要重排、文档要返工。这里面不仅有“做了白做”的直接损耗更有“改来改去导致士气下降”的隐性损耗。这些代价产品经理很多时候确实低估了或者没有在“要不要变更”的决策中充分计入。但我想说的是需求变更的代价高不等于“不让需求变更”更划算。一个错误的需求被按原计划开发上线再被用户和市场验证为错误这个代价通常比中途变更大得多——因为它不仅浪费了研发成本还浪费了机会成本甚至可能因为错误功能伤害用户信任。所以问题的关键从来不是“变不变”而是“变的时候各方能不能快速对齐、及时止损”。这也是为什么我在后面会专门讲需求变更机制因为一个好的机制能把变更代价控制在可接受的范围内而一个糟糕的机制会让变更代价无限放大。4. 如果真的一次性写死了会发生什么4.1 假性确定用一份看似完整的需求稿掩盖真实问题有些团队因为内部管理要求强制产品经理在立项时输出完整的需求文档所有功能、页面、异常流程全部写死评审通过之后禁止变更。这种做法的结果是需求该不确定的还是不确定但产品经理不敢在文档里写“待定”于是只能强行编一个答案出来把“不确定”伪装成“确定”。评审会上一片祥和大家签字通过到了开发阶段问题开始暴露但是变更流程卡死了于是团队硬着头皮按错误的设计做下去最后交付一个谁都不满意的版本。这就是假性确定用一份看似严谨的文档掩盖了真实存在的认知盲区。它最大的危害不是做错功能而是让所有人误以为“我们真的想清楚了”。接下来所有的时间、资源、精力的调度都建立在这个错误地基上越走越偏越偏越难回头。4.2 瀑布式开发的教训需求冻结不等于需求正确软件工程历史上的瀑布模型其实就是“一次性确定需求”的极端代表需求分析、设计、开发、测试、发布每个阶段严格串行前一阶段结束后一阶段才能开始而且前一阶段的产出被视为“基线”轻易不能改动。瀑布模型在早期大型工程比如航空航天、军工项目中是有它的合理性的因为这些项目周期长、容错率低、物理世界和数字世界耦合深需求确实需要提前锁定。但在互联网产品领域瀑布模型被证明几乎不可用核心原因就是前面分析的那些——用户需求、市场环境、技术实现的不确定性太高了。敏捷开发取代瀑布模型成为主流本质上就是对“需求法确定”这一假设的否定。需求冻结只能保证产品按计划上线不能保证产品在市场上成功。很多团队把“按原计划上线”当成了目标本身忘了计划背后的用户价值才是目标。等产品上线之后发现没人用再回头看那份“写死了”的需求文档里面的功能点一个不少但全都指向了错误的方向——这才是真正的高成本。4.3 比变更更可怕的是“不敢变更”我在一些公司见过另一种极端情况因为变更流程太繁琐、审批链条太长各方都不敢提变更明知道需求有问题也硬着头皮往下走。这个时候需求是“确定”了但团队成员的心态变成了“出事不要找我反正是评审过的”。当一个团队进入这种状态产品就不再是面向用户的产品而变成了面向流程的交付物。产品经理不再思考用户是否满意只想着怎么让文档通过评审研发不再思考实现是否合理只想着怎么让代码对上文档测试不再思考边界是否覆盖只想着怎么让用例跑绿。所有人都在为“确定性”负责没有人为“正确性”负责。一个健康的团队需要的不是消灭变更而是让变更以合理的成本发生。这就要求产品经理敢于承认“我想错了”并要求团队愿意接受“我们提前的假设被推翻了”。这两件事在现实中都比“确定需求”难多了。5. 产品经理真实的工作机制验证式推进与渐进式细化5.1 需求澄清本身就是一个迭代过程写到这里我想正面回答一个问题既然需求永远不可能一次性确定那产品经理的工作到底是怎么开展的答案是把需求澄清变成一个持续的、分阶段的迭代过程。产品经理不需要在项目启动时交付一份“完美”的需求文档但需要在每个阶段交付“当前认知条件下最优”的需求方案并且随着信息的增加持续修正。具体来说一个复杂需求通常会经历几个阶段立项阶段明确业务目标、核心用户、预期的成功指标这时候需求文档只需要写清楚“我们为什么要做这件事”和“大概要做什么方向”。方案设计阶段输出功能地图、核心流程、关键页面原型让团队对“做成什么样”有直观理解。评审阶段针对流程分支、异常场景、数据口径进行细抠这时候很多潜在问题才会被逼出来。开发阶段进入实现环节遇到技术约束或者发现某个需求与现有系统冲突需要及时调整方案。验收阶段产品经理亲自走查把开发实现和原始目标做对比发现偏差及时修正。这个过程本身就是逐层细化、逐层澄清的。产品经理在这个过程中扮演的其实是一个“信息差收敛器”的角色做的事就是不断收集新信息、消除旧信息中的错误、把团队对目标的理解推向一致的极致状态。而这个收敛过程理想情况下应该在功能真正上线之前完成。如果没完成那就意味着开发阶段会承担更多的不确定性。5.2 优先级排序不是不明确而是没到时间产品经理经常被研发吐槽“你需求池里那几个需求都多长时间了还没想好到底做不做”这个吐槽背后的逻辑是既然你没想好为什么要把它放在池子里其实需求池里的需求分为两种一种是“已经想清楚等待排期”——这类需求已经足够明确只是交付优先级还不够高另一种是“方向大致明确但细节还没想清楚”——这类需求才是真正导致质疑的源头。对于第二种产品经理没有在最开始把它们照顾到往往是因为市面上有更紧急、更重要的事占用了注意力。产品经理的日常工作就是同时在几十个需求之间切换大部分需求的“细节完整度”取决于它的重量级。战略级项目值得投入大量时间做细化而一个小优化点先记录方向就够了。这种“分级细化”的做法与其说是“没想清楚”不如说是“聪明的精力分配”。等一个需求真正进入开发倒计时产品经理自然会投入全部精力去把它细化到位。所以在需求池里躺了很久没细化的需求不代表永远不明确只是它的“明确时刻”还没到。5.3 用原型、数据、用户反馈来“逼出”真实需求既然纯靠脑内推演永远有盲区那产品经理怎么尽可能在开发之前把不确定性降低我的经验是三条路原型验证、数据佐证、用户反馈。原型是成本最低的认知工具。与其写一千字描述“这个功能长什么样”不如用工具画一个可交互的高保真原型让业务方和研发直接点一点。大多数需求歧义在原型阶段就会暴露出来因为人在“看见”一个东西的时候比“想象”一个东西的时候更容易发现问题。数据是需求的试金石。业务方说“很多用户想要导出功能”你要先看一眼后台数据确认到底有多少人点了导出按钮、导出之后的下载转化率是多少。如果数据根本不支持那这个需求大概率只是少数人的伪需求。数据至少能帮你把一个“模糊的呼声”变成一个“可量化的判断”。用户反馈是最后一道闸门。灰度发布、A/B测试、小范围试用都是为了让真实用户替你做需求决策。一个功能到底有没有价值你说了不算业务方说了不算用户的使用行为才算。产品经理不是先知而是一个“用低成本实验换取高正确率”的决策者。想明白这一点很多关于需求确定的焦虑都会消散。6. 给研发、业务方、产品经理的实操建议6.1 研发视角如何减少“需求反复”带来的返工如果你是一个被需求反复折磨的研发我不劝你“理解万岁”因为那不公平。但有几个实操建议可以帮你把伤害降到最低。第一在技术方案设计时主动预留扩展性。比如某个字段状态位当前业务只有两种状态但你可以主动设计成枚举类型而不是布尔类型——将来加状态只是加一种取值不用改表结构。这类设计不增加多少工作量但能极大吸收需求变更的冲击。第二把“需求模糊”挡在排期之前。评审会上发现需求有不明确的地方当场指出来不要默认“产品经理没提就是没有”更不要自己脑补一个实现方案。研发在评审时多问一句“如果完全没想好那这里我按自己的理解做了”往往能避免后续返工。如果产品经理回答不上来那就如实把“待确认”写进会议记录并约定一个确认时间。第三推动产品经理把“验收标准”写清楚。你不需要产品经理定义一个功能的所有细节但至少要有明确的验收标准满足什么条件算完成异常时怎么表现数据怎么核对有验收标准做底座开发过程中遇到小偏差就有一个校准的锚点不需要每次都要拉会。还有一个我自己的体会尽量把高风险、高不确定性的部分放在一个迭代的前端开发把稳定的核心逻辑放在后端。因为前端改起来成本低、周期短后端的数据模型和接口一旦确定返工成本就是几何级增长。这个顺序安排能在一定程度上用技术手段消化需求变化。6.2 业务方视角如何在提需求阶段就减少信息损耗业务方经常觉得自己是“提需求的人”需求变更是产品经理的问题。但说实话业务方提需求的质量直接决定了变更的概率。给业务方的建议也很简单提需求的时候多描述业务场景和业务目标少直接给功能方案。你说“我想要首页弹窗推新品”不如说“我想提高新品在首页的曝光量”。前者已经限定死了实现方式——弹窗可能并不是最优解后者给了产品经理更大的设计空间他可以在弹窗、Banner、信息流插卡、站内信多个方案里选一个更适合的或者组合使用。功能方案应该由产品经理基于业务目标来设计而不是由业务方代劳。另外业务方在提需求时最好能提供一个“反面案例”如果不做这个功能用户会发生什么业务会损失什么这个问题的答案比“我觉得这个功能很好”更硬核也更方便产品经理和研发理解需求的真实分量。如果你是业务方的负责人我还建议你建立一个内部需求收集机制把团队里的需求和反馈集中到一个池子里由一个人统一对接产品经理而不是每个人都直接找产品经理说“很急”。这样既减少信息损耗也方便产品经理统一排优先级而不是被各方催得团团转。6.3 产品经理视角建立需求变更机制升级沟通工具最后是产品经理自己的功课。既然需求变更不可消灭那就要把它管理起来。第一永远保留“需求版本记录”。每一次需求变化都要完整记录变更时间、变更原因、变更前后对比、涉及范围、受影响的排期和成本。这不是为了追责而是为了让所有干系人能看到“需求为什么会走到今天这一步”。有了版本记录研发同学在质疑“为什么又改了”的时候你能拿出来的是客观的变更链而不是一句无力的“业务方改的”。第二需求文档里明确标注“强制项”和“可选项”。这是减少变更冲击非常有效的手段。把核心的业务规则、数据口径、安全边界划为强制项把展示样式、交互细节、非核心场景划为可选项。宁可强制项少而精、反复确认也不要把所有细节一把抓成大而全的强约束。这样即使后续要调整调整的往往局限于可选项研发心里有数返工范围也可控。第三需求评审会不要只开一次。大型需求建议分两到三轮评审第一轮对齐方向和范围第二轮细抠功能和流程第三轮确认异常场景和验收标准。每轮参会人可以不完全相同但每一轮都要有书面结论。跨越多个迭代的需求还要在每个迭代开始前做“需求覆盖评审”防止需求沉淀太久之后出现理解漂移。第四敢于在需求不确定的时候说“我先不做”。很多产品经理是想通过“答应做”来讨好业务方结果项目启动之后细节迟迟定不下来反而把大家都拖下水。成熟的判断力不是“什么都敢接”而是“知道现在做什么最有价值”。如果需求当前的信息密度不足以支撑启动开发那就如实说给一个继续调研的周期效果通常比硬扛着开工好得多。我个人在管理复杂项目时还有一个习惯每个关键需求都配一个“决策日志”记录每一次选择的原因。这个日志不追求格式规范也不需要给所有人看但它在未来某天需求回滚或者被质疑的时候能清晰地告诉我“你当时是因为什么而选了这条路。”很多产品经理在需求变更时说不出个所以然不是因为脑子不清醒而是因为当时的决策语境已经模糊了。把决策记录下来就是对抗组织决策失忆最简单的方法。写过几千份需求文档、带过几十个项目之后我越来越确信一件事产品经理的核心竞争力从来不是“把需求一次性写对”而是在不确定性中持续做出高质量决策的能力。需求会变市场会变用户会变唯一不变的是团队需要有人始终站在信息最前沿把变化翻译成可执行的动作让每一个参与者都能理解“我们为什么走到这里接下来要去哪里”。这不是一份理想的职业画像而是每天真实发生在每一个产品经理身上的工作日常。如果一个产品经理能让你觉得“需求终于稳定了”那通常不是因为他把所有问题都想到了而是因为他已经成功地把不确定性挡在了你看不见的地方。
返回列表