结对编程到底好不好

什么是结对编程

结对编程(Pair programming)来自于极端编程XP(eXtreme Programming),是它的十二个最佳实践之一。顾名思义,结对编程就是两个程序员坐在一起,结对进行代码开发。在极限编程中,所有的软件产品都是由两个程序员并排坐在一起,在同一台机器上共同完成的。



图1 结对编程

结对编程的两种形式

在采用结对编程实践时,不同的团队形式各异。有的是分工明确型,一个人负责编写代码,另外一个人审查代码,负责代码的正确性和可读性;还有一个人负责详细设计,一个人负责代码实现;或者一个写功能代码,一个人写测试用例。有的是共同合作型,两个人共同讨论关于所开发功能的架构设计、编码实现、测试方法、代码风格等,然后轮流做输入和观察的工作。

“老带新”不属于结对编程

在国内还有一种大家结对的方式是“老带新”,一个老员工带一个新人,这种其实不是严格意义上的结对编程,算是新人培养的一种形式。这样结对,就会出现一言堂的现象,失去了结对本身的意义。

结对编程的现状

关于结对编程在网上有很多声音,相对比其他的敏捷实践,它的争议几乎是最大的。根据VersionOne的14届年度敏捷状态报告,在组织采用的敏捷工程实践中,结对编程占受访企业的31%,排第八位,仅次于持续部署,高于TDD,由此可见,结对编程还是有一席之地、可取之处的。



图2 VersionOne的14届年度敏捷状态报告——组织采用的敏捷工程实践

关于组织是否要采用结对编程这项实践,主要是它到底适不适合自己的项目,符合自己公司的文化。选择某一项实践的时候我们要形神兼具,如果仅仅是安排两个程序员坐在一起,一个写,一个看,这只是形式上符合,而重点是要理解这项实践它背后的理念。在结对中通常要求两个程序员水平比较相近,这样可以形成互补,引起讨论。两个人的智慧大于一个人的智慧,这是结对编程的基本依据,这样就会提升产品质量,提升工作效率。下面我们一起来看一下结对编程的特点。

结对编程的特点

从项目角度,提高了产品质量

结对编程时,两个人共同完成一个功能,可以避免个人的误区存在,通常个人的想法难免有局限性,自己看自己写的代码总是觉得怎么都对。每个人站在不同的角度能够看到彼此的误差。还有通过结对,代码至少有一个程序员进行了审查,这样可以让设计、测试和编码更加友好,减少了缺陷,从而提高了产品质量。

另外,结对的形式也保证了一个功能至少两个人知道,互为形成backup,不会出现一个人请假或者离职,后续无人知的情形。有的公司还会定期更换结对的人,这样可以让团队的成员都能熟悉到项目的各个功能模块,形成项目集体所有和负责的氛围,避免了一人责任制,自扫门前雪的现象,也可以让团队成员快速的熟悉业务。

从团队角度,更好的实现了知识传递和分享,让成员关系更融洽

不可否认,结对这种面对面的沟通交流方式,对于知识和技能的传递是最好的形式。同时,这种即时的沟通交流也让同事之间关系变得融洽,相对比那种每个人一个格子间闷头写代码,更利于创建和谐的团队氛围。根据“乔哈里视窗(沟通视窗)”的理论,在实际工作的人际交往中,共同的开放区越多,沟通起来也就越便利,越不易产生误会。当我们向别人扩大我们的公开象限时,就会更多的和对方建立良好的关系,结对编程就是很好的一种形式。



图3 乔哈里视窗

结对编程其实是在结对的磨合中,慢慢的形成团队的一个共同的价值观和文化,这个过程是漫长的,潜移默化的,其中必然经历分歧和统一的过程,而很多团队在分歧中就直接停止了实践,也就无法看到结对带来的好处。

从个人角度,提高了个人的能力,提升了效率

在结对合作的时候,每个人不仅会从对方那里学到新的知识和技能,还能受到对方的工作方式和处世态度的影响。尺有所短,寸有所长,每个人都有自己的优点和长处,值得被学习和尊重。当团队中的每个人的能力提高了,其实就是整个团队能力的提高。

工作效率上,结对编程让大家更专注在工作上,个人的一些工作外的活动将不会进行。每个人都有自己要负责的任务,两个人其实形成了一个互相监督,共同进步的小团队,为了团队任务的完成,两个人都会专注在自己的任务上,这样就提高了输出的效率。

对结对编程的质疑

前面提到了对结对编程的争议很大,主要有以下两点。

管理者认为提高了人力成本

一个人可以完成的工作,变成两个人来做,产出就降低了一半,这很显然是一种浪费。关于说到的提高产品的质量,短时间无法看出来,所以,无容置疑的结对编程就被认定为一个不好的实践。

团队认为找到合适的结对人员很难

首先水平相差不太多的人在团队中不多;其次结对要求两个人的脾气性格都能够相投,否则很难合作;再次,有些人喜欢单打独斗,不善于和别人合作等等很多的原因和理由。

对于以上两点,在这里不做评判。敏捷开发不等于所有的敏捷实践都要在自己的团队落地,还是那句话:适合自己的才是最好的。

最后,按照惯例,随机送一波【福利】:超低折扣,永久有效

代做工资流水公司宜春代做房贷银行流水中山办理离职证明商丘办理对公银行流水铜陵企业流水打印价格揭阳自存流水开具汕头消费贷流水代办漳州对公流水价格成都做自存流水福州代办自存流水兰州房贷银行流水 图片莆田个人银行流水打印深圳贷款工资流水 价格黄冈薪资银行流水制作广州个人流水多少钱济南办理在职证明哈尔滨做流水嘉兴个人银行流水代做宿迁签证银行流水 代办舟山制作自存银行流水徐州代开银行流水账单商丘工资流水app截图样本合肥签证流水开具柳州工资代付流水代做合肥开工资流水app截图黄冈银行流水PS打印长春查离职证明新乡制作房贷工资流水开封对公账户流水图片珠海个人银行流水费用济宁代办流水账单香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化