当团队说产品待办事项列表条目以及产品增量“完成”的时候,每个人都应该理解“完成”意味着什么。
' g8 k* ?3 y7 q
在一家互联网企业P,小强作为ScrumMaster带领一个Web开发团队。在第一个Sprint计划会议上,团队就Sprint要完成哪些需求与产品负责人达成了一致。在Sprint评审会议上,团队为产品负责人和利益干系人演示产品,大家也很满意。当产品负责人问,这些已经上线了吗?小强说:“刚到测试环境里完成功能测试,还没有做回归测试呢。此外,上线是运维组的事,不是我们的事。” % I; x+ }' k% k- |
这让产品负责人大跌眼镜:“我们需要的是上线啊,没上线怎么能算完成呢?还给我们演示(Demo),这是在浪费我们的时间啊?” 0 [4 N4 K2 B; e
团队很诧异:“没人说一定要上线啊?此外,运维组也不是我们的人啊,什么时候上线不在我们的管辖范围啊。”
) j* L" d4 J$ A这种情况在许多初次尝试敏捷的团队很常见。对“完成的定义”,产品负责人与团队没有一致的理解,大家在各自没有说出来的理解下工作,当Sprint结束的时候,分歧暴露出来了。所以,在第一个Sprint开始之前,团队应该就“完成的定义”达成一致。那么应该定义什么样的DoD呢? 9 {" w! {% E9 [, \: n2 e
因为每个团队的DoD可能不一样,所以团队应依据自己产品和业务的特点,就DoD与产品负责人达成一致的意见。表6-3是一个DoD检查表示例,仅供参考。 5 }: {) L& e" T* y6 `
8 U2 g1 n: l6 a5 T
表6-3DoD检查表# y8 n4 \3 H6 s9 n) M" B. F
/ h4 U5 z1 `- g* s! J. l
在企业P,小强引导团队列出了如下“完成的定义”:
6 I* b. a5 K4 ^7 ^" @
- 完成用户体验设计;
- 通过需求设计评审;
- 提交代码;
- 通过代码评审;
- 通过测试。
9 A! Z0 M+ P9 B- b1 J8 ]
: f- u7 M3 g) A' X. ^9 C) O% G7 d
团队有人问:“这里通过的测试包括哪些?是集成测试、功能测试、回归测试,还是性能测试?”
: t# r l2 s7 ^7 c5 B8 g" ^; x
大家商议,如果这些测试都包含,由于现在团队的自动化测试脚本很少,回归测试和性能测试无法在一个Sprint内完成。那么该怎么办呢?是不是可以将其移到下一个Sprint做呢? 5 F p" E! ]- c' T" _
小强引导团队达成了如下共识。 4 ~1 L4 n. d6 @$ q
回归测试和性能测试暂时不在“完成的定义”里,而是安排在产品发布前的一个Sprint里执行。但是团队从下一个Sprint起,引入自动化测试框架,对每个基本特性补充测试脚本,并着手调研性能测试工具。团队设定了目标:用4个Sprint的时间做完产品已有特性的回归测试和性能测试的脚本开发工作。 6 \( E; v" b1 ?: _) m. ^2 `
现实中这样的情况很常见,因为通常从0开始尝试敏捷的组织,其自动化测试基础都很薄弱。这种情况下,无法按照将产品发布给客户的标准来定义DoD。因此,DoD的范围有多大,本质上反映了组织的敏捷成熟度。DoD范围越靠近上线的最后一步,说明组织的敏捷成熟度越高。
' ~/ W9 x2 g4 {7 t* d; w
其实对于小强团队的情况,并没有完美答案。“完成的定义”也体现了组织敏捷转型的范围。产品发布到用户(或客户)手里需要做的所有工作都应该在“完成的定义”里,但是那些不在“完成的定义”里的工作是省不掉的,如果不是在Scrum团队范围里做,必然由另外一些部门或团队完成。那些承担Scrum团队未完成的工作的部门,称为“Undone部门”,这些部门正是组织敏捷转型未来要覆盖的目标。 7 O1 f I5 P# Y2 |$ {6 X% K( F
对于当前Sprint做不完的工作,必须安排在下一个Sprint,或者是在发布前专门安排一段时间来完成,如图6-6所示。
4 B) r6 V$ n. {. p$ W- S* u
$ }" D6 T: y/ ^9 z
图6-6未完成的工作不断累积 - z/ ~& w% w! Y+ v: T+ u
资料来源:《精益和敏捷开发大型应用实战》(PracticesforScalingLean&AgileDevelopment),2010年12月 4 l- r5 b7 E1 p3 ?/ T0 j
每个Sprint不断累积的未完成的工作,不仅推迟了产品的反馈周期,蕴藏的缺陷也会不断增加。因此,未完成的工作越少越好。
; R$ D+ s1 v' r# f" C
在企业P,小强的团队在前几个Sprint没有做性能测试,而是在发布前的最后一个Sprint做的。但是团队发现了严重的性能问题,产品存在严重的内存泄露,需要对架构进行整改。而架构改动的影响范围巨大,导致前几个Sprint做的很多工作都需要返工。原定的产品上市时间也不得不推迟。 7 X$ E/ i" y& H: c8 C
因此,团队要尽量将产品的质量反馈闭环控制在一个Sprint之内,不要推迟风险暴露的时间。 + U9 Z( [0 @1 I; I
6 E8 _$ A; ]6 z2 S
|