十七、扩展Scrum
面对大项目,不应扩大团队规模,而应该扩大团队数量
扩展产品负责人
PO是Scrum项目中最具挑战性的角色之一
对内任务:参加Sprint计划会议、Sprint评审会议、Sprint回顾会议和每日站会,管理产品Backlog,回答团队问题,在Sprint期间不缺席
对外任务:见客户、写报告;去现场、参加展会;管理项目干系人的期望;排优先级;定价;制定中长期产品战略;观察产品和市场趋势;竞争分析等
可以按照首席产品负责人(CPO)——产品线负责人——PO这个层级扩展
1、共享责任,分割职能
CPO对整个产品或产品套件持有一套总体愿景,他通过全体会议、电子邮件、团队聚会以及其他方式传递愿景,但不去处理复杂细节
CPO只关注战略问题,增强竞争能力,产品线负责人负责套件中的单品,下属的PO会负责功能领域
全体PO必须具备一种对整个产品的共同责任感
完成大型产品Backlog的工作
1、一个产品,一个产品Backlog
如果团队工作于不止一个产品Backlog,那么多个Backlog肯定会冲突
使用单个的产品Backlog,能明确最高优先级,然后可以给每个PO提供不同的视图,而不是让每个PO维护一个自己的产品Backlog
多个团队间的大Backlog可以有重合的条目
2、保持产品Backlog大小合理
我们需要在使用单个产品Backlog和避免产品Backlog变得不可管理之间找到一个合理的平衡,通常100~150之间是合理的
1)利用史诗故事(epic)和主题故事(theme)
在产品Backlog中写一些大的用户故事(epic),并把一些小的用户故事进行分组(theme)
2)给产品Backlog提供多个视图
这样可以打破用户故事的总量限制,只需要在每个视图中控制数量即可
主动管理依赖
好的团队结构有助于减少依赖,但不能彻底消除它
1、进行滚动的前瞻性计划会议
让团队在每个Sprint花几分钟时间思考在接下来两个Sprint的任务
只需要用平均历史速率做一个大概的计划即可,切勿详细展开,会很费时间
有硬件或嵌入式开发的团队非常有必要做滚动前瞻计划
2、举行发布启动会议
召集所有人举行一次发布启动会议,它可以降低一个最大的风险:不同的团队或个人会被引到错误或不同的方向
Salesforce.com会在启动会议后组织一次非正式的“发布开放空间”会议,属于敏捷研讨会
3、共享团队成员
当依赖很难被提前找到或需要尽快解决这些依赖时,这是一个有效的办法,尤其是存在于特性团队和组件团队中间的时候
不过让人们同时为多个团队工作也有不利的地方
4、使用集成团队
集成团队直接关注无人管理的接口,同时也会搜寻未经确认的接口
集成团队每天第一件事:检查每日构建的结果以确认系统已成功创建,所有的测试也都通过
集成团队在项目开始时的任务:安装好所有的服务器,配置好项目范围内的软件
集成团队要求有广泛技能的资深人员,要保证集成团队不会有大部分新员工
在团队间协调工作
1、Scrum of Scrums会议
协调几个团队间的工作,一个常规实践就是Scrum of Scrums会议,这个会议让多个团队可以讨论它们的工作,尤其是关注交叉和集成领域
每个团队指定1人参加Scrum of Scrums会议,通常应是技术贡献者,最能理解和解释项目中最可能出现的问题
Scrum of Scrums会议不需要天天举行,不需要限定时间,但必须是可以解决问题
带到会议上的问题要尽快解决,不能把余下的问题留到下一次,如果一定要留,创建问题Backlog
1)从上次会议后,我的团队做了哪些会影响其他团队的东西?
2)在下次会议前,我的团队计划做哪些会影响其他团队的东西?
3)我的团队遇到哪些问题可以寻求其他团队的帮助?
避免谈个人问题,保持在一个合适的细节程度,切记发言时间长短与重要性没有任何关系
2、同步Sprint
同步Sprint的几本好处是所有的团队能够在一两天内开始和结束Sprint,长度可以不一样
扩展Sprint计划会议
在多个团队工作于同一个项目的情况下,Sprint计划会议会出现很多问题:1人对多会,无法处理依赖,产品Backlog要预分配
1、错开一天
Sprint计划会议不必同一天开始,这样共用产品Backlog的问题解决了,更解决了1人对多会的问题
然而,PO等角色会很痛苦,他们将陷入文山会海,所以还需要其他方法
2、大房间
所有团队集中到一个大房间,由CPO组织会议,启动后,所有团队扎营讨论与工作,用不了多久就会厘清依赖关系
大房间方法对关键的共享资源尤其适用,只要呼喊,就可到位,下图为航海旗语
培养实践社区
实践社区是由一群具有相同思想、相同技能的个人因为对某种技术、方法和愿景的热情和投入而自愿形成的
实践社区可以跨越多个项目,是一种在团队间传播好的想法、保证各开发团队能保持理想的一致性与共同性的基础机制
1、正式的或非正式的
2、创造有利于社区形成和繁荣的环境
自组织的实践社区是一种理想的形式,但非常依赖企业和领导层创造的环境
1)为进化而设计
2)在内部和外部的参与者间进行对话
3)邀请不同级别的参与者
4)举办公开的和私有的活动
5)专注于价值
6)把亲近和兴奋结合起来
7)维持社区的节奏
3、参与
实践社区需要委任一名社区协调人,他需要围绕组建的社区开发实践,也需要发展社区本身
社区协调人的任务是安排会议和其他活动,确保成员们参加,联络有共同兴趣的个人,自己参加社区活动等
实践社区值得投入时间和资金
Scrum确实能扩展
敏捷开发的原则和实践是可以扩展到大项目的,而并不是只能用于小项目、小团队