第三章 根除低下的效率
第六节 2008年2月1日:“路漫漫,其修远——分布式开发”
如果你是软件极客,就像我,很自然就会成为朋友与家人的技术产品顾问。当你看到你的家人备受软件折磨时,特别是这个软件是你参与编写的,至少你可以告诉他们:“让开一下,我是计算机科学家。”接着解决了所有的问题。是的,当你撤销他们所做的失败“操作”时,你可能会战战兢兢,但是你还是会及时摆平所有问题。但前提是,你就在他们身边不远。
如果你老妈住在千里之外,你们的通话很可能像下面这样:
老妈:亲爱的,他们更改了我的密码,现在我的Email进不了了。
我:好的。登录你的计算机,打开Outlook。
老妈:密码是什么?
我:输一个你通常用过的。
老妈:我不是在申请一个新邮箱,是我的老的邮箱。
我:知道。打开Outlook。
老妈:我从哪里输入密码?
我:在你输入用户名的主页面上,输入密码。
老妈:什么是主页面?
我:等会。你现在能打开Outlook吗?
老妈:是的。我已经打开它了。但是你说叫我登录计算机。
\[另外又要花一小时在菜单、对话框及按钮操作上\]
如果你有个像远程协助(Remote Assistance)这样的工具,那以上情况就不会这么糟了。但使用这种工具在防火墙及路由器后面操纵同样会非常有趣。本来5分钟可以处理的事变成了耗时1个小时的噩梦,那会怎么样呢?在你工作中的任一个时间点与地点,这种时间消耗与麻烦会成数量级倍增,这样就将我们引入一个话题:分布式开发。
大家不用呆在一个地方了吗
在全球多个地点共同对一个项目进行开发已成为稀松平常的事。但,这样虽然增加了团队开发的多样性,吸收了各界精英,这应该会是个巨大的优势,结果往往是挫折、延期及质量与机能的错位。为什么?因为有三个大麻烦:带宽、地域分隔及大家齐聚一堂。
畅通的沟通及快速访问中心服务所需的带宽还远远不够。分布在不同地点的项目分工界线不明,导致额外的沟通、冲突、灾难及梳理工作。因为不同的团队互相分隔,大家呆在一起一对一面谈,接洽来客,走廊交谈及其他日常交流这样的情况就不会再有了。
有了这些麻烦,你可能会想:为什么我们还要劳烦分布式开发?不,你想得太简单了,这跟钱无关。采用分布式开发的根本原因是源于人才与市场。计算机科学人才在巴西、俄罗斯、印度、中国等地每年增长近20%,其总和相当于2010年美国软件工程师总量的15倍。他们不会全部跑到雷德蒙去,我们也不想他们这样,因为他们的本土市场对我们至关重要。
所以,如果你现在在带领一个团队,你最好弄明白怎么处理这三个大麻烦。以下让我们对它们逐一进行讲解。
我必须不停地解释,不胜其烦
第一个大麻烦是带宽——人与人及计算机与计算机之间的带宽。人与人之间、团队与团队之间通畅的沟通对于成功至关重要,我之前多次谈到这一点。在同一个房间里两个人之间沟通的信息量要远远大于人们通过电视电话会议(VTC)沟通的信息量,而后者大于通过Live Meeting沟通的信息量,Live Meeting又大于电话(就像上面我跟我妈的电话沟通),电话大于即时通信(IM),IM大于Email。换句话说,Email是个信息量最少的沟通工具,所以它的应用自然最为广泛。
作者注:使用微软的Live Meeting(现在叫做Lync)进行圆桌会议,现在来说是挺好的,虽然其比不上VTC。如果你还没试过圆桌会议,你就错失了体验很酷的技术的机会。它会使人们自动地把注意力放在言语自然通顺的人身上。
事实上,人们都使用Email,因为它的方便性、异步性并可以跨时区。遗憾的是,Email的带宽很小,通信质量差并且需要几经周折才明白对方的意思。因为时区的不同,一次邮件往返就是一天,因此,通过Email交流进展踯躅。计算机间的带宽也是相当慢的,这意味着在雷蒙德快速的源代码控制、文件或数据库操作要历经几个小时才到达大洋彼岸。
你怎样才能消除带宽这个大麻烦?这里有两种方法——增加带宽或削减不必要的通信。
你可以通过使用高带宽的通信工具,如VTC及Live Meeting来提高带宽。这些工具甚至可以在低带宽线路上工作。然而,这些工具是实时同步的,所以你必须同分布在全球各地的团队人员预约交流时间。这意味着如果你在雷蒙德而你团队的另一个成员在中国,你必须约定每天太平洋时间下午4~5点与你的中国同事进行即时会议。