第八讲 冲刺和增量

第八讲 冲刺和增量

00:00
17:10

讨论主题  


冲刺:什么是冲刺? 什么是冲刺目标? 什么情况可以取消冲刺?

增量:什么是增量? 什么是“完成的定义”?为什么增量必须符合"完成的定义"?

一、冲刺 


什么是冲刺?

冲刺像Scrum的心跳一样,连续地、有节奏地、持续进行。一个冲刺的持续时间,以星期为单位,最短一个星期,最长四个星期。一般来说,每个冲刺的持续时间应该相等。每个冲刺都需要创建"完成的”、可用的、潜在可发布的产品增量。就像我们的心脏一样,健康的心脏总是跳的平稳、有力。产品开发生命不息,Scrum心跳不止。


第七讲说到,每个冲刺都可以被看做一个项目。了解项目管理理论的朋友都知道,项目管理的几个约束:时间、成本、范围、质量。这几个约束之间相互制约。对一个冲刺来说,时间固定不变,遵守时间盒规则,有固定的开始日期和结束日期。成本也固定不变,因为软件开发的成本主要是Scrum团队的工资,团队成员稳定,所以成本也固定不变。剩下两个约束:范围和质量。范围和质量这对矛盾,是传统项目管理里的一个永恒的话题。当范围和质量发生冲突时,哪一个必须坚持?哪一个可以让步?Scrum指南给出了清晰的答案,在冲刺期间:

1、 不能做出有害于冲刺目标的改变;

2、不能降低质量目标;

3、随着掌握信息的增加,范围可以在产品负责人和开发团队之间加以澄清和重新协商。

锁定冲刺目标

Scrum有一条重要规则,一旦制定冲刺目标,在冲刺执行开始后,可能对冲刺目标产生实质性影响的任何变更都不被允许。

什么是冲刺目标?

冲刺目标描述当前冲刺的商业目的和价值。冲刺目标通常有清晰而单一的重点,例子:

例1:支持初始报表生成

例2:加载并组织北美地图数据

例3:展示通过集成硬件、固件、和软件发送文本信息的能力

冲刺目标有时可能是多方面的,例如“支持基本的打印功能,并支持按日期搜索”。


做冲刺计划的时候,开发团队应该帮助产品负责人完善冲刺目标,就冲刺目标达成共识,并依据冲刺目标决定本冲刺完成哪些产品待办项。这些产品待办项也起到进一步详细说明冲刺目标的作用。

双向承诺

冲刺目标是产品负责人和开发团队做出双向承诺的基础。产品负责人承诺,在冲刺执行过程中,不更改目标,开发团队承诺完成目标。


这种双向承诺解决了一个管理上的两难问题:如果接受变更,开发团队无法集中精力;如果不接受变更,又无法响应变化。怎样求得平衡呢?答案是:不能停滞不变,也不能变个不停。长期来看,产品负责人通过为新的冲刺树立目标拥抱变更,短期来看,维持一个冲刺内目标的稳定,开发团队可以在一个固定的短周期内集中精力,高效工作。

注重实效

既然产品负责人对冲刺目标做出承诺,原则上,就应该信守承诺。如果出尔反尔,会伤及Scrum团队的信任,影响开发团队的士气。开发团队心里说:“咱们这个产品负责人啊,没准儿!慢慢儿做吧,说不定明天又说不用做了。”然而,“锁定目标”只是一个规则,并不是铁律,Scrum团队要注重实效。如果出现突发的、特殊的、重要的情况,例如,竞争对手在我们执行冲刺的过程中推出一个新品,经过考察,得出结论,我们现在的冲刺目标已经没有价值,这时就可以改变冲刺目标。又例如,一个重要的生产系统不幸发生故障,而且只有我们团队的部分人才能修复这个故障。我们能跟业务部门说,我们锁定冲刺目标,下个冲刺再考虑修复这个故障吗?也许不能。中断当前冲刺,去处理这个重要且紧急的故障才更符合“注重实效”的原则。归根结底,“注重实效”高于“锁定目标”。从经济后果的高度去思考,如果变更冲刺目标带来的收益多于损失,就应该变更。如果变与不变对经济后果影响不明显,就不要变更。需要提醒的是,产品负责人需要和开发团队分享这些突发的、重要的业务信息,和开发团队讨论。既做到“注重实效”,又能保全士气和信任。

是变更?还是澄清?

在冲刺进行中,虽然冲刺目标不应该有实质上的变化,但是澄清这个目标是允许的。什么情况算是变更昵?变更指,在经济层面上造成资源的严重浪费,或在一个冲刺内大幅度扩大工作范围。在一个冲刺的执行期间,加入或移除产品待办项,或者大量更改冲刺中选入的产品待办项,都算变更。比如下面的例子:

产品负责人:

我说的在警察数据库中搜索少年犯,并不只是按照姓名搜索,还要能按照嫌犯的纹身照片来搜索。


程序猿们可能要喷了。增加根据照片搜索的特性,意味着开发工作量大幅增多。按照姓名捜索的特性,还能高质量的如期交付吗?承诺的目标还能做到吗?如果产品负责人一定要在搜索功能中添加按照照片搜索的特性的话,应该考虑为这个特性创建一个新的产品待办项,加入到下一个冲刺要完成的列表中。


什么情况是澄清呢?澄清是指,在冲刺执行期间,提供更多的细节,来帮助开发团队实现冲刺目标。在冲刺开始的时候,与产品待办项相关的所有细节不一定完全已知。团队在冲刺执行过程中,提出澄清的要求,产品负责人回答这些问题,是完全合理的。比如:

开发团队:

你说搜索出来的少年犯应该显示在列表里,你对列表排序方式有什么偏好吗?

产品负责人:

有,按姓的字母顺序排序。

开发团队:

OK。

取消冲刺

在第七讲谈到时间盒规则的时候说过,一旦冲刺开始,持续时间必须固定下来,不能缩短或延长。这里指的是一般情况。当出现特殊原因,导致冲刺目标失效,可以取消冲刺。导致冲刺目标失效的原因,可能是组织改变大方向,或市场条件、技术条件变化。


谁有权力取消冲刺呢?只有产品负责人有这个权力。产品负责人可以基于自己的考虑,又或者接受干系人,开发团队或者Scrum Master的意见,做出这个决定。虽然产品负责人有权取消冲刺,但根据实践经验,产品负责人很少动用这个权力。因为提前终止冲刺,除了对士气有负面影响,还会导致一些混乱。所以Scrum团队可以用一些更温和的方式替代,例如变更冲刺目标,或进行小范围的调整。


如果产品负责人最终决定取消冲刺,至少有两方面善后工作需要处理。第一项工作是,整理冲刺中的产品代表项。对已经完成的,要经过评审。如果其中有部分成果是潜在可发布的,产品负责人就接受它。对于那些进行中和还没开始的,放回到产品代表列表中。第二项工作是,安排下一个冲刺的长度。例如四周的正常冲刺,第一周过完了,还有三周,现在决定取消冲刺,接下来有三个选择:

1.下一个冲刺长度保持不变,还是四周。这样安排的好处是简单,但如果多个Scrum团队合作,团队之间会脱节。

2.下一个冲刺的长度,正好在被取消冲刺的预期结束日期结束。在刚才这个例子中,应该是三周。下下个冲刺,再恢复四周的冲刺长度。这样安排,多个Scrum团队重新同步。

3.下一个冲刺长于正常的冲刺,以包含被取消冲刺的剩余长度和下一个整个冲刺的长度。在刚在这个例子中,应该是3周+4周-7周。这样安排,也可以让多个Scrum团队重新同步。

二、增量 

什么是增量?

前面讲冲刺的时候,我们提到,每个冲刺都需要创建增量。什么是增量呢?增量是在冲刺结束时,团队产出的成果。增量体现一部分产品愿景,是迈向愿景的一步。Scrum指南定义,增量是一个冲刺完成的所有产品待办项,加上之前所有冲刺所产生的增量的价值的总和。这个定义不太通俗易懂。我来举例说明。在第七讲中,我们检视和调整的时候,用了一个开发汽车的隐喻。用第四个冲刺产出的产品增量为例,第四个冲刺的完成的所有产品待办项是“一个能让用户从一个城市到另一个城市的引擎”。前三个冲刺所产生的增量的价值,是能在园区的大楼之间转悠的类似自行车的东西。第四个冲刺产出的增量,是引擎加上自行车的总和,就是个类似摩托车的东西。

增量必须是完成的

不积跬步无以至千里。当一个冲刺结束的时候,增量必须是“完成”的,这意味着它必须可用,并符合Scrum团队制定的“完成”的定义。什么是“完成的定义”呢?从概念上说,完成的定义是个检査列表,列表里的检查条目是各种工作类型,例如编码、测试,是两种不同的工作类型,就是列表里的两个检査条目。团队在宣布他们的产品完成之前,应该逐项检査,全部通过叫做符合“完成的定义”。假如滑板的完成的定义里有测试这个条目,测试的时候,轮子掉下来了,就叫增量殳有“完成”。


每个冲刺产出的增量都要发布吗?未必。发布是一个业务决策,通常和软件开发不在同一个节奏。并非每个冲刺产出的增量都要发布。但无论产品负责人是否决定发布,增量必须可用,必须符合当前冲刺的完成的定义。这样要求,至少有三个原因:

1.保证发布质量

无疑问,产品负责人选择要发布的增量必须是"完成"的。即使是早期的发布版本,简单如滑板,自行车,也必须符合这个要求。如果发布的自行车掉链子,用户对产品失去兴趣,产品负责人得不到投资,产品会夭折。


2.停止积累技术债

即使产品负责人决定不发布某个增量,这个增量也需要符合完成的定义。如果增量经常是没有完成的,例如骨板轮子转的很卡,摩托车引擎经常熄火,对应到软件,就是由有很多重要的bug,经过几个冲刺的积累,会导致产品脆弱不堪,无法进一步添加新特性。团队不得不停下来修bug,尝还技术债。这很可能导致真正的产品发布不得不延期。

3.可检视

就每个冲刺而言,即使增量的特性很少,测试用例很少,增量也需要符合完成的定义。只有这样,在检视会上,用户才能体验,才可能给出反馈。你给客户一个"完成"了的滑板,客户可以体验,如果你给客户的滑板,还差一个轮子没安装,客户怎么体验呢?

小结 

第八讲讨论了冲刺和增量。冲刺是Scrum的心跳,产品开发生命不息,Scrum心跳不止。在质量和范围这对相互制约的约束中,Scrum锁定冲刺目标,不降低质量目标,范围可以协商。冲刺目标失效,可以取消冲刺。不积跬步无以至千里,无论发布与否,增量必须是完成的。

思考题 

1、完成的定义由谁来定义?完成的定义可以改变吗?

2、到冲刺的最后一天,某个特性还有一个严重的缺陷,算不算完成?该怎么办?


以上内容来自专辑
用户评论
  • 花木猪

    这个怎么没有文稿呢?

    书山有伴 回复 @花木猪: 谢谢您的提醒。刚刚把文稿放上去了。请继续收听。

  • 高尔基的

    特别想听问题的答案

    书山有伴 回复 @高尔基的: 我在后面会讲到的。现在请先结合工作实际,思考一下吧~:-)