概述:关于敏捷开发,最常提到的问题是关于团队和人员的。定义会告诉你Scrum团队是一个自组织的、跨职能的完整团队。那么什么样的团队是自组织的,什么样的分工是跨职能的呢?我们将在本文中为您详细介绍。
Scrum团队里的三种角色
Scrum团队包括三个角色,即Scrum大师、产品所有者和开发团队。产品所有者主要负责构建正确的产品;开发团队负责以正确的方式构建产品;Scrum Master主要负责帮助产品领导者和开发团队中的每个人理解和接受Scrum的价值观、原则和实践。
Scrum团队的自组织意味着他们将在内部决定如何最好地完成他们的工作,而不是由团队之外的其他人来指导。Scrum团队和流程的基本框架请参考下图:
(Scrum团队框架)
Scrum Master
Scrum Master是Scrum的教练和领队人。's对Scrum Master的认知有一个误区:这个角色在很多项目开发中都会被当成项目经理。Scrum Master保证的是敏捷开发的流程和秩序。对项目的进展和结果负责。团队的主要和唯一任务是开发产品,而不是按照规范和教条敏捷。敏捷开发只是一个工具。而制造产品的是“人”,而不是“角色”。例如,在Worktile的敏捷团队中,Scrum Master由开发团队的成员轮流担任。他们是最熟悉产品和Scrum流程的人,他们每个人都有成为Scrum大师的潜力。同时,Scrum Master的工作除了可以提升软件开发能力,还可以提升每个成员的管理能力。
作为一名合格的Scrum大师,你需要承担以下责任:
需要领导和指导团队采用 Scrum,并管理Scrum流程
这是Scrum Master的核心职责,需要维护每一次冲刺的流程,保证每一次冲刺的顺利实施。
Scrum Master负责组织sprint期间的每一次会议,Scrum Master还需要帮助开发团队清除开发过程中遇到的障碍。Scrum Master应该有一个阻止列表来记录开发团队在开发过程中遇到的问题和障碍,这些问题和障碍应该由Scrum Master自己来管理,最终使列表中的每个问题都得到及时处理。
Scrum Master要保护开发团队不受干扰
众所周知,需求变更是每个开发人员的噩梦,而敏捷诞生的最重要原因之一就是解决这个问题。然而,在我们的敏捷开发项目中,我们经常会遇到一个领导者,他直接找到开发团队,告诉他们该做什么,并下达命令。这时应该及时停止Scrum Master,因为需求虽然可以更改,但是在sprint期间不应该干扰开发团队,可以在Daily scrum会议或者Sprint计划会议上提出,大家可以一起讨论解决方案。
g>③ Scrum Master要说服开发团队帮助员工及干系人理解并实施 Scrum这就需要Scrum Master有很强的沟通能力和领导能力,他需要帮助 Scrum 团队外的人员了解他们如何与 Scrum 团队交互是有益的。Scrum Master 通过改变这些交互来最大化 Scrum 团队所创造的价值。
④ 建设好团队,使团队成员处于一个愉悦的工作氛围中
团队建设是项目开发中绝对不容忽视的一环。团队凝聚力如何,直接影响了整个团队的战斗力。因此,建设好团队,是每个Scrum Master的重要使命。比如,开发团队最近的工作状态不佳,或者工作氛围苦闷,Scrum Master可以主动提议组织一些出行活动,既能为团队成员们解压,提高站斗力,也能增加团队的凝聚力。
除此之外,还可以打造学习型团队。比如通过团队内部知识定期分享的方式,使得每个人都能可以学到新的知识,从而逐步使得团队成长。比如Worktile每周五的下午4点,可以利用一小时的时间,让团队的成员举办知识讲座。通过这种形式,大家的积极性会变的很高。可以约定分享的内容并非一定是技术方面的,也可以是生活娱乐等,只要大家感兴趣就好。这样做的好处在于不仅提高了团队的技术能力,也使得团队之间能够更轻松愉快的交流,从而提升团队的凝聚力和战斗力。
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的内容和排序中要清晰可见。任何人都不得要求开发团队按照另一套需求开展工作,开发团队也不允许听从任何其他人的指令。
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的按期交付,都要靠团队齐心协力、相互配合,才能真正的将需求实现为用户需要的产品。