使用结对编程开发出的代码中的bug可以减少15% (Laurie Williams, 2000)。然而,对我来说,这还不少最重要的。
文章讲的一个故事,来源于真实的事件改编,情节有所夸张,请勿对号入座。
结对编程并非只是把两个人扔一起、让他们疯狂撒欢。多年以来,从业者开发了一些应用于不同情况的技术,通过实践与实验,他们对这些技术作了提高与完善。
结对编程是软件开发过程中所使用的一种技术,两名程序开发人员共享同一台工作站。其中一个扮演驾驶者(Driver)的角色,进行代码编写,另一个扮演观察员(Observer)或导航员(Navigator)的角色,对代码进行评测。
我的直接主管是来自台湾的Ben,他非常喜欢探索新的开发模式,其中有一次他让我这个只有一年开发经验的人新人和一个工作三四年的工程师一起做结对编程。和我一起结对的编程的L先生是一个经验非常丰富的老工程师,他写的代码质量、效率极高,跟他一起学了很多好的编程习惯。第一次尝试采用结对编程(Pair Programming)这种编程模式,虽然时间不长,但还是感觉体会颇多,拿出来与大家分享一下。
结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。因此不少企业的开发团队都在推行结对编程,对于IT男来说,一听结对,那就最好是男女搭配吧,所以就有了这样“想要”的工作画面:
你观察一下结对比较默契的同事,他们会一起喝水,一起上厕所,一起抽烟。只有保持一致的节奏,才能最大化地提高效率。不然,一个去厕所了,另一个人在那写,回来可能就跟不上了。刚跟上,之前那位又要出去抽根烟…
本文认为,喜欢结对编程的人是少数,只是他们声音大,所以造成一种假象好像结对编程已成主流、每个团队都得搞结对编程似的;结对编程实际上效率低,内向的程序员就只想安静编程、不想边敲代码边说话边与人互动。
我也没有什么灵丹妙药能让结对成为更加神奇的体验,不过在这里我还是有几点建议,让大家可以更好的面对Marcos提到的那些挑战:
是什么原因导致他们不采用结对编程呢?在我个人的经验当中,采用结对编程和协作仍有许多障碍。许多团队合作(cooperate)的很好,但实际上并不是协作(collaborate)。因为协作基于信任,它是结对编程的关键环节之一。
如今我们也许可以称这为“结对编程”,而这种结对的方式产生的效果远超了他们两个作为单独个体的总和。Chris 如果一直依赖于这种工作方式,那他将不会有自己的原创作品。而Steve一旦失去了Chris,将不能完整的完成任何一个工作。
极限编程的各个实践已经广为人知,也颇具争议,我听到最多的话题当属结对了
结对编程有助于提高软件质量和加强团队成员合作。它有非常多的好处,但是,团队成员真的很容易结成对子吗?
应该还能用
【外评】谷歌:从源头消除内存安全漏洞
【外评】在 RiSC-V 上运行《巫师 3》游戏
【外评】法官驳回大部分 GitHub Copilot 版权索赔要求
谷歌内部推出 SQL 中的管道(Pipe)语法
你们干扰不了我写开源代码
【外评】FreeBSD 将 Rust 纳入基本系统
【外评】电脑从哪里获取时间?
【外评】为什么 Stack Overflow 正在消失?
有时