敏捷开发模式已经逐渐被主流的软件研发团队所接受,其中Scrum是最具代表性的敏捷方法之一。Scrum框架中有三个核心角色:Product Owner(PO)、Scrum Master(SM)和Development Team(DT)。本文重点讨论Scrum Master的角色。
一、Scrum Master的定义
Scrum Master是Scrum团队中的“服务员”,负责确保所有人都能理解Scrum的理论、实践和规则,以及帮助团队最大化Scrum的利益。Scrum Master服务于Product Owner,帮助Product Owner理解如何使团队的工作最有效地满足产品目标。Scrum Master服务于Development Team,移除开发团队工作上的障碍,保证团队按照Scrum的方式运作。
Scrum Master不是团队领导。Scrum团队是自组织的,意味着团队具有做出决策的能力。Scrum Master通过引导、教练和教导的方式帮助团队自我管理和改进。
二、Scrum Master的职责
- Scrum Master是Scrum过程的守护者
Scrum Master确保Scrum过程和事件得到遵循和理解。Scrum的五个事件(Sprint、Sprint Planning、Daily Scrum、Sprint Review、Sprint Retrospective)和三个工件(Product Backlog、Sprint Backlog、Increment)是Scrum框架的核心。Scrum Master要保证这些事件按时举行,工件得到正确的维护。
例如,Sprint计划会议的时间盒是固定的,通常是2-4个小时(根据Sprint的长度决定)。Scrum Master要确保所有人在这个时间盒内专注于Sprint计划,不被打扰。如果有人想讨论与当前Sprint计划无关的话题,Scrum Master要礼貌但坚定地制止。
- Scrum Master移除障碍
Scrum团队是跨职能的,意味着团队应该拥有完成产品增量所需的所有技能。然而,在实际工作环境中,团队经常会遇到一些自己无法解决的障碍。例如,一个开发团队可能缺少某个领域的专家,或者需要某个外部系统的访问权限,或者遇到了一个从未遇到过的技术难题。Scrum Master需要帮助团队识别这些障碍,然后通过与Product Owner、其他团队成员、管理层或其他第三方沟通来移除这些障碍。
障碍不一定都是技术上的。例如,团队成员之间的冲突就是一个需要Scrum Master介入的障碍。Scrum Master要运用教练和调解的技术来帮助团队成员解决冲突。
- Scrum Master促进团队改进
Scrum团队是持续改进的。这意味着团队在每个Sprint结束时都要回顾自己的工作过程,识别改进的机会。Scrum Master要引导Sprint回顾会议,帮助团队聚焦于最重要的改进机会,并制定改进的行动计划。
除了Sprint回顾,Scrum Master在日常工作中也要不断寻找团队改进的机会。例如,如果Scrum Master发现团队在Daily Scrum时经常偏离“我昨天做了什么,今天计划做什么,遇到了什么障碍”这三个话题,就要在下次Daily Scrum前重申Daily Scrum的规则,并在会议中引导大家聚焦于这三个话题。
- Scrum Master服务于Product Owner
Scrum Master要帮助Product Owner理解Scrum框架和敏捷产品开发的原则,确保Product Owner能够有效地管理Product Backlog。这包括与Product Owner一起进行Product Backlog的梳理,确保每个User Story都符合INVEST原则,以及根据商业价值和技术可行性对Product Backlog进行排序。
Scrum Master还要确保Product Owner有足够的时间进行Product Backlog的管理,不被其他与Product Backlog管理无关的工作打扰。
- Scrum Master服务于Development Team
Scrum Master要确保Development Team理解Scrum的原则和实践,帮助他们以自组织的方式高效工作。这包括帮助团队制定Sprint的目标,确保团队在Sprint中有足够的时间进行编码、测试和集成,以及引导团队在Sprint结束时展示可工作的软件增量。
Scrum Master还要保护团队免受外部干扰,确保团队在Sprint期间专注于Sprint Backlog的完成。如果外部有人想找团队成员讨论与当前Sprint无关的话题,Scrum Master要礼貌地提醒他们等到Sprint结束后再进行。
- Scrum Master是团队的教练和导师
Scrum Master通过教练和教导的方式帮助团队提升敏捷技能。这包括引导团队进行敏捷估算、用户故事拆分、持续集成、测试驱动开发等实践。Scrum Master还要帮助团队成员理解敏捷价值观和原则,如个体与交互重于流程和工具、工作的软件重于详尽的文档等。
教练和教导是持续进行的过程。Scrum Master要在日常工作中不断寻找教练的机会,通过提问、示范、反馈等方式帮助团队成员成长。
三、Scrum Master的实践技巧
- 提问而非命令
Scrum Master要避免使用命令式的语气与团队成员沟通。相反,应该通过提问的方式引导团队成员思考问题和寻找解决方案。例如,当团队遇到障碍时,Scrum Master可以问:“你们觉得这个障碍的根源是什么?”或者“你们尝试过哪些方法来解决这个问题?”这样的问题可以激发团队成员的思考和创造力。
- 倾听而非打断
当团队成员在表达观点或描述问题时,Scrum Master要耐心倾听,避免打断。倾听是理解团队成员需求和感受的关键。只有真正理解了团队成员的需求和感受,Scrum Master才能提供有效的帮助和支持。
- 示范而非指责
当团队成员不遵循Scrum实践或原则时,Scrum Master要避免指责或批评。相反,应该通过自己的行为来示范正确的做法。例如,如果团队成员在Daily Scrum时偏离了话题,Scrum Master可以在下次Daily Scrum时首先发言,严格按照“我昨天做了什么,今天计划做什么,遇到了什么障碍”这三个话题来分享自己的进展。
- 庆祝成功而非聚焦于失败
Scrum Master要关注团队的成功和进步,而不是失败和不足。当团队达成某个里程碑或完成某个有挑战性的任务时,Scrum Master要组织团队进行庆祝,增强团队的凝聚力和自信心。同时,Scrum Master也要引导团队从失败中学习,但要避免过度聚焦于失败本身。
- 持续学习和自我提升
Scrum Master是一个需要不断学习和自我提升的角色。Scrum Master要保持对敏捷领域最新动态和最佳实践的关注,不断吸收新的知识和技能。同时,Scrum Master也要反思自己的工作方式和效果,寻找改进的机会。
总结
Scrum Master是Scrum团队中至关重要的角色。他们不仅是Scrum过程的守护者,还是团队的教练和导师。通过移除障碍、促进团队改进、服务于Product Owner和Development Team等方式,Scrum Master帮助团队最大化Scrum的利益。要成为一名优秀的Scrum Master,需要掌握提问、倾听、示范、庆祝成功和持续学习等实践技巧。