硅谷流行结对编程:一人负责写代码另一人监控

标签: 硅谷 流行 结对编程 | 发表时间:2012-08-29 09:01 | 作者:腾讯科技 马乔
出处:http://www.techweb.com.cn/rss/focus.xml

 

硅谷流行“结对编程” 分享办公时代悄然来临

结对编程的坚定支持者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)表示,当他与更富经验的程序员结对编程时,他有时会感觉到对方非常固执己见,或者对方不给他完成想法的机会。他指出,越来越多的初级结对编程程序员可能都面临着同样的问题。

  科库尔要求该公司工程师每天至少进行三个小时的结对编程,但在实施两年后,他已经逐渐放弃了这种做法。

相关 [硅谷 流行 结对编程] 推荐:

硅谷流行结对编程:一人负责写代码另一人监控

- - TechWeb 今日焦点 RSS阅读
结对编程的坚定支持者Facebook程序员肯特--贝克(腾讯科技配图).   腾讯科技讯(马乔)北京时间8月28日消息,据国外媒体报道,英国著名女作家弗吉尼亚•伍尔芙(Virginia Woolf)认为,一位女作家应该拥有一个属于她自己的房间. 而在美国硅谷,部分科技公司则对程序员是否需要属于自己的独立工作空间表示质疑.

敏捷结对编程实践

- - 技术改变世界 创新驱动中国 - 《程序员》官网
本文主要从提升项目质量、促进知识传递及减少项目风险等角度出发,讲述作者所在团队在结对编程实践中的一些经历,以及如何避免或减少其所带来的负面影响. 也许你还未曾尝试甚至还不曾了解,那么我们一起来学习和了解敏捷结对编程实践,相信对敏捷感兴趣的你会有收获. 结对编程(Pair Programming)是一种敏捷软件开发实践,指两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘和鼠标一起工作.

转:结对编程的误区

- - 膘叔
结对编程在我们现在的工作中真的没有使用这玩意. 极限编程也没有用到,我们还是安稳的在一步一步的开发. 其实,在07年的时候,那时候和一哥们就尝试过结对,效率确实上升了不少,但后来仔细想想,正由于两个人水平相近,这样的结对却没有真正带来了效率上升,反而还不如两个人单独开发,事后合并代码. 虽然有一些BUG,但总体代码却多写了很多.

结对编程——我的噩梦

- - 博客园_知识库
   英文原文: Pair Programming - My Personal Nightmare.   自从 极限编程诞生起,我就一直在听说结对编程是个 好东西. 所有的敏捷传教士们都在告诉我们:结对编程能提高代码质量,有助知识共享,甚至激发开发效率,同时,还能深度拉近程序员之间的感情关系(参看 拥抱编程).

结对编程的价值及注意点

- - Juven Xu
结对编程( Pair Programming)可能是最受争议一项的敏捷实践,持续集成和重构基本已经普遍被大家认同了,TDD还能引发 很大的口水仗,倡导结对编程则有被狂砸砖头的风险,本文我不想说结对编程绝对有多好,我想分享的是一些有关结对编程我体验和观察到的价值,以及几个我认为特别需要注意的地方,尤其是后者, 如果以错误地方式用结对编程,弊很可能大于利.

结对编程成为主流,但反响冷淡

- - InfoQ cn
华尔街日报开始注意到越来越多的技术公司在实践结对编程,并在题为“ 计算机程序员在共享中学到深刻教训”的文章中发表了自己的看法. 在技术公司中,结对寻找到了支持者. 这些公司包括Facebook和移动支付创业公司Square. 结对的倡导者对结对的力量赞不绝口,声称结对程序员可以捕获不采用结对时需要花很大代价才能找到的软件错误,而且不太可能花时间上网冲浪.

变化是如何产生的——有关结对编程

- - Juven Xu
一个十多人的团队,十个月前,每个人都习惯在自己的一块自留地代码上劳作,当管理层推结对编程时,大部分人反应冷漠甚至抵触. 今天,这个团队的几乎所有人都愿意接受结对编程这种工作方式,各个人对整个系统的了解更好了,遇到不熟悉的地方都很自然地想到找个熟悉的人来结对,很自然的,团队合作更好了. 然而,同样的公司,不是所有的团队都有这样的变化, 自留地式的工作方式在一些团队非常普遍,这是为什么.

结对编程 VS 代码审查:对比开发者文化

- - ITeye资讯频道
从上一份工作到现在的这份工作,我从结对编程的开发文化过渡到同行代码审查,这个转变过程是一个非常有趣的经历. 我认为我要记录下些我所注意到的变化. 你可以找到很多标题是/(结对编程|代码审查)的(利|弊)/这种样式的文章,这些文章的作者都可以给出一套清晰且有说服力执行方案. 我认为只要权衡它们的利弊,这两种方案都是非常有效率的.

作为程序员, 你结对编程过吗?(结对编程的意义,经济学价值和个人看法)

- 華 - 博客园-首页原创精华区
在此模式下,一对程序员并肩作战,平等互补进行开发工作. 两个程序员并排坐在一台电脑前,同对一台显示器,使用同一个键盘,同一个鼠标进行工作. 一起分析,一起测试,一起设计,一起编程. 那么结对编程中两个人如何扮演角色. 驾驶员是控制键盘输入的人,而领航员是起到领航,提醒的作用. 你说工程量是一定的,如果两个人编程,那么编程速度就会提高一倍,时间就会节省一半,为什么要编程.

每日站会、代码审查、结对编程 之开源中国实践

- - 翟志军
在我来到开源中国之后,尝试将每日站会、代码审查、结对编程这三种编程实践带入团队. 而这个过程,我个人觉得是一项非常宝贵的体验. 先介绍下目前我们团队的结构:3名Java开发,1名前端,2名实习. 以下我不会详细介绍它们分别是什么,也无意讨论它们有什么好处坏处,本文侧重分享在实践它们的过程可能遇到的问题,以及我们是如何处理的.