Scrum团队内部的角色与分工
概述:关于敏捷开发的问题,被提及最多的便是关于团队和人员的问题。定义里会告诉你:Scrum 团队是自组织、跨职能的完整团队。
那么究竟怎样的团队才是自组织的团队,什么样的分工算是跨职能?我们将在本文中为您详细介绍。
一、Scrum团队里的三种角色
Scrum团队中包括三种角色,分别是Scrum Master、Product Owner和Dev Team。
Product Owner主要负责构建正确的产品;
Dev Team负责以正确的方式构建产品;
Scrum Master则主要负责帮助产品负责人和开发团队中的每个人理解和拥抱Scrum的价值观、原则和实践。
所谓Scrum团队的自组织,就是说他们会在内部决定如何最好地完成他们的工作,而不是由团队外的其他人来指挥他们。
关于Scrum团队和流程的基本框架,可以参考下图:
(Scrum团队框架)
1、Scrum Master
Scrum Master是Scrum的教练和领队人。
关于Scrum Master的认知有一个误区:这个角色在许多的项目开发中会被视为项目经理。
Scrum Master保证的是敏捷开发的流程和秩序。对于项目的进展和结果,整个团队都需要负责。团队主要且唯一的任务是开发产品,不是来照着规范、教条来做敏捷,敏捷开发只是工具。
而做产品的是 “人”不是 “角色”。比如在PingCode 的敏捷团队中,Scrum Master就是由开发团队的成员轮流担任,他们是对产品最熟悉的人,也是对Scrum流程最熟悉的人,他们每一个人都具备成为Scrum Master的潜力。同时,Scrum Master的工作可以提升每位成员软件开发能力之外的管理能力。
作为一个合格的Scrum Master,需要担起以下职责:
① 需要领导和指导团队采用 Scrum,并管理Scrum流程
这是Scrum Master最核心的职责,Scrum Master需要维护每个sprint的流程,确保每个sprint能够顺利的实施。
Scrum Master负责组织召开sprint期间的每一个会议,并且Scrum Master还需要帮助开发团队清除在开发的过程中遇到的障碍。Scrum Master应该有一个block list用来记录开发团队在开发中遇到的问题障碍,由Scrum Master自己进行管理并最终使得列表中的每一问题得到及时处理。
② Scrum Master要保护开发团队不受干扰
我们都知道,需求变更对于每一个开发人员来说都是噩梦,而敏捷诞生的其中的一个很重要的原因就是为了解决这一问题。然而在我们采用敏捷开发的项目中,经常会遇到某位领导直接找到开发团队, 对他们指手画脚,发号施令。这时Scrum Master应该及时阻止,因为需求虽然可以变更,但是不应该在sprint的过程中干扰开发团队, 可以在Daily scrum meeting或者Sprint plan meeting上提出,大家共同商讨解决方案。
③ Scrum Master要说服开发团队帮助员工及干系人理解并实施 Scrum
这就需要Scrum Master有很强的沟通能力和领导能力,他需要帮助 Scrum 团队外的人员了解他们如何与 Scrum 团队交互是有益的。Scrum Master 通过改变这些交互来最大化 Scrum 团队所创造的价值。
④ 建设好团队,使团队成员处于一个愉悦的工作氛围中
团队建设是项目开发中绝对不容忽视的一环。团队凝聚力如何,直接影响了整个团队的战斗力。因此, 建设好团队,是每个Scrum Master的重要使命 。比如,开发团队最近的工作状态不佳,或者工作氛围苦闷,Scrum Master可以主动提议组织一些出行活动,既能为团队成员们解压,提高站斗力,也能增加团队的凝聚力。
除此之外,还可以打造学习型团队。比如通过团队内部知识定期分享的方式,使得每个人都能可以学到新的知识,从而逐步使得团队成长。
比如PingCode 每周五的下午4点,可以利用一小时的时间,让团队的成员举办知识讲座。通过这种形式,大家的积极性会变的很高。可以约定分享的内容并非一定是技术方面的,也可以是生活娱乐等,只要大家感兴趣就好。
这样做的好处在于不仅提高了团队的技术能力,也使得团队之间能够更轻松愉快的交流,从而提升团队的凝聚力和战斗力。
2、Product Owner
Product Owner(PO)就是产品负责人,Product Owner需要明确产品的愿景。这个角色对于团队非常重要,决定“Why”和“What”。一般可以对应为现有的产品经理的角色。
Product Owner主要负责以下几项工作:
① 负责对Product Backlog的梳理、优化、优先级排序等;
② 负责决定团队每个Sprint要完成哪些任务;
③ 负责最大化产品以及开发团队工作的价值,而实现这一点的方式会随着组织、Scrum 团队以及单个团队成员的不同而不同;
④ Product Owner要对产品的质量把关。 质量决定了产品的命运 。要注意一点, 不要过于强调速度,应保持合理的开发节奏,才会使得产品质量具有一定的保障 。Scrum流程在每个sprint应统一完整,使得开发团队形成习惯,最终达到良好的开发节奏。
(Product Owner的工作内容)
作为Product Owner,在工作过程中要注意以下几点:
① 不要把交付能力作为团队的唯一评价标准 :速率虽然是对敏捷团队的衡量,但不应该是唯一标准。因为Dev Team的交付能力是随着团队成熟度的上升而达到一个平衡,不能无限增加。
② 要避免过多参与开发细节 :因为Product Owner只需要负责决定产品要做成什么样子,要有那些功能,而不具体参与开发团队如何实现这些功能,否则容易造成不能客观的决定产品好坏,对Sprint的进度也会有影响。
③ 要避免同时领导多个团队 :有些企业在转型的时候,由于企业文化和产品架构的问题,往往让一个PO带领多个团队,这样的好处是PO可以对多个有关联的团队的工作进度有总的把握,而且能够更好的移除团队之间的相互依赖,但是同时带来不好的一点是由于精力有限,可能无法同时兼顾多个团队的PO工作,顾此失彼。
(Product Owner与团队及干系人的关系)
根据PO的工作性质,我们可以发现, PO必须具备良好的沟通能力 ,这是必要的。并且还有一点也很重要, PO必须是一个对项目十分了解的人 ,这样才能够对接到的需求进行优先级的排序。
PO的角色在团队中非常重要,如果沟通不到位,需求理解不正确,或者优先级决定有问题,都可能导致Dev Team无法及时给出阶段性的产品,就算给出,可能也达不到客户所要的需求。
为保证产品负责人的工作不受影响,组织中的所有人员都必须尊重他的决定。产品负责人所作的决定在Product Backlog的内容和排序中要清晰可见。任何人都不得要求开发团队按照另一套需求开展工作,开发团队也不允许听从任何其他人的指令。
3、Dev Team
在敏捷开发中除了PO跟SM之外,另外一个非常重要的角色就是Dev Team,也就是我们的开发团队。
开发团队包含了专业人员,Sprint中需要完成的Product Backlog数目、做多少工作都完全由开发团队决定,PO或任何其它人都不能给开发团队强加更多的工作量。开发团队的大部分时间都花在Sprint执行上,他们负责在每个 Sprint 的结尾交付潜在可发布的“完成”产品增量,只有开发团队的成员才能创造增量。
开发团队有以下几个特点:
① 他们是自组织的,没有人可以决定开发团队如何把Product Backlog变成潜在可发布的功能。
② 开发团队是跨职能的,团队作为一个整体,拥有创造产品增量所需要的全部技能。
③ Scrum 不认可开发团队成员的头衔,无论承担哪种工作他们都是开发者。此规则无一例外。
④ 开发团队中的每个成员可以有特长和专注领域,但是责任归属于整个开发团队。
要知道,将一个新的团队磨合成敏捷开发所要求的自组织团队是非常重要的,也是非常困难的,尤其是在实际的开发进度和需求等不定因素的影响下。
因此,提高团队的凝聚力是创建自组织团队一个重要因素,而团队的凝聚力就来自于大家都在为一件事而努力,每天都在做,而且经常有提高。
为了提高团队凝聚力,有很多途径可以实施,例如在每天的站立会议,Dev Team成员除了介绍每天的工作,还可以快速形成某个团队级别的决议,例如将某个方法作为公共模块,临时调整资源等,解决阻碍团队的重大问题。
开发团队成员每天进行集体沟通,每个人都有机会发言,都可以感受到其他人对项目的贡献,会有一种是整个项目和产品的主人翁的感觉。
总结
Scrum Master、Product Owner和Dev Team三个角色在Scrum中各自承担不同的责任,每个Sprint的按期交付,都要靠团队齐心协力、相互配合,才能真正的将需求实现为用户需要的产品。