Scrum培训心得
——Neo Shen 沈燕青
早在2008年,我们的团队就实施了Scrum,当时在国内也算最早的一批了。一开始是在客户的要求之下推行Scrum,大家把它作为一项任务来做,因为客户要求不敢违背。似懂非懂的实施了一段时间,并没有给团队带来多少帮助。这个情况在王军从美国回国加入我们公司做我们部门负责人后情况才有所改观。在王军的带领下大家开始重视和规范Scrum的运用。大家也从中受益。Scrum团队的队内氛围开始改善,效率开始有了提高。我是从Jim那里第一次知道Retrospective这个词的,再后来我对Retrospective可谓情有独钟,从中受益匪浅。
到了2010年,我已经用了两年的Scrum,当了差不多两年的Scrum Master,对Scrum有了自己的认识。对Scrum的一些术语, 譬如Sprint, Sprint planning, stand up meeting,User Story, burn down chart,Sprint review, Retrospective可谓滚瓜烂熟了,自己也迫切要求在Scrum上有所提升。当时去波士顿出差,就报名参加了Scrum Master的认证培训。说来也巧,我们的Scrum Master认证培训师就是Alan Atlas。
在参加培训之前,我是有所顾虑的。我是软件工程师,英语并不是我的强项。我到底能不能听懂这个美国老师的课,并把这些东西消化变成自己的东西?当时的课堂上只有我和我同事两个中国人,倍感压力巨大。只能硬着头皮上。
我当时带着两个问题:一是如何对user story和task评估,究竟有没有一种方法让我们不再对评估感到纠结;二是客户和领导总希望团队做更多的东西,如何来应付来自他们的压力?因为以前是客户和领导告诉我们做什么,我们只能加班来满足他们的要求。
Alan是个风趣的老头,总能以幽默的方式把Scrum的东西讲解清楚。他寓教于乐,课上用了大量的游戏,让大家参与进来,从游戏中理解Scrum。后来发现Alan的英语那是相当的标准,说得也比较慢,英语并没有成为阻碍。
对于评估,Alan的建议是大家多做Comparison,我们不知道这个story或task具体到底需要多少effort,但是我们知道两个东西比较,哪个大哪个小。通过比较我们来评估effort是个非常不错的方式。课堂上Alan让大家排成一队,让大家就每周看电视的时间拍个序,大家前后比较,最终排成一个从少到多的一个队伍。这就是比较。在这个游戏中我发现,外国人是很少看电视的,我说的每周十小时(保守估计)排在了队伍的最后一个。有的外国人不看电视,一般的就2,3小时一周。这就是差距啊,我们中国人把太多时间花在看电视上了。
对于来自客户和领导的压力,Alan让我们要了解自己的Velocity和Capacity。所谓Velocity,就是我们每个sprint能完成多少story points。所谓Capacity就是我们每个Sprint的effort hours是多少。我们知道了自己的Capacity和Velocity之后,如果Product Owner或领导让我们做更多东西的时候,Scrum Master就能告诉PO我们的Velocity和Capacity,我们不能再做更多的东西了。以数据说话,也不得罪PO,更保护了我们的团队。这种方式相当完美。
两天的培训一晃而过,最终我获得了Alan亲手签名的Scrum Master认证书。当然我的收获不仅仅是上面两点,这里不再一一赘述。通过这次培训,我对Scrum有了更全面的认识。
现在Scrum的东西已经融入了我的思维。虽然我最近几个项目都不再使用Scrum了,但是我总会用Scrum的精神来审视我们的工作。最后分享一下我个人认为比较重要的一些心得。
-
知道自己团队的Velocity和Capacity。统计以往每个Sprint的数据,把最近五个sprint的数据拿出来,数据平均一下就知道了自己的Velocity和Capacity了。
-
做好Sprint planning。合理评估每个story和task。
-
定义好每个story的definition of done. 只有在Sprint一开始的时候把这个定义清楚了,我们的目标就明确了,到Sprint review的时候就不会出现扯皮的现象。
-
坚持Stand up meeting。回答Scrum的三个问题,有助于团队交流。不仅有助于了解项目进展,还能让Scrum member了解其他人都在干什么,对项目整体有更深的了解。
-
坚持sprint review之后的retrospective meeting。总结出来在上个sprint中,哪些好,哪些不好。好的方面继续坚持。不好的方面制定Action plan,规避不好的东西,让团队提升。
-
Continuous Integration必不可少。一个Sprint往往短短几周,怎么样每个sprint都能交付usable, 有客户价值的东西?我们必须借助CI的实现。我们在开发中,程序的构建我们用Teamcity,Jenkins等工具;测试则用自动化测试。
【Alan Atlas讲师介绍】