去年6月,因为组内的Scrum Master离职,一时间没有合适的人来专职做SM,同时公司的Agile Coach一直建议应由team成员轮流担任,理由是SM不应是一个单独的角色,对外沟通也不应是SM一个人的职责,轮流担任SM从长远来看也不会影响team的velocity。虽然team关于velocity不会受到影响这一点有所异议,大家的看法是短期内一定会有所波动。但是当时组里没人想专职做SM,轮值是最好的选择。一番讨论后,大家同意在担任SM的开发或测试,他的Velocity减半的前提下轮流担任SM,我们组也就成了公司第一个轮值SM的team。
9个月的时间里,Team的成员有些变动,但是轮值SM的习惯坚持了下来。当大家坐在一起讨论轮值的反馈时,很快的列出了以下的好处:
1. 加强了成员间的互相理解,了解SM的难处
2. 轮值后每个人做事都更加主动,类似于自组织的状态
3. 轮值带来了给team注入了更多的活力,因为每个人当SM的风格有所不同
4. 为个人提供了加深敏捷思想和对其他team曝光的机会
5. 去中心化
我的理解是轮值的本质是去中心化,一方面可以避免专职SM一个人风格对team的影响,另一方面可以消除team成员对SM的习惯性依赖,而忽略敏捷开发希望每个人都应该参与进来,协作team节奏的把控和工作计划的初衷,而不是只做好手上分配的任务就好,从而避免形成开发或测试与SM对立的局面。大家对轮值带来的好处是有目共睹的,team的氛围有了很大的改善。
关于轮值带来的副作用或者坏处时,大家的看法也有诸多相似的地方。
1. 身为SM时,工作频繁被外部或者内部事件打断,而无法专心做本职的开发或测试工作
2. 在不同的轮值周期,team的velocity和计划的工作会受到影响和限制
3. 对SM职责理解不到位,机械的在组织一些会议,且时常怕忘记做什么
4. 眼光局限在轮值周期,而缺少对team长期计划的跟踪和设想
5. 对外造成一些沟通困扰,team外的人不知道该联系谁
但是在讨论如何解决这些问题的时候,长时间的讨论却没有形成一致的解决方案。
我的看法是scrum的原则是期望一个成熟的team,成员在能够做到互相可替代,但实际上开发与测试的替代操作成本高且价值不大,开发与开发之间、测试与测试之间,因为人与人各方面能力的差异很难做到完全替代,我把这点定义为scrum实施中在人员方面的根本矛盾,它虽然可以想办法来缓解,但却不可消除,是一个限制,所以必然会有第二点坏处。第一点提到的频繁被打断的问题也同样是一个限制,即使你不是SM,当你的工作职责不再单一,或者需要和多方沟通时,这是难免的。这也是team在这两点讨论了很久无法达成共识的原因,限制是只能接受,而不能解决的。能解决的是问题。
而第三点和第四点真的是一个问题,这暴露了大家对SM的理解停留在表面层次,还不够深入。我认为作为一个SM,工作职责应该有三个关键字,分别是:节奏、风险和优化。展开来说是:
1. 节奏是指把控节奏,包括工作强度、产品进度和团队氛围。
2. 风险是指降低风险,包括项目能否如期交付,团队组成是否稳定。
3. 优化是指通过复盘不断优化前两项,在这方面要对细微的变化足够敏感,比如:DE在什么时间点完成所有计划得任务?QE在什么时间点开始功能的测试?等等
以上是我的理解,不一定正确,但重点在于要当好SM首先要对SM的工作职责理解到位才行,SM绝对不是一个仅仅组织大家开会,发发邮件就可以的角色,SM应该是各个成员之间的润滑油和连接器,至于具体要开哪些的会,做哪些事,那则是SM履行职责的仪式,不是说这些仪式不重要,而是如果只是机械的做这些事情,是没法真正成为一名好的SM的。所以第三、四点是可以通过加深对SM的理解并践行来解决的。
至于第五点,我认为那根本不是个事儿,被联系到的成员转接下就好。
当会议结束时,team达成的共识是,需要延长轮值的周期。但散会后,又分分觉得困惑为什么这样决定,虽说轮值周期长了,轮值的SM会对team计划和实施进度有了更全局和长期的关注,但本质问题还是同样的,还是仅仅关注轮值周期而已。而且延长轮值周期,是降低了轮值的频率,这可是直接消弱了去中心化带来的好处呢,所以我计划回头要组织大家再讨论一次延长轮值的决定是否合适。
最后我关于轮值SM的看法是:
1. 去中心化的好处就是轮值SM的好处
2. 轮值的周期的设定需要有所平衡
3. 重度“中心化”的team可能不适合轮值SM
那么,关于Scrum team要不要轮值SM 呢?从让你的team一起决定开始吧。