硅谷流行结对编程:一人负责写代码另一人监控
结对编程的坚定支持者Facebook程序员肯特--贝克(腾讯科技配图)
腾讯科技讯(马乔)北京时间8月28日消息,据国外媒体报道,英国著名女作家弗吉尼亚•伍尔芙(Virginia Woolf)认为,一位女作家应该拥有一个属于她自己的房间。而在美国硅谷,部分科技公司则对程序员是否需要属于自己的独立工作空间表示质疑。
这些公司正在推行“结对编程”(pair programming)工作方式,即两个人共享一个办公桌和一台电脑。其中的一个人是“驾驶员”,负责控制键盘和输入编程码;另外一个人则是“导航员”,负责监控设计和扫描漏洞。
结对编程有优势
包括Facebook和移动支付初创企业Square在内的科技公司都非常喜欢这种“结对编程”模式,因为它能够充分发挥结对工作优势,比如结对程序员能够发现可以导致巨大损失的软件漏洞,而且浪费时间上网的情况也比较少。
Facebook程序员肯特•贝克(Kent Beck)表示:“结对程序员之间的交流非常充分,你甚至可以再也不用言语进行交流。你只要简单描述再结合着手势就可以。”贝克是结对编程的坚定支持者。
然而,这只是一种理论上的可能,实际效果如何还需检验。总部位于旧金山的在线学习初创企业Grockit的前任程序员威尔•萨金特(Will Sargent)就从来没有与其结对程序员达到过这种默契程度。萨金特表示,他曾与一位对软件设计非常在行的程序员一起工作,但当他“驾驶”出现错误时,他的合作伙伴就会接管他的任务并修正这些错误。
萨金特指出:“我从来就没有达到过他的那种水平。”萨金特于2010年离开了该公司。
Grockit首席执行官罗伊•吉尔伯特(Roy Gilbert)表示,这种模式已经证明非常成功,他的程序员“正在继续推广这种做法。”
彼此适应存问题
如果说异性伙伴是这种结对工作模式的最佳组合的话,那么现实却更像是在上演一出永无休止的糟糕相亲闹剧。因为令结对程序员感到烦恼的事情也比比皆是:糟糕的个人卫生和进餐礼节,工作时把脚放在办公桌上以及咀嚼时发出的恼人声音等等。
总部位于澳大利亚悉尼的软件公司Atlassian就在今年愚人节制作了一部名为“匙形坐姿”的模拟教学视频短片好好讽刺了“结对编程”这种工作模式。
这部短片时长两分钟,其浏览量超过10万人次。在这部短片中,一个身形魁梧的程序员坐在另一位程序员的大腿上,并用手搂住后者的腰,两个人同时完成输入操作。解说员指出:“他们俩应该交换一下位置。谁也不想一直被人坐在大腿上。”
结对编程开始流行还要追溯到肯特•贝克在1999年撰写的《Extreme Programming Explained》一书。根据书中记述,公司应该非常快速地发行软件,而且软件本身也应该在发行的过程中不断得到完善,而两人结对编程则可以更加快速的地实现这一点。
上世纪八十年代,贝克曾与全球首个维基系统的开发者沃德•坎宁安(Ward Cunningham)同在一家软件公司工作,贝克在此期间迸发出了很多关于“结对编程”的想法。在坎宁安要求贝克检查一款软件应用的漏洞过程中,双方的合作关系逐渐形成。最终双方的合作关系发展得越发深入,两个人此后开始结对处理任务,因为这样做可以节省时间完成各自感兴趣的其他项目。
坎宁安表示:“当我清晨来到办公室时,我做的第一件事就是要找到贝克。而下班时,我们又会一起走出办公楼开车回家。”
在贝克离开这家公司后,两个人的结对编程合作才告一段落。
贝克表示:“当我们的合作终止后,我就会想。‘今后当我感到疲惫或作茧自缚时,还有谁能够注意到呢?’我需要有人能够帮我走出困境。”
发展趋势良好
软件开发公司Pivotal Labs的结对编程程序员卡梅隆--坎迪夫和塞布丽娜--施泰德(腾讯科技配图)
现在,结对编程模式发展得非常好。软件开发公司Pivotal Labs就让其175名程序员每天都以结对形式进行编程。一些程序员还有多个结对编程伙伴,他们每天都更换合作伙伴,实现了无序结对编程(Promiscuous Pairing)。
而远距离结对编程还需要程序员通过互联网在同一个屏幕上进行操作。总部位于旧金山的Square就允许程序员选择他们认为合适的时间和方式进行结对编程。Square表示,该公司约有15%的全职结对编程工程师,另有约一半工程师偶尔从事结对编程。
Square工程部经理扎克•布洛克(Zach Brock)指出:“在过了新鲜劲以后,结对编程程序员之间也会产生问题。”
总部位于北卡罗来纳州达勒姆(Durham)的软件咨询机构Relevance Inc.的程序员杰米•凯特(Jamie Kite)就在近期遭遇结对困境后与其结对编程伙伴乔恩•迪斯泰德(Jon Distad)进行了一次深谈。
凯特当时表示:“似乎我们在向完全相反的方向努力。我在全力以赴地往前赶,而你却在后面拖后腿。这到底是怎么回事?”
两个人一起在白板上写出了各自解决问题的方案。迪斯泰德表示,他们最后达成了妥协。
凯特称:“这与其他任何关系一样,如果你不讨论解决存在的问题,那么就很难进行合作。”
产生厌倦情绪
如果这种沟通方式无法解决问题,Relevance的结对编程程序员还可以求助于该公司的员工培训教练。其中的一位教练马克•菲利普斯(Marc Phillips)表示:“与很多老夫老妻一样,长时间从事结对编程的工程师也会产生厌倦情绪。”
对于很多程序员来说,编程绝对是一项极富挑战性的工作。圣迭戈软件咨询公司Drive Current的首席技术官布莱恩•科库尔(Bryan Kocol)表示,该公司的一位工程师就喜欢在编码过程中大声说话。科库尔指出:“有些人就是有自言自语的怪习惯,而这样的行为却让其他人感到非常痛苦。”
Drive Current的一位软件程序员乔恩•约翰(Jon St. John)表示,当他与更富经验的程序员结对编程时,他有时会感觉到对方非常固执己见,或者对方不给他完成想法的机会。他指出,越来越多的初级结对编程程序员可能都面临着同样的问题。
科库尔要求该公司工程师每天至少进行三个小时的结对编程,但在实施两年后,他已经逐渐放弃了这种做法。