十八、分布式团队
分布式团队主要指异地的团队
决定如何分布多个团队
协作式的本地团队发生在项目在两个或更多的城市有足够的人以利于在每个城市建立一个团队的情形
有意的分布式团队可以解决以下几个问题:
1)不与PO一起工作的开发人员不能充分理解领域业务
2)不同城市的开发人员不自觉地不认同已开发的东西
3)不同城市的开发人员做出互不兼容的决定
4)在不同地点的个人之间形成一种敌对的“我们和他们”的关系
5)一个城市的开发人员不知道另外一个城市的开发人员在做什么,或者他们为什么做出那样的决定
缺乏透明性是引发异地团队很多问题的根源,不同地点间总是有很多潜在的冲突,把团队有意分开能减少各地人员规模暴增的风险
形成凝聚力
1、承认显著的文化差异
在力求形成凝聚力的过程中,我们一定要首先承认不同地方的团队成员间有着极大的文化差异
1)权威距离指数(PDI)——接受权威不平等的程度,中国人不太可能去挑战权威,喜欢封闭式讨论,而美国人反之;
2)个人主义(IND)——字面意思,中国人注重团队团结,而美国人争着出风头
3)成就导向型(ACH)——赚钱为大,中美对此较为认同,日本不计代价赚钱,挪威即使亏钱也要培养团队
4)不确定性规避指数(UAL)——对变更的容忍程度,俄罗斯忍不了变更,而中国更习惯于不确定性
5)长期导向(LTO)——决定眼光,中国倾向于远景,美国倾向于近景
2、承认微小的文化差异
节日差异:印度的斋戒、加拿大的维多利亚节、挪威的宪法日
工作日差异:以色列和埃及,工作日为周日到周四
夜生活:美国6点吃饭,印度9点
3、加强职能和团队的亚文化
例如计算机亚文化,同类型的程序员会走的比较近,这种亚文化会形成凝聚力
1)交流和建立共同愿景
所有的分布式团队,不能在共同愿景方面有分歧
2)达成共识
直接的共识:每日站会、不破坏产品构建
间接的共识:及时回邮件、不抄送不必要的人
无疑的共识:怎样做Scrum
虽不必照本宣科,但SM还是需要组织培训会议,在跨地区的团队中对Scrum的实施保持一致
4、通过强调早期进展来建立信任
创建一个有凝聚力的团队,关键在于团队成员间建立信任感
团队要在每个Sprint结束时产出可工作软件的早期压力也有助于建立信任
即使在早期的Sprint,团队也要取得明显进展
推迟关系建设,直到团队成员彼此了解更重要的东西,如特定技能、优势、工作方式等
给Sprint加入更多的社交活动或共有的停工期,可以建设关系,但不能在项目开始时做
项目启动时,焦点要放在早期进展的演示上
早期的社交活动应以项目的工作为主
现场见面会
1、播种访问
指项目的某些时刻,全体团队成员需要聚集在一起,这是项目成功的一项最好的投资,这对于团队成员互不熟悉、很少有共同经历、说着不同语言或者来自于不同文化的项目尤为重要
没有什么可替代面对面交流,尤其在项目的关键点上
2、联络访问
至少每两个月就要进行一次长度为一周的访问
3、旅行大使
买张机票,指派一名大使,待上几个月,写代码,与人会面,以非正式的交流传达小道消息.
改变沟通方式
1、添加一些文档
对无法参加Sprint评审会议的人而言,他们可能更依赖书面状态报告,不然会产生更多的误解
写更多的东西并不总是导致负面效应,这对讲多种语言的团队成员尤其有用,非母语的人可以在空暇时阅读文档,帮助理解
2、给产品Backlog添加细节
给概要用户故事补充更详细的规范有助于授权给远程团队,更详细的需求使团队在不能直接联系到PO的情况下获得对功能和终端用户目标的深刻理解
附送测试用例:当产品Backlog中的一个用户故事被PO发送给团队时,需要伴之以一个概要测试用例,这将用于表明这个用户故事是否完整
3、鼓励横向沟通
一个城市的任何人都可以跟另外一个城市的任何人对话
抵消沉默效应——人人都害怕分享坏消息
会议
1、一般性建议
1)留一些闲聊的时间
避免会议信息过量,可以插入一些简短的问候
自然发生的非正式交谈有助于异地办公室的人们感觉像是在同一个团队
2)分担痛苦
不要把会议时间安排成永远对一个地方有利,可以轮换时间保持权力的平衡
现场会议的人需要理解电话会议人的痛苦
3)告诉大家谁在发言
尽量用视频会议取代电话会议
2、Sprint计划会议
1)长时间的电话
只适用于全体成员在其正常工作时间有大部分重合的情况下
2)两次电话
第一次会议专注于找出主要任务、交付物和高层依赖,主要讨论PO那边最高优先级的功能和期望
第二次会议每个成员可以定义活动并给每个自己接受的任务估计时间
3、每日站会
1)单次电话
建议坚持每日站会,至少也要为省略的会议保留一个书面版本,或者是与每个参与地方的一位代表通一次电话
2)写会议记录
放弃每日站会,用邮件、wiki或其他异步工具来分享
可选地,在一个大多数团队成员都方便的时间举行电话会议,其余团队成员则提交书面报告来“参加”
3)地区会议
举行地区间的系列会议,如西半球与东半球分两次,通常要辅之以额外的沟通,以使每个子团队能够清楚其他子团队的工作
另一种方法是,指派若干个团队参加所有的Scrum
4、Scrum of Scrums
针对分布广的团队,可以用每日站会方法代替
针对时区挑战的团队,可以用地区会议代替
5、Sprint评审和回顾
Sprint评审和回顾具有每日站会和Sprint计划会议的属性
工作时间有重叠的就安排在重叠的时间
没有重叠的,选择轮流倒时差
可以连续几天,也可以一天开完,取决于团队接受程度
1)必须参加
如果实在参加不了,需要一个解释,这跟运动员平时训练但比赛参加不了一个道理
2)偶尔举行同城回顾会议
这样的好处是一个地区的团队可以静下心回顾地区独特的问题
不鼓励PO和测试人员被排除在所有会议之外,但凡事也要讲究变通
谨慎行事
分散团队给涉及到的个人带来额外的工作和压力,并给企业持续地造成更多风险
分布式开发是有效的,但分布式团队的表现也许不如本地团队
虚拟团队在绩效、满意度和产出率方面表现更差,虚拟团队看上去只是在降低承诺、士气和绩效上有优势