一、先说结论:我们不是反对故事点,我们是反对“假装在用故事点”
2023年第三季度,我们团队做了一个让敏捷教练脸色很难看的决定:全面放弃故事点估算,换回工时制。
这个决定不是拍脑袋做出的。在做出切换决策之前,我拉了团队过去6个迭代的数据,发现了一个令人尴尬的事实:我们把故事点换算成工时的准确度,比直接用历史工时数据做预估的准确度低了14个百分点。换句话说,我们花在“故事点估算”上的所有会议时间、讨论时间、计划扑克时间,不仅没有让估算更准,反而制造了一层额外的换算噪音。
这不是故事点方法论本身的问题。这是方法论与团队现实之间发生了错配。故事点设计的初衷,消除个人能力差异、聚焦相对复杂度、避免工时承诺压力,在我们团队的日常运作中,一个都没有实现。相反,它变成了一个所有人都心照不宣的表演:我们在估算会上扔扑克牌,然后各自在心里默默把点数乘以一个系数,换算成自己认为“合理”的工时。
这篇文章不是来宣判故事点死刑的。它是一份决策复盘报告:我们为什么换、怎么换、换了之后发生了什么、以及什么样的情况下你也不该死守故事点。

二、背景还原:我们的故事点,是怎么一步步变味的
先说清楚我们的团队画像,因为这直接决定了故事点是否适配。
我所在的团队是一个17人的产品研发组,包含9名后端开发、4名前端、2名测试、1名产品经理和1名Scrum Master(兼技术经理)。团队维护着一个SaaS产品的核心计费与订单模块,业务逻辑复杂度中等偏高,但需求来源相对集中,主要来自3个大客户和内部运营反馈。
我们在2021年初引入故事点估算,初衷非常正:之前用“理想人天”做估算,结果每次都被业务方理解为“承诺交付日期”,开发人员被迫预留大量缓冲,估算数字越报越大,信任度越来越低。Scrum Master建议我们用故事点来切断“估算”与“承诺”之间的直接关联,让估算回归“相对复杂度”的本质。
前三个月,一切看起来都很好。计划扑克降低了资深开发对估算的“话语权垄断”,初级开发也敢于亮出自己的点数判断。但到了第六个月,问题开始浮现。
1. “换算系数”成了房间里的大象
业务方和被我们服务的运营团队,永远需要知道“这个东西大概什么时候能上线”。你跟他们说“这个迭代我们规划了34个故事点”,对方只会问一句:“所以呢?哪天能交付?”
于是团队内部开始出现了一个不成文的换算惯例:1个故事点大约等于1.2个理想人天。这个系数从来没有被正式讨论过,没有任何文档记录,但它像病毒一样在团队中传播。每个开发在认领任务时,都会在心里算一遍:“这个是3个点,也就是大约3.6天,加上buffer就是4.5天。”
故事点最核心的设计前提,只做相对估算、不做绝对时间换算,在真实业务压力面前,脆弱得像纸一样。
2. 讨论质量在下降,而不是上升
故事点估算的标准流程是:产品经理讲解需求→团队讨论→每个人出牌→如果差异大就讨论→重新出牌。
理想情况下,这个流程能激发对需求细节的深度讨论。但现实中发生的事情是:当某个需求的点数争议较大时,讨论很快就从“这个功能到底有多复杂”滑向了“我们以前做过类似的,那个是5个点,这个看起来差不多”。估算变成了对历史点数的机械参照,而不是对当前需求复杂度的独立判断。
更致命的是,团队成员开始“策略性出牌”。如果一个人发现自己的估算总是偏高或偏低,他会在后续估算中主动调整自己的出牌策略,以“融入集体判断”。这不是团队在变聪明,这是群体思维在掩盖个人判断。
3. “标准故事”的参照系发生了漂移
故事点估算要求团队选定一个“基准故事”作为1个点或2个点的参照。我们选了一个“在订单列表页增加一个筛选条件”作为2个点的基准。
但一年之后,这个基准故事对应的技术上下文已经完全不同了。当初的筛选条件是在一个简单查询接口上改的;现在的订单列表查询已经接入了数据仓库的聚合查询,加任何一个筛选条件都可能涉及索引重建、缓存策略调整、甚至数据模型的微调。
但我们还在用同一把“尺子”量所有的东西。这把尺子自己已经变形了,我们却假装它还是直的。

三、拆解误区:关于故事点,我们犯了四个致命错误
在复盘为什么故事点在我们团队失效时,我总结了四个误区。这四个误区不是理论推导,而是我们从会议记录、迭代回顾和一对一访谈中提取出来的真实失败模式。
1. 把“复杂度”和“工作量”混为一谈
这是故事点估算中最经典也最普遍的误区。故事点理论要求估算的是复杂度(complexity)、工作量(effort)和风险(risk)的综合体,但实际讨论中,开发人员的思维本能会滑向“这个我得写多少行代码”或“这个我大概要调几个接口”。
我们团队有一个典型案例:一个“对接第三方电子发票平台”的需求。从业务角度看,逻辑清晰、步骤明确,拿到订单数据→拼装发票请求→调用第三方API→处理返回结果。复杂度不高,团队给了3个点。
但实际开发中,我们踩了三个坑:第三方API文档有5处不准确的地方需要联调验证、发票数据格式和我们的订单数据模型存在3个不一致的字段需要做转换逻辑、对方只支持同步调用但我们内部是异步架构需要做适配层。复杂度低不代表工作量和风险低。这个3个点的需求最后实际消耗了将近7个理想人天。
事后复盘,如果当初直接用“估计需要几天”的思维来讨论,开发人员会下意识地去想“我要做哪些事、每个事大概多久”,反而不会漏掉那些“看起来不复杂但很耗时间的活”。
2. 故事点成了“研发产能”的虚假指标
在没有故事点的时候,管理层问“这个月交付了多少需求”,我们还能用“上线了12个需求”来回答。引入故事点之后,管理层很快学会了问:“这个迭代完成了多少个故事点?”
然后就是灾难。团队完成的故事点数量开始被拿出来做横向对比:A团队一个迭代完成38个点,B团队只能完成22个点,是不是B团队效率低?于是B团队开始膨胀估算:原来估2个点的现在估3个,这样“完成的故事点数量”就上来了。
这不是管理层的错,这是我们没有守住“故事点不可跨团队比较”的底线。但现实是,只要组织中存在多团队协作、存在资源分配决策、存在绩效评估,故事点就不可能完全避免被拿来比较。这是方法论理想与组织现实之间的冲突,大多数团队扛不住。
3. 估算会议变成了“共识表演”
计划扑克的原始设计是聪明的:每个人同时出牌,可以避免权威人物先表态后其他人跟随。但在我们团队的实践中,这个机制逐渐失效了。
失效的方式很微妙。当一个初级开发和资深开发同时出牌,初级开发出了8个点、资深开发出了3个点,大家的注意力会立刻聚焦在初级开发身上:“你为什么觉得这么复杂?”初级开发需要为自己的判断做大量解释。如果这个解释不够有说服力(而初级开发的解释通常很难“有说服力”),团队就会倾向采纳资深开发的判断。
几次之后,初级开发学会了:先看看别人大概会出什么,不要做那个“异常值”。计划扑克从“独立判断”变成了“猜集体中位数”的游戏。
4. 忽视了估算本身的成本
我们统计过一个数据:在故事点估算机制下,每个迭代的估算相关会议(包括需求讲解、计划扑克、争议讨论、重新估算)平均耗时约4.5个小时,涉及全员参与。
17个人×4.5小时=76.5人时。一个两周迭代的总开发人时大约是17人×8小时×10天=1360人时。估算成本占到了总开发人时的约5.6%。
当我们换回工时估算后,同样的工作平均只需要1.5小时会议时间,而且是2-3个资深开发+产品经理的小范围讨论,不需要全员参与。估算成本降到了总人时的不到1%。
这不只是效率问题。当团队发现他们花了5.6%的时间在“估算”这件事上,而估算的准确度却没有明显提升时,士气会出问题。开发人员会开始质疑:“我们花这么多时间在这件事上,到底值不值?”

四、决断过程:那个让我们决定“投降”的回顾会议
决策不是一次完成的。它是一个缓慢积累、最终在某个时刻被触发的过程。
触发点发生在2023年6月的一次迭代回顾会。那个迭代我们承诺了31个故事点,最终完成了24个。这不是最差的记录,之前有一个迭代我们完成率只有61%。但这次不同的是,没有人能解释清楚为什么差了7个点。
不是“有一个紧急需求插进来”,没有。不是“某个技术难点没预料到”,也没有。就是单纯地,24个点消耗了所有人两周的时间。但按照我们的“标准换算”,24个点应该只需要大约29个理想人天,而我们实际投入了17人×10天=170人天。
差距大到离谱。这说明我们的“换算系数”已经完全失效了。
我在会上问了一个问题:“如果下个迭代,我们不用故事点,就每个人拿到任务后自己估‘你觉得这个需要几个工作日’,会发生什么?”
沉默了几秒后,一个平时不怎么说话的资深开发说了句:“那我就不用花一半的精力去想‘这个估几个点合适’,而是直接想‘这个我得做几天’。”
这句话让我意识到:故事点在我们团队,已经从“帮助思考的工具”变成了“增加认知负担的枷锁”。
会后我做了三件事:
- 数据验证:拉了过去6个迭代的历史数据,对比“故事点→工时换算”和“开发直觉工时估算”的准确度差异(就是文章开头那组数据)。
- 匿名问卷:让团队17人匿名回答“你是否认为故事点估算对你理解需求和规划工作有帮助”。结果:3人选了“有帮助”,11人选了“没什么帮助,更多是为了流程需要”,3人选了“反而增加了我的困惑”。
- 试点验证:在下一个迭代中,让两个开发小组(一组4人、一组5人)用传统工时方式做估算,另外两个小组继续用故事点。对比结果。
试点结果出来后,我们直接做了决定。用工时估算的两个小组,任务完成率分别是94%和100%;用故事点的两个小组,完成率是71%和78%。差别不是因为工时小组的人更厉害,人员是随机分配的。差别在于,工时估算让每个人对“自己要做多长时间”有了更诚实的判断,而不是在故事点的掩护下模糊掉风险。

五、切换之后:一份无滤镜的得失报告
从2023年7月开始,我们全面切换到工时估算。到现在已经超过一年,经历了大约18个迭代。下面是一份诚实到可能让敏捷原教旨主义者不舒服的得失对照报告。
1. 我们得到的东西
(1)估算会议时间缩短了70%以上
需求讲解会还在,但不再全员参与计划扑克。产品经理把需求按照优先级排好,两个Tech Lead加上产品经理开一个30-40分钟的预估会,对每个需求给出一个工时范围(不是一个精确数字,而是一个区间,比如“5-8个工作日”)。然后在下一次迭代规划会上,开发人员认领任务时,可以根据自己的理解和经验对这个范围提出调整。
整个流程的会议人时从76.5降到了20以内。省下来的时间,开发拿去写代码、做code review、写文档,哪一样都比争论“这个该估3个点还是5个点”有价值。
(2)沟通成本大幅下降
这一点是我没想到的。换成工时后,和业务方、运营团队的沟通顺畅了很多。以前是:“这个迭代我们规划了34个点,主要涵盖计费引擎优化和订单导出功能优化。”业务方听完一脸茫然。
现在是:“计费引擎优化预计3-5个工作日,订单导出预计4-6个工作日,整体两个功能预计两周内能交付测试。”业务方不需要理解什么是故事点,他们只需要知道一个时间范围来做自己的排期。
(3)个人责任感显著增强
这一点很微妙但很重要。在故事点机制下,一个需求被估了5个点,最终花了8天,没人觉得有问题,因为“5个点”和“8天”之间没有显式的对应关系,偏差被故事点这个中间层吸收了。
但在工时机制下,一个开发自己说了“这个需要4天”,如果最后花了7天,他必须解释为什么。这听起来像是增加了压力,但实际效果是:开发在估算时会更认真地想“我到底要做哪些事情、有哪些风险点”,而不是随便报一个差不多的数字然后靠故事点这个缓冲层兜底。
三个月后,个人估算准确度(实际工时÷预估工时)的中位数从故事点时期的0.62(严重低估)提升到了0.87(控制在合理偏差范围内)。
(4)阻塞问题更快暴露
在工时机制下,如果一个开发说“这个功能需要3天”,但到第二天结束时进度明显落后,Scrum Master可以在每日站会上立刻发现,因为你只有3天的时间预算,每消耗一天都是显性的进度消耗。
但在故事点机制下,一个3个点的需求和另一个5个点的需求,它们的“燃尽速度”在迭代燃尽图上看起来都是线性的,个别任务的延期被整个迭代的点数曲线抹平了,等发现时往往已经来不及调整。
2. 我们失去的东西
坦诚地说,切换不是没有代价的。
(1)需求复杂度的“结构性讨论”变少了
这是故事点流程中最有价值的部分:当团队为一个需求是3个点还是8个点争论时,往往会深挖出需求中模糊的、有歧义的、或者技术上有隐藏难点的部分。这种讨论的质量不取决于最终估出几,而在于讨论过程本身。
换工时后,这种讨论明显减少。Tech Lead在做工时预估时当然也会思考复杂度,但缺少了全团队多角度的碰撞,某些藏在细节中的坑可能没被及时发现。
我们的补偿措施是:在需求评审阶段增加了一个“技术风险识别”的环节,由Tech Lead主持,要求至少一名初级开发和一名测试参与,专门挖掘需求中可能的技术风险。这个环节不讨论工时,只讨论风险。效果还在观察中。
(2)出现了“安全估算”倾向
因为工时和个人的关联更直接,部分开发开始倾向于“安全估算”,明明觉得2天能做完,但报3天,留1天buffer。这是人性,不是缺陷。
但如果每个人都留buffer,叠加效应就会导致迭代规划看起来比实际需要的时长多了30%-40%。我们的应对方式是:把buffer从个人层面显性化到迭代层面。每个迭代规划时,不把所有人的预估工时加满到100%容量,而是预留15%的迭代buffer用于应对突发情况和估算偏差。同时鼓励开发按照“正常情况下的预估”来报,把不确定性交给迭代层面的buffer来吸收。
(3)容易滑向“微观管理”
这是最需要警惕的风险。当每个人都在用工时做承诺时,管理者很容易产生“监督进度”的冲动,你说了4天,现在已经过了2.5天,你做到哪了?
我们的Scrum Master在这一点上非常克制,坚持只跟踪不追问的原则。每日站会只问三个标准问题:昨天做了什么、今天计划做什么、有没有阻塞。如果进度有问题,在站会后私下了解,不在会上制造压力。
但这需要管理者有很强的自控力。如果团队的管理文化本身就偏向控制型,切换到工时后确实存在恶化微观管理的风险。

六、关键拐点:当团队规模超过100人时,问题又变了
上面的讨论都建立在“17人团队”的语境下。但当我们把这个经验分享给兄弟团队时,一个在300人组织里做研发负责人的朋友提醒了我一件事:小团队的药方,不一定能治大团队的病。
这让我重新审视了整个思考框架。也正因为这个原因,我开始关注像PingCode这样主要服务100人以上组织的项目管理工具,看它们在“估算”这件事上是怎么设计的,不是为了寻找“正确答案”,而是为了理解规模化带来的新变量。
在100人以上的组织中,纯粹的小团队自治式工时估算会遇到几个系统性挑战:
第一,跨团队依赖关系的可视化问题。当你只有17个人、一个产品模块时,谁依赖谁、谁在等谁的接口,在每日站会上几句话就能对齐。但当你同时有5个Scrum团队、维护着互相依赖的多个微服务时,A团队的“3天工时”承诺直接影响B团队能否按时启动联调。如果一个团队工时估算出现系统性偏差(比如习惯性低估了30%),这种偏差会沿着依赖链传播和放大。
在大规模组织中,你需要的不只是每个团队的估算数字,还需要这些数字之间的依赖关系、缓冲余量和偏差历史能被系统性地管理起来,而不是靠群消息和Excel传来传去。
第二,从“估算”到“可预测性”的升级压力。小团队换工时、提高准确度,业务方就满意了,他们能拿到一个相对靠谱的时间范围。但在大组织中,业务方不是只要“这个功能大概两周”,他们需要的是跨多个团队的交付节奏能够被预测和协调。市场部要在下个月15号上线一个活动页面,涉及的改动分布在3个团队的后端服务和2个团队的前端组件上。这5个团队的工时估算必须被汇总、校验、并且持续跟踪偏差。
这个层级的需求,已经不是“估算方法”的问题了,而是工具链能不能承载多团队协同估算和进度联动的问题。我们小团队靠一个共享表格就能管理的事,在5个团队、80个并行任务的环境下会直接崩溃。
第三,数据资产的沉淀和复用。17人团队的历史估算数据,靠Tech Lead的经验就能记住,“上次类似的功能我们做了大概几天”。但在几百人的组织里,人员流动率高、模块归属频繁调整,依赖“人脑经验”做历史参照是不稳定的。你需要的是过去12个月所有类似需求的实际工时数据能被检索和对比,让新成员也能基于数据做判断,而不是完全依赖老员工的口述。
这也是为什么我关注到PingCode在这个场景下的设计逻辑。它处理的不是“要不要用故事点”这种方法论选择问题,而是当你已经有了一套估算实践(无论是故事点还是工时),如何在多团队、多项目、多迭代的环境下让这套实践不失控。比如它的需求多级管理和迭代规划模块,本质上是在解决“跨团队依赖关系如何在估算阶段就被显性化”的问题;它的进度跟踪和燃尽图,解决的是“局部偏差如何被全局视角及时发现”的问题。
说这些不是为了推销工具,而是想表达一个观点:估算方法的选择和工具的选择是两件不同的事。小团队可以在方法论层面折腾“故事点还是工时”,然后靠人和简单的工具落地。但当团队规模越过某个临界点(我个人的经验判断是50-80人),方法论本身不再是瓶颈,承载方法论的协作基础设施才是瓶颈。

七、行动建议:在做“换不换”的决定之前,先问自己五个问题
如果读到这里,你也在考虑团队是否应该放弃故事点,以下是我从这次切换经历中提炼出的五个诊断性问题。不要跳过这些问题直接做决定。
1. 你的团队在“偷偷换算”吗?
这是最关键的诊断信号。如果团队成员(包括你自己)在拿到一个故事点估算后,脑子里会自动把它换算成天数,那么你们已经在实际上使用了工时估算,只不过加了一层中间层。这层中间层不提供任何增量价值,只是增加了换算误差。
判断方法:下次估算会结束后,私下问3个开发“你觉得这个需求大概要几天”,对比他们报的故事点。如果每个人都能不假思索地给出天数,你们的“故事点”已经名存实亡了。
行动建议:如果确诊“偷偷换算”,有三个选项,(A)承认现实,直接换工时;(B)在故事点基础上强制不做时间换算,但这需要很强的团队纪律和管理层共识;(C)保持现状,但接受换算误差的存在。我们选了A,因为B和C在我们看来都不诚实。
2. 估算的目的是“内部规划”还是“外部承诺”?
如果估算结果只需要在研发团队内部使用,用于决定迭代容量、平衡成员负载,故事点确实更好,因为它天然抵抗了“工时承诺”带来的压力。
但如果估算结果需要频繁对外(业务方、客户、其他部门)沟通时间节点,故事点会造成持续的“翻译成本”。每次翻译都会损耗信息、制造误解。
判断方法:统计上一个季度中,有多少次你需要把故事点换算成时间单位来回答外部询问。如果超过每周一次,那你们已经在做翻译工作了。
行动建议:如果外部沟通频率高,直接用时间单位更高效。如果沟通频率低,故事点的优势仍然存在。
3. 团队成员的资历分布是怎样的?
这一点很少被讨论,但它很重要。
在一个资深开发占比超过70%的团队中,工时估算非常有效,经验丰富的开发对“这个大概要多久”有很好的直觉,估算准确度高。但在一个初级开发占比超过50%的团队中,初级开发缺乏工时估算的“手感”,他们的估算偏差可能会很大。
故事点在这种情况下反而有一定的保护作用:它不要求初级开发给出精确时间判断,只需要相对判断(“这个比那个复杂2倍”比“这个需要3天”更容易让初级开发做出相对靠谱的判断)。
判断方法:拉一下团队成员的从业年限分布。如果3年以下经验的成员占比超过40%,换工时需要搭配更密集的估算辅导机制。
行动建议:初级开发占比高的团队,如果决定换工时,建议采用“资深开发预估算+初级开发复核”的双层机制,而不是让每个人独立估算。
4. 业务需求的“不确定性密度”有多高?
故事点设计的优势之一,是它天然适合需求不确定性高的项目,因为相对估算在被估对象本身发生变化时,比绝对工时更容易做调整。如果一个项目的需求频繁变动、技术方案在迭代过程中不断演进,故事点对这种“移动靶”有更好的柔性。
但如果需求相对稳定,产品经理能把需求写得足够清晰、技术方案在迭代开始前就基本确定,工时估算在这种“定点靶”场景下准确度更高。
判断方法:回顾过去三个迭代,统计“迭代中期发生需求变更或技术方案调整的任务占比”。如果超过30%,说明你们面对的是高不确定性环境。
行动建议:高不确定性环境更适合故事点或“工时区间”而非单点工时;低不确定性环境可以直接用工时。
5. 组织文化对“偏差”的容忍度有多高?
这是最根本但最难改变的因素。
如果组织文化把“估算偏差”等同于“个人能力问题”或“工作态度问题”,估少了说明你能力不够、估多了说明你想偷懒,那么无论用故事点还是工时,最终都会出问题。故事点会演变为点数博弈,工时会演变为安全估算竞赛。
如果组织文化能接受“估算本质上是对未知的预判,偏差是正常的”,那么工具的选择就是一个纯粹的技术决策,而不是政治决策。
判断方法:回忆一下,上个季度有没有人因为在估算上出现偏差而在绩效评估或管理层印象中受到负面影响。如果有,你们的问题不在方法论层面。
行动建议:先修复文化,再谈方法论。在有毒的文化里,任何估算工具都会被腐蚀。

八、工时估算的五个常见坑,以及我建议的防身术
既然选择了工时,就得把工时容易踩的坑说清楚。以下是切换一年中我们实际遇到过的五个问题,以及对应的应对机制。
1. 坑:估算变成了“精确到小数点”的虚假承诺
工时估算最危险的陷阱,就是把“预估3天”理解为“承诺72小时内交付”。一旦业务方把估算数字当成了deadline,开发团队就会被绑在一个自己设定的时间柱上。
防身术:永远用区间,不用单点。
我们的规矩是:所有对外沟通的工时估算,必须使用区间,“3-5个工作日”而不是“4天”。区间的宽度反映了不确定性:不确定性高的任务,区间宽一些(比如3-8天);确定性高的任务,区间窄一些(比如2-3天)。
这个做法在最初两个月遇到了一些阻力,业务方希望拿到“一个确定的日期”。我们用一次坦诚的沟通解决了这个问题:把过去6个月的故事点估算偏差数据和工时估算偏差数据放在一起给业务方看,说明“区间估算”并不是在推卸责任,而是更诚实地反映现实。效果出乎意料地好,业务方说“至少你们现在给的范围是我们能理解的”。
2. 坑:不同开发之间的工时“含金量”不同
同样一个需求,资深开发估3天,初级开发估7天,差了一倍多。如果把任务分配给初级开发,用初级开发的预估来做迭代规划,迭代容量会被严重压缩。如果统一用资深开发的预估来做规划,分配到初级开发的任务就会频繁延期。
防身术:建立“能力系数”,但只用于内部规划,不用于个人评估。
我们的做法是:基于过去6个月的实际工时数据,为每个开发计算一个“个人完成时间与团队基准时间的比值”。这个系数不公开,只用于Tech Lead在分配任务时判断“这个工作如果分配给A,大概会比分配给B多用多少时间”。
这个机制的伦理边界很重要:系数只用于让工作分配更合理,绝不用于绩效评估。初级开发的系数高是正常的,他们本来就是在学习阶段。如果把系数和绩效挂钩,就等于在惩罚成长。
3. 坑:“预期之外的琐碎事务”没有被计入估算
这是工时估算和故事点估算共同的敌人,但在工时体系下影响更大,因为故事点可以靠“模糊的相对性”吸收一部分琐碎事务的噪音,而工时是刚性的。
一个开发估了“5天完成登录模块重构”,但这5天里他可能还要处理线上告警、回答运营的问题、参与一个临时的技术方案讨论、review两个PR、参加一个必须去的全员会议。这些“不可规划”的事务加起来可能占掉他30%的时间。
防身术:在迭代容量规划中显性预留“不可规划时间”的比例。
我们通过三个迭代的数据统计发现,团队成员的“非编码工作时间”(包括会议、沟通、on-call响应、code review、技术调研等)平均占到了总工作时间的35%。所以在做迭代容量规划时,我们不再按照“10天×100%”来算一个人的可用工时,而是按照10天×65%来算。
这个65%的数字会根据实际情况调整,上线密集期可能降到50%,需求稳定期可能升到75%。关键是:这个比例是基于数据、显性化讨论的,而不是凭感觉决定的。
4. 坑:多任务并行导致的上下文切换损耗被低估
在故事点体系下,很少讨论“并行度”的问题。但在工时体系下,并行度直接影响估算准确度。
如果一个开发同时对3个需求做了工时估算,“需求A需要2天,需求B需要3天,需求C需要1.5天”,他心里想的是“我专注做的话需要这么多时间”。但实际上,他可能是同时推进这三个需求。上下文切换的成本没有体现在任何一个需求的估算里。
防身术:限制并行度,或者把切换损耗量化。
我们的规矩很简单:每个开发在任意时间点最多同时推进2个需求。如果一个需求因为外部依赖被阻塞,可以临时启动第3个,但阻塞解除后必须收回。
如果因为现实原因必须高并行(比如同时在维护两个版本),我们会要求开发在估算时额外增加20%-30%的切换损耗,这个数字也是我们从历史数据中算出来的。
5. 坑:让工时估算变成另一种“点数膨胀”游戏
当初用故事点时,我们遭受了“点数膨胀”的困扰。换工时后,如果没有足够的机制保障,同样的事情会以“工时膨胀”的形式重演,每个人慢慢地把自己的估计从3天抬到4天、从4天抬到5天。
防身术:定期校准,用实际数据修正估算直觉。
我们每个迭代结束后,会把每个开发的实际工时和预估工时放在一起做一个简单的对比表。这个表不用于追责,只用于帮助每个人校准自己的“估算手感”。如果你连续三个迭代都低估了30%,那说明你需要调整你的估算直觉。如果你连续三个迭代都高估了25%,同理。
这种校准需要在一个安全的心理环境下进行,开发人员需要知道,这个数据是用来帮助他们提高判断力的,不是用来评判他们表现的。一旦和安全挂钩,校准数据就会失真。

九、不同场景下的取舍:没有最优解,只有最适合当前约束的解
走完这一整段路,我越发确信一个判断:估算方法的选择不是判断题,而是一道约束条件下的优化题。
下面给出四个典型场景下的推荐选择,以及每个选择的代价。
场景一:10人以下的初创团队,需求高度不确定
推荐:故事点,但不做严格换算。用计划扑克促进需求讨论,用相对估算保持灵活性。不要浪费时间在“1个点等于多少小时”这种问题上。
代价:对外沟通时间节点时会比较模糊。如果投资人或客户要求明确的时间承诺,需要额外做沟通工作。
为什么不是工时:在这个阶段,需求本身还在快速演化,工时估算的刚性反而会限制团队的探索能力。你花30分钟估的一个“3天”可能在两天后因为方向调整而变得毫无意义。
场景二:30-80人的成长型团队,需求相对稳定,有对外交付压力
推荐:工时区间估算。用2-3人的Tech Lead小范围做预估算,用范围而非单点对外沟通。建立迭代层面的buffer机制来吸收不确定性。
代价:会损失一部分“全员参与讨论需求复杂度”的机会。需要通过其他机制(如技术风险识别会)来补偿。
为什么不是纯故事点:这个规模的团队通常已经有了对外交付的明确时间约束。故事点的“只做相对估算”在这个阶段会制造持续的沟通摩擦。
场景三:100人以上的多团队组织,维护着互相依赖的系统
推荐:混合模式。单个Scrum团队内部可以沿用自己习惯了的方法(故事点或工时),但团队之间的接口承诺和依赖管理使用工时区间。同时,项目管理工具的选择成为关键因素,你需要一个能承载多团队协同、依赖可视化和进度联动的平台。在这个阶段,工具的短板会直接转化为协作的短板。
代价:维护两套“语言”会在团队内部制造一些认知成本。团队内的新人需要同时理解故事点和工时两种逻辑。
为什么需要混合模式:纯粹的故事点在跨团队协同中会产生严重的“翻译损耗”;纯粹的工时在部分团队内部可能抑制复杂度讨论。混合模式试图取两者的长处,但代价是增加了系统的复杂度。在这个规模下,PingCode这类工具的价值在于它能同时承载两种估算模式的数据,而不强制团队统一方法论。
场景四:外包或强合同约束的项目型团队
推荐:直接用标准工时,并按照行业惯例增加10%-20%的项目管理buffer。不要在任何环节引入故事点,合同和法律条款不认“故事点”这个概念。
代价:几乎没有方法论层面的代价。唯一的风险是如果在报价阶段低估了复杂度,工时估算没有故事点的“模糊保护”。
为什么完全不能用故事点:因为一旦出现交付争议,工时估算是可以被合同条款和行业标准参照的;故事点则是行业内的敏捷实践惯例,在法律层面缺乏可参照的标准。这不是方法论问题,是风险管理问题。

十、总结:诚实比方法论更重要
这篇文章里,我坦诚地讲了我们放弃故事点、换回工时的全过程,也清楚地说明了工时体系下我们踩过的坑和建立的防护机制。但我最想传达的观点其实是这个:
估算是为了辅助决策,不是为了满足方法论的正确性。
如果你的团队在用故事点,而且用得很好,估算准确、讨论深入、沟通顺畅,请不要因为这篇文章而怀疑自己的实践。
但如果你的团队在用故事点,而且感觉像在表演,每次估算会结束后你都在心里默默做换算、每次对外沟通时间时你都支支吾吾、每次看到迭代燃尽图你都觉得这图不太诚实,那么我希望这篇文章给了你一个信号:你不是一个人,承认“这个方法不适合我们”不是失败,明知不适合还硬撑才是。
最后给出一个非常具体的行动建议:
- 下周的回顾会议上,做一个15分钟的匿名投票:让团队成员回答“你认为当前的估算方式(无论是什么方式)对你理解需求、规划工作有帮助吗?”选项只有三个,有帮助、没感觉、反而增加负担。
- 如果“没感觉”和“增加负担”加起来超过50%,启动一次专门的估算方法讨论,不是在站会上随口聊5分钟,而是专门安排一场会议,把数据摆出来,把每个人的体验讲出来,认真地讨论要不要调整。
- 如果决定调整,不要一刀切。选一个小组、一个迭代做试点。用试点数据说话,而不是用信仰说话。
- 如果决定不调整,也要明确一个“观察期”:三个月后重新评估,设定具体的评估指标(估算准确度、团队满意度、沟通效率),而不是靠感觉判断。
估算这件事,做到最后,比的是诚实,诚实地面对数据、诚实地面对团队的感受、诚实地面对组织环境施加的约束。工具和方法论都是为人服务的,不是反过来。
我们换了工时,不是因为我们找到了正确答案,而是因为我们终于承认:之前那个答案不适合我们了。这个承认本身,就是进步。
常见问题解答(FAQ)
1. 故事点估算到底为什么不准?
我们团队用了两年故事点,但每次迭代结束时实际工时总和与故事点换算后的时间总是差30%以上。明明大家都按标准流程做计划扑克,为什么还是不准?问题到底出在哪?
根据我亲身经历,故事点不准的核心原因不是方法本身,而是团队对'复杂度'和'工作量'的混淆。我们曾将一个引入第三方支付SDK的功能估为2个故事点,因为它'逻辑相对简单',但实际开发时因对接文档不全、测试环境不稳定,耗时远超预期。
故事点本意是度量相对复杂度,但实践中我们总不自觉地将其换算成小时,这种换算又基于个人经验,而个人经验往往有偏差。
更关键的是,随着项目迭代,参照物(比如基准故事点)会漂移,一个最初定义为'中等复杂度'的故事点,在一段时间后可能因为团队技能提升或代码库变化而实际变得简单,但评分时仍沿用旧基准,导致估算失准。
我团队通过匿名问卷发现,90%的成员认为故事点换算工时时存在'为了凑数字而估'的心理,反而失去了估算的用意。
2. 换回工时估算后,我们团队到底得到了什么?
我们决定放弃故事点改用直接工时估算,结果发现迭代计划会从原来的2小时缩短到40分钟。但我也听说工时估算会鼓励微观管理,让成员故意报高数值。这两个担心真的会发生吗?
我负责的6人团队在换回工时后,最直接的收益是沟通成本降低。以前用故事点,业务方听不懂'8个点'的含义,我们还得解释'相当于6天人天',现在直接说'这个功能需要5天',双方一次对齐。
另外,估算速度大幅提升:原先每个用户故事都要集体讨论复杂度打分,现在由经验最丰富的成员初步评估后,大家直接基于历史速度微调,平均每个故事讨论时间从5分钟降到1分钟。至于微观管理风险,我们通过两条规则规避:第一,工时估算只用于迭代计划,不用于考核个人;
第二,允许成员在具体任务上预留10%的缓冲时间,只要在迭代回顾时说明原因。执行半年后,交付周期(Lead Time)从平均12天降至8天,缺陷率未明显上升。
当然也有代价:成员在初期会下意识报高工时,但通过对比历史速度,我们建立了'个人速度基线',经过两个月磨合,估算准确率(实际耗时/估算工时)从60%提升至85%。
3. 故事点到底有没有价值?什么情况下该坚持使用?
我看很多敏捷专家说故事点是解决估算不准的银弹,但我们试了觉得反而不如工时顺手。现在我在纠结:是不是我们执行方法不对?还是说故事点只适合某些场景?
我的判断是:故事点不是垃圾,但它的适用场景被过度夸大了。根据我们团队的横向对比和同行交流,以下情况建议保留故事点:团队规模超过15人,且涉及多项目并行依赖时,故事点可以帮助跨团队消歧(比如A团队估3点,B团队估5点,可以通过基准故事对齐);
或者团队刚刚完成重组,成员间缺乏信任,此时故事点能避免'向上级报告精确工时时'的承诺压力。但若你们是10人以下、业务方直接对接到技术Leader、且迭代周期短于2周的小团队,直接用工时更高效,因为你们不需要复杂的抽象层,工时就是最直接的沟通语言。
我自己的教训是:不要为了'彰显专业'而强行套用方法论。我们在换回工时后,还保留了故事点的一个优点,即用'相对大小标签'(S/M/L)来辅助任务拆分,而不是用于估算。例如,把功能拆成多个S级任务,每个S级默认不超过2天的工时。这样既保留了敏捷的分级思想,又避免了过度量化。
4. 换工时估算后,如何防止成员故意报高工时?
我担心一换工时,开发人员就会预留大量安全时间,导致估算失去意义。我们的Scrum Master坚持要保留故事点。有没有办法既用工时,又不让估算变成'放水'?
这个问题我们团队也遇到过。初始阶段确实有成员把'估算'理解为'承诺',故意报高3-5天。我们的对策是两步走:第一步,建立历史数据仪表盘。我们对比了切换前后三个月每个成员的实际耗时与估算比例,发现报高最多的成员,其实际完成时间反而低于平均,说明他在故意留余量但没用到。
第二步,在迭代回顾中公开这些数据,并强调:我们追求的是趋势准确率,不是单次精准。比如,一个功能估5天实际用4天,只要偏差在20%以内都是可接受的,但若连续三次偏差超过50%,则需在任务拆分或技术方案上复盘。
另外,我们引入了'预测区间'而非单点值:比如,一个功能估5天,但在任务卡上标注'可能4-6天',并在冲刺计划时告知业务方'有80%概率在6天内完成'。这样既给了成员心理空间,又让业务方有实际预期。三个月后,报高行为自然消失,因为成员发现故意报高反而导致自己被分配更多任务,得不偿失。
核心关键词
文章包含AI辅助创作:故事点估算不准,我们换了工时,发布者:fiy,转载请注明出处:https://worktile.com/kb/p/3976586
微信扫一扫
支付宝扫一扫
读者评论
作为后端开发,文章里说的‘换算系数’那段简直是我本人。每次估算会我表面出牌,心里早就在算‘3个点=3.6天+buffer’,然后盯着任务板看别人出什么牌,生怕自己成了那个‘异常值’。故事点在我这儿早就是一层没用的中间层了,反而让我把精力浪费在猜测‘这次应该出几个点才符合团队预期’,而不是认真思考实现细节。换回工时后,我直接说‘这功能我大概要4天’,大家反而能更坦诚地讨论风险点。数据不会骗人:就是省时间、更准。
做了三年Scrum Master,文章戳中了我很多团队的痛点,但我觉得故事点本身不是罪,是团队没有严格执行它的前提条件。比如‘基准故事漂移’这个问题,我们每两个迭代就会重新校准一次基准,而不是放任它变形。不过作者用数据对比的方式很打动我:当换算成本超过收益时,确实该重新审视。我可能会把你们那个‘投入产出对比图’拿给我们的管理层看,提醒他们不要神化故事点,也别妖魔化工时,关键是找到团队当前阶段的匹配工具。
产品经理视角来答一下。说实话,我一直觉得故事点对业务方很不友好。每次问开发‘这个功能什么时候能上线’,得到的答案是‘大概8个点’,我就得再问一遍‘所以呢?’。换工时后沟通直接多了,‘这个需要5天’我就知道怎么排优先级、怎么跟客户交代。但我也有新的担心:如果开发直接报工时,会不会又回到以前那种‘拼命往上报留buffer’的状态?文章里说他们试点后完成率反而更高,说明信任建立起来了。关键在于团队氛围,不是工具。