第三章 根除低下的效率
第六节 2008年2月1日:“路漫漫,其修远——分布式开发”
作者注:Live Meeting已与Office Communicator在微软的新产品Lync上集成。用这个可以进行即时通信(IM),非常酷。视频及音频讯息、IP电话、会议呼叫及Live Meeting等都集成在了一个Office应用套件中。呵,我看起来像个推销者,但这个确实很诱人。
你可以通过书写更细致的Email来削减必要的通信。可以预先在Email中提供额外的信息并回答一般性问题来减少问题,消除混乱。这样写Email会多花些时间,但谈不上几天时间,而这在即时通信上都是要花上几天的。
你可以用SharePoint发布项目信息来减少类目繁多的Email及打电话的次数。将主题“怎么做”、讨论目标、检查列表、文档及项目相关邮件、时间表及进度状态放到上面。无论何时何地,新的团队成员到来时,把完善后的上述相关材料及缺少的文档更新到网站。
你同样可以对在不同地方进行的工作建立清晰的项目界线。把本地通信分离出来,包括将源代码控制及数据库存储下来。这样你就只需要在人们或信息跨界的时候再使用跨团队通信。这又将我们带入到下一个大麻烦。
你确实不知道你在浪费时间吗
第二个大麻烦是界限——不同工作地点间的界限。
如果你从未在分布式的项目或团队中工作过,你可能会傻傻地认为分布式的团队都是过得很开心的。就是因为这样单纯的想法让项目经理允许团队中的成员进行远程工作。记住,无知、单纯、愚蠢是成为傻瓜的三部曲。
一个分布在三个不同地点的项目团队不是个开心的团队;在一个很可能成功的项目上工作的三个团队才可能是开心的,这样的团队工作目标一致,认识统一。
因为如前所说带宽的问题,你做不到使团队认识统一、步调一致,除非你将你的队员们集中到一个房间里。这就是为什么有一个共同的协作空间是最好的。也是团队只分布在不同楼层一起应对相同的困难而不是分布在不同的大陆的原因。
要使一个分布式项目能够成功,你必须在分布式的团队间设立清晰的界限,从而有足够的空间独立性使他们独立工作而只需要很少的协作交流。界限越分明,成果越显著。我在第6章的“美妙隔离——更好的设计”对此有更详尽的讲解。
作者注:在分布式的团队间建立清晰的界限并不是禁止界限之间的沟通。你仍然可以进行跨团队的设计、代码复审与计划安排以及头脑风暴。各团队可以相互帮助解决问题,并使之相互联系更紧密。清晰的界限的作用是使团队间不至于天天相互阻挠与干涉。相反,高带宽的交流是必需的,可能一星期就一次,跨团队的协作只是锦上添花之事。
通常,界限是个相对于空间与地域的概念。但是同样也可理解成版本或责任的界限。你同样可以让分布式团队关注本地市场,这不会增加不必要的费用,这里的沟通费用可忽略不计。相反,它减少了不必要的冲突、灾难及梳理工作。
但是如果你的团队是绝对独立的,你怎能保持团队统一协作并相互共享,向着相同的目标前进呢?这就是下一个大麻烦中要说的。
能让我看到你的脸,肯定非常不错
第三个大麻烦是——互相会面建立起人与人之间的紧密联系使合作与沟通更真实。
最大限度地利用带宽并分清界限将解决分布式开发的大部分难题。然而,你们始终还是在同一个项目上为同一个目标工作的团队。你必须维系团队间、同事间的重要关系,并绘制出这种人员关系结构图,图中的相关人员需用人脸照片标示。互相会面是相当重要的。
VTC及其他实时交谈工具对此是很有帮助的。你可以经常在一对一交流场合及会议中使用这些工具。并不必每次都用,但至少一月一次。记住,不同的工作地点之间要实现这些功能需预先约定好时间。
当然,什么也无法替代人与人之间的实际接触,所以面对面的实际会谈每年至少要安排两次。在10月安排一次公司会议及执行力审查,在2月或3月安排一次年度财政及预算计划。每次会面不只两三天时间,一次得1~2个星期。会面内容包括激励斗志、一对一会谈及培训,跟计划及审查会议一样。你们要抽出尽量多的时间进行接触。
有些团队会进行轮换工作或人员交换。在这种情况下,来自某个地方的团队人员要用3个或甚至6个月的时间与另一个地方的团队人员共处。这可以是一次人员调换或指派。这种人员轮换可以提供充分的相互学习的机会,从而建立团队间的互谅,使之相濡以沫保持联系。