敏捷开发为什么越做越慢?我记了6个Sprint的会议时长,发现病灶根本不在会上

🔑 关键词:敏捷开发,Scrum,故事点,站会,Definition of Done

📖 摘要:用6个Sprint的会议时长记录和velocity数据,拆解敏捷团队越跑越慢的两个真实病灶:故事点通胀和DoD缩水,附Scrum/Kanban/XP参数对比和3步可落地的改法。

先把一件事说清楚:会议不是病因,是体温计

图片

2019年我在一家做SaaS的公司,团队9个人,两个后端、两个前端、一个测试、一个PO、一个SM,加我。Sprint长度两周。我们该有的都有:Jira配好了,burndown每天更新,站会早上9:45准时开,回顾会从来没人缺席。但连着6个Sprint,真正能上线的功能加起来不到3个。

后来我干了件挺无聊的事:拿Excel把每次会议的开始和结束时间记下来。6个Sprint一共37次站会、6次计划会、6次评审、6次回顾。站会平均23分钟,计划会平均2小时50分,评审1小时40分,回顾1小时20分,加起来大约41小时。9个人乘一下,369人时。按每人每天有效工作6小时算,差不多61个人日。这还没算会前准备材料和会后扯皮的时间。

写到这里你可能会说,看吧,会开太多了,砍会就完了。我一开始也这么想,后来发现砍完会速度没变。因为会议时长只是个症状,真正的病灶在两个地方:故事点通胀,和完成定义缩水。

病灶一:故事点通胀,一个不可逆的过程

图片

我们团队第1个Sprint的velocity是34,第6个是71。数字翻了一倍多,听起来团队成熟了?实际上交付的功能数量差不多,甚至更少。

原因不复杂:估点的时候大家都在往上加。同一个小需求,第一个Sprint给3点,三个Sprint后给5点,理由是新人不熟、要补单测、老代码要先重构。这些理由每一条都成立,但它们本来就该在第一次估算时被考虑进去。问题出在故事点变成了一种半公开的考核信号——SM每次评审都会把velocity数字念一遍,念的时候领导在。

结果就是通胀不可逆。更讽刺的是,很多团队后来学会把1点拆成0.5点,velocity立刻翻倍,然后老板挺高兴。Ron Jeffries最早提故事点的时候,定位是团队内部的相对估算工具,他自己后来在博客里也说过这东西被滥用得厉害。但这句话在大多数公司传不到需要听到的人耳朵里。

病灶二:Definition of Done缩水,纸面交付

图片

我们当时的DoD就四条:代码写完、单测过、code review通过、合并到develop。看着挺规范对吧?问题在于“生产环境”这四个字根本不在里面。

合并到develop就算Done,意味着一个功能真正到用户手里,还要等Sprint结束、测试回归、运维发布窗口,平均滞后11天。于是“每个Sprint都有交付”这件事在报表上成立,在用户那里不成立。Scrum Guide 2020版其实改过措辞,强调Increment是迈向Product Goal的concrete step,也明确了DoD必须包含质量属性。但多数团队的DoD还停留在“代码合并”这一层,因为往下写一条“能上线”,就没人敢说Done了。

三种框架在参数上的真实差别

维度 Scrum Kanban XP
迭代长度 固定1-4周,多数是2周 无固定迭代,持续流动 1周
WIP限制 靠Sprint Backlog隐性限制 显式列约束,常用每人2、队列列3-5 结对编程,天然限1
估算方式 故事点/相对估算 可选,多数按件数 按任务,单个任务上限2-3天
发布节奏 Sprint末 按需,越频繁越好 每周
角色设置 PO/SM/Dev Team 无强制角色 Coach/客户/程序员

图片

这张表不是我造的,是三个框架各自指南里的明文规定。但现实里大量团队把Scrum当Kanban用、把Kanban当看板墙用、把XP的结对砍掉只剩TDD的口号。参数错配之后,你再用Scrum的仪式去套Kanban的流动,velocity当然算不出来。

一个不太受欢迎的观点:敏捷在做责任转移

我承认这个说法有点尖锐,但我越想越觉得它是真的。

图片

敏捷尤其是被企业采购的那一套,实际上完成了一次责任转移:把“资源不够”翻译成了“团队不够自组织”。以前项目延期,是排期不合理、是人力预算批少了;现在延期,是团队velocity估不准、是回顾会没action、是成熟度不够。SM这个角色在很多公司慢慢变成了流程警察,主要工作是让大家觉得自己有问题。

我不觉得这是谁设计的阴谋,但它确实是个结构性问题。因为在Sprint计划会上,你说“我们人不够”这句话是没有对应仪式去处理它的。框架里没有这个环节。你只能把故事点调高,或者把DoD写低。这两条路我都走过,都是死路。

三步改法,每步都有具体动作

第一步:给DoD加一条“能上生产”。 具体到操作,就是在Jira的DoD字段里加一行:功能开关已配置、监控指标已接入、回滚脚本已准备。加完这一条,下一个Sprint你会看到Done的数量掉一半。别慌,那才是真实产能。

图片

第二步:把velocity和绩效彻底切干净。 velocity只对团队自己可见,不进任何汇报PPT,不在评审会上念。SM的周报里删掉这个数字。这一步会有阻力,因为有些管理者靠这个数字判断团队健康度,你得给他们一个替代品,比如“本Sprint上线功能数+线上缺陷数”这两个数。

第三步:回顾会的action限制在1个。 只留1个,必须满足两个条件:本周内能做完、有明确负责人。超过1个就砍掉。我做过对比,6人团队一次回顾会产出5个action,两周后完成率大概20%;产出1个,完成率能到80%。数字不好看,但管用。

最后

上个季度我又去看了那个团队的Jira,DoD那一栏还是四条,第一条写着“代码写完”。我没说什么。有些改变得等一个契机,比如一次线上事故,或者一次老板问“这个功能到底上了没有”。