结对编程(Pair Programming)的实践、衍生和变体
2020-01-03
来源:技术大V公众号
在上一篇中,我们介绍了极限编程(XP)。极限编程中的核心实践之一就是结对编程(Pair Programming,也译结伴编程)。然而结对编程随着时间的发展,越来越流行,渐渐有成为一个独立实践的倾向,以致很多并未实施极限编程的开发团队很多时候也或多或少的采用了结对编程。另外,结对编程的概念虽然是1996年才正式由极限编程发明者肯特贝克(Kent Beck,现Facebook脸书员工)提出,但与其类似的实践其实早在80年代初就已经有人实行,只是没有正式归纳和理论化。这从另一方面说明,诸如此类的实践在软件开发中的确是一直有需求的,即使是在没有系统理论指导的情况下。接下来,我们就扩展讨论一下结对编程的实践、变体、衍生和注意事项。
结对编程的标准做法
两个人共用一台计算机,一个人负责具体输入代码,这个人称为驾驶员(Driver)。
另一个人坐在旁边,负责审查代码、检视设计、从更高的层面思考架构是否合理。这个人称为领航员或观察员(Navigator)。
每隔一段时间(比如半小时或一小时),两人互换角色。
两个正在进行结对编程的程序员
结对编程的优势
提高代码质量:
大大减少了代码中的缺陷。因为一个程序员的想法经验可能有局限,或思考某个问题时恰好陷入了思维的盲区,但两个人的想法、过往经验、知识结构很多时候能形成互补。当结对编程时,代码中的缺陷必须是两个人盲区的交集,范围比一个人的盲区小很多。讨论架构和设计时,两个人的视角比起一个人来讲,也能从更多的方面、角度去分析问题。
知识分享:
采用结对编程会自然而然的促进知识和经验的分享。有些程序员喜欢留一手绝活,另一些程序员愿意分享,但也不一定随时都有时间和平台去帮助其他人。而采用结对编程,结伴的两人一起工作,互相讨论,必须要为完成同一个目标努力,相关的知识和经验自然就分享了,不可能藏私。其中很多东西可能还是书本上学不到的独家实践经验,这方面带来的好处在一个老手和一个新手搭配时尤其明显,新手会得到很明显的成长。当每隔一段时间将结对对象重新组合时,将会更加促进知识在整个团队中的传播。
多重人选:
结对编程使得每个功能都会有至少两个了解它的人。这样在团队中有人离职或休假时,仍然有人可以处理关于相应功能的问题,避免了单点失败。
信心和积极性:
由于两个人在一起工作,每个人更不容易分心、偷懒,不会出现一不小心就发呆的情况。面对复杂问题也更有底气,更活跃。由于有来自结对对象的输入和讨论,也更不容易出现对一个问题无计可施而卡壳的情况。
团队建设:
通过不断变化结伴对象,能让团队中的每个成员都有机会和其他成员进行合作。结对中的两人合作顺利的话,会建立起情谊,产生认同。久而久之,大家都对团队中每个成员的长处、缺点、能力、性格有所了解。这样一方面可以建立起团队认同,另一方面也增进对团队了解,可以根据大家的反馈,认识到核心成员的重要程度,帮助有缺点的成员提高,淘汰不合格的成员。
结对时的不同搭配
老手+老手
如果两个老手所擅长的领域不一样,两人的结伴还是能给互相之间带来很多的能力扩展。如果两人知识结构、擅长领域比较雷同,则在成长上相对好处比较有限。另外两个老手的结伴多用于比较复杂的问题或特别重要的任务,比如最顶层架构、核心设计或关键算法等。如果是特别简单又不重要的任务,让两个老手结伴可能还不如让他们分别行动。
老手
免责声明:
1、IT项目管理界发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!
-
延伸阅读:
-