Retrospectives会帮助团队持续的改进,即使是很优秀的团队。在这章中,我们以一个历时1小时的迭代Retrospectives作为例子来开始讲述。我们会来看看,Retrospectives lead一般需要做什么,同时我们会通过例子来分析一下怎么应用Retrospectives的一些流程。
让我们来看看一个开发金融软件的团队是怎么在他们的2周迭代后进行他们的Retrospectives的。这个团队,轮流负责主持Retrospectives,这周轮到了Dana。
所有人坐好了,一个半圆形。在他们前面是一块大白板。白板的一边贴着一些海报。Dana就这样开始了这次Retrospectives。
"现在我们花点时间再来重新审视一下我们在上个迭代周期中的工作。11545.html">我们有一个小时,来看看我们的团队协作和方法。现在是4点,我们应该在5点前结束。先来看看我们的开发流程,因为我们发现我们的bug越来越多了。"
"在我们看具体数据之前,让我们来做一个快速开场白:用一到二句词语来描述一下当我们要开始Retrospectives时候你的感觉是怎么样的?"
六个成员于是都给了一个简短的回答。"很疑惑"第一个人说。
"有点好奇。"第二个说。
"我对于那些bug不是很爽。"第三个人回答道。
"Hey,你可不止一两个词语了。"第一个回答者戳了一下这个有点啰嗦的伙伴。
"好吧,不爽!"他纠正道。
在最后两个人回答完毕后,Dana继续支持她的会议。
"我们需要对我们关于这个会议的工作宣言(working agreement)做一下修改吗?"Dana一边问,一边指了指贴在墙上的工作宣言。在所有人都认为这份东西足够了以后,Dana开始概述这次会议的流程。
"首先我们会来看看我们的数据。随后通过头脑风暴来收集可能的原因。最后我们可以想出些点子,在下个迭代中选取一个,设计实验来">解决问题。怎么样?"
大家都没意见。
"让我们来看看我们的bug数据。这是怎么了?"Dana指着那张标着每个人所做功能及其对应自己发现的bug数目的图说道。她分发了一些各色的小的黏贴纸,"我们完成了那些功能,所以我们大家都来说说到底是怎么回事。我们来看看在上个迭代过程中发生了什么,想想所有你可以想起来的事件,然后把那些失败的地方记录在橘黄色的黏贴纸上。"
一个伙伴沉思了一会,把一张黄色的贴纸贴在了墙上。"我很惊讶我们失败的地方居然是有那么多bug。.我想知道这是为啥呢?"
"让我们来看看我们是不是能回答这个问题。用5分钟时间把我们知道的写下来,然后我们来看看他们的异同。"Dana又分发了一些大点的黏贴纸和marker笔。
一个伙伴用力的写着。另外一个看了一会那个图标随后简单的记了几笔。还有两个一边轻轻的讨论和比较着各自的想法,一边记录着。
5分钟以后,所有人把贴纸都贴在了墙上。
"哪些看起来有相类似的原因?"Dana问道。大家开始一边讨论一边移动着那些贴纸,时而把他们放在一类,时而分开。
10分钟以后,大家归结出出4类:不一致的结对编程,太急于测试驱动开发,代码质量低以及历史遗留代码。
"大家从中可以得出什么呢?"Dana发起了一场有价值的讨论。
"当中哪个原因引发了最多的bug?"Dana继续问道。
答案是一致的:遗留代码。"那么让我花点时间来头脑风暴一下,来想想我们在下个迭代中,可以采取哪些实验来降低bug发生率。"
大家很快给出了5个不同的方案。
"还是投票吧,每人可以选2个你认为好的。"
很快大家就有了一个首选项。
"好了,让我们来设计实验。"Dana提议道。
大家商讨了15分钟,制定了以下的几个步骤:
找个时间和支持组的Sally一起来过一遍遗留代码。(她曾经开发维护那些代码好多年。)
给每个我们要涉及到的遗留代码补写单元测试代码
让Sally每周跟我们一起结对一到二个上午
Dana看了看手表,他们还有15分钟。"结对编程呢?我们说好一天结对编程4小时。"