结对编程,有诸多好处,可以有效提高代码质量,提升团队水平和代码的熟悉程度,而且工作效率也是非常高,但在国内很少有人实施,到底是何种原因?
由于很好奇结对编程领域,我们特制作了相关的小视频,欢迎感兴趣的朋友一起来探讨:
https://www.zentao.net/redirect-index-19048.大带宽服务器html
这个视频拍的很像是微信朋友圈那些炒股、贷款、小游戏广告,哈哈哈,没有恶意,只是吐槽下超尬的演技
我曾经在团队实施过。
选了两对工位挨着的做了下实验,发现这玩意真的和人的性格有关系,一对俩人都是脾气很好的,交流起来非常顺畅,另一对有个个性很强的所以过程中有点不愉快。
最后的结果还不错,两对的代码质量都很好,如果功能模块比较大的话用这种方式其实还可以,开发效率确实非常高,毕竟俩人都不能摸鱼了。
不过这样容易累着,毕竟俩人都高强度的工作一整天,一两周年轻还能扛,多了就容易废了
年代久远,那个时候刚开始摸索拍摄,现在全用动画代替了哈哈哈哈
工地上老板为了赶工期让劳工 996 搬砖,期待一个人顶三个人用,做出来工程能用就行,要抢占赛道。后面来了一个砖家说你们这不合理,应该结对搬砖,两个工人相互监督、合作一起搬砖,可以保证大家砌得墙又好看又耐用。
所以你猜老板会不会采纳砖家的建议:)
一定要水平相当的
两个人干一个人的事情,在当前的环境压力下怎么可能会成功。
我也很好奇结对编程在效率上和质量上是不是会更好?
不过感觉这种方式对参与人员的基础要求挺高的,比方说技术能力表达能力和情商都得合格才行
因为要划水嘛。
如果是那种自我驱动型的企业和员工,结对编程,应该是比较好的。
如果是大多需要时间来放松的,不那么紧张的,肯定不能接受啊。
换句话说,如果两个 indie(创业者),结对编程的话,那效率肯定杠杠的,可以互相督促,互相讨论,最大限度激发热情,并保持下去。如果是给公司做,还是算了吧。
公司不鼓励同事间谈恋爱
不方便摸鱼
对公司来说,两个人干一个人的活,血亏。
对个人来说,不能摸鱼了,高强度工作一天,要命。
一个人干两个人的活好,还是两个人干一个人的活好?老板期望的时后者
前者
旗鼓相当且合拍的两个人可遇不可求。
虽然你只是在引流罢了。
给我分配个妹子我可以接受,男的就算了,影响我摸鱼
成本比较高,都 996 一个人干 N 个人的活了,还想两个人干一个人的活?
我有一段比较长的跟另外一个同事一起合作项目的经历,一个任务下来我们都是先讨论梳理如何实现,然后拆分小任务,逐个完成,整个过程都是一起相互 review 相互辅助,过程还是挺高效愉快的(确实如 2 楼提到的一样,两个人得水平一致相互认同并且容易沟通)。但是直到最后要评绩效,领导说我们两个人干一样的事情,为了平衡其他人,我们两个人只能一个拿好的绩效,从此因为利益问题分道扬镳各干各的。。。当然这可能只是领导的话术而已,可能对于国内大部分公司来说,更希望看到的是团队内部每个人都在相互竞争相互争那个 TOP30%而不是「结对」,量比质更重要。。。ps.有施行结对编程成功例子的公司吗?
其实就是成本高。在上家公司几年全程结对,其实挺不错的。主要是可以替代很多培训,文档,小的设计讨论,等等的很多东西,也不怕某些人突然请假或者跑路,仔细想其实总能想到很多其他的好处。个人觉得这个实践比其他的敏捷实践都好使。
一般来说说,培训是一个特别难的事情,即使花钱主动搞培训效果都很有限,因为好的老师不了解项目,项目上的人也不是好老师。结对能潜移默化地做到知识传播。
缺点就是贵一些,不过考虑到人月的关系其实并不是 2 倍的成本,因为结对的时候一对 pair 当一个人用。
另外感觉楼上很多同学有一些误解:
> 一定要水平相当的
我们一般尽量水平不相当的搞,让 Junior 主导,包括和其他角色的各种交流等等,Senior 打辅助。这样 Junior 成长得快,然后有 Senior 不容易太跑偏。
> 旗鼓相当且合拍的两个人可遇不可求。
> 发现这玩意真的和人的性格有关系
结对没有固定的 pair,的时候要来回轮换,一般要统一换两次,一个人留在原来的任务上,另外一个人换出去。这样才能达到互相了解设计的目的。
> 不过感觉这种方式对参与人员的基础要求挺高的,比方说技术能力表达能力和情商都得合格才行
这个确实,至少得有一个人还不错,不过这样也是种锻炼,表达能力不好的 Junior 需要每天要主导交流,一般一段时间下来都不会太差。在团队里面开发软件,这些都是很重要的。这样下来团队里的 Senior 表达能力就都还行。
> 对个人来说,不能摸鱼了
这个也确实,不过这个就看默契了,有时候能看到两个 Senior 在一起的时候节奏特别好,轮流摸鱼。
而且个人觉得摸鱼是正常工作的一部分,都绷紧了很快筋疲力竭还是影响效率,正常结对的时候也需要插入一些摸鱼进去。一般轮流写测试和实现的时候,别人写代码的时候大概知道写啥就行了,走会神摸会鱼都是可以的,对方发现有坑再一起探讨。还有的人跟番茄差不多,隔一段时间会直接说咱俩歇十分钟。困了趴会也是很有帮助的…
不过说回来,跟敏捷的各种东西一样,比如持续交付不是有个 CI Monitor 做做样子就行,结对最后还是取决于实施的质量,要获得好处,避免坑。不然最后就会变成全员吵架 + 结对摸鱼。
以前做的不少,有个问题,就是会比较耗费时间。而且后面大家磨合时间长了代码风格和水平会趋同,再做结对的话效果没那么明显。带新人倒是会偶尔来一会,熟悉流程和风格。
相比结对编程,感觉 code review 也能达到同样的目的,而且在更长期的工作中实施起来更高效省时
好惨,人也重要,工作“环境”也很重要。
你给我分一个我写的小说里的女主跟我结对编程,我肯定老开心了。
我跟谷歌结对.
国内大多数业务都是互联网业务,互联网业务的一大特点就是简单,多数就是 crud,结对干什么?完全浪费生产力
两个男的坐一块一整天感觉气氛有点怪怪的
大学大作业倒是没少有这样的体验
吹过
bitbucket 带过来的
那时候 github 还没一捅天下
大致是和程序员鼓励师是同一个时期的
这不就是对食吗?
辣眼睛 / doge
因为国内互联网行业普遍对质量不看重,更想要速度,即使后面解 bug 加起来耗费的时间更多,但是没关系,产品已经上线,老板能对外吹牛逼了
我认为很好,也希望这种文化流行开来。
结对编程,老板能认可这种浪费人力的行为,求品质而不堆量,这样的环境氛围对程序员会友好很多。
而且,一个人闷着写代码会弱化自己的口头表达能力,对个人的长远发展不太好,而结对编程可以弥补这一点。
另外,可能与自己的经历有关;
以前待的公司很很小,一个端一个人,遇到一些新奇东西想当面分享的人都没有,遇到难题也只能一个人闷着解决。
现在在的公司两个人负责一个项目,虽不是完全意义的结对编程,但遇到难题提一句对方便明白,这种感觉还时很好的。
引用维基上的解释:在学术圈里,结对编程也是争议的。其原因是过往学术期刊所发表的结对编程实验,基本上其他学者很难让重复实验核对。所以很多结对编程实验只有原作者才真正了解结果。
看成对食。。。。
男女搭配,干活不累。/斜眼笑