『程序员』为什么许多程序员讨厌结对编程?


结对编程是国外非常盛行的一种敏捷开发方式 , 今天 Google 最顶级的两位程序员 Jeff Dean 和 Sanjay Ghemawat 就是结对编程世界让人颇为津津乐道的人物 。 不过 , 有人喜欢有人讨厌 , 本文作者 Tylor Borgeson 作为结对编程的实践者 , 为我们具体分析了它的好与坏 , 以及可以如何执行结对编程来更好地适合团队现状 。
『程序员』为什么许多程序员讨厌结对编程?
本文插图
作者 | Tylor Borgeson , 已获作者翻译授权
译者 | 罗昭成 , 责编 | 唐小引
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)
以下为译文:
这是我「主流软件开发实践」系列文章中的第五部分 , 在本系列文章中 , 我计划包含软件工程师通过提升开发流程和实践来改善软件开发的一系列方法 。 我曾在 ThoughtWorks 担任软件顾问 , 现在我在德国一家大型的零售公司工作 , 这些方法都是我在我的职业生涯中学习并实践验证过的 。
『程序员』为什么许多程序员讨厌结对编程?
本文插图
结对编程 , 有些人喜欢 , 有些人讨厌 , 有些人从未尝试过 , 还有一些人每天都在使用 。
那群喜欢结对编程的人认为 , 结对编程有利于团队的知识共享 , 打破成员间的知识孤岛 。 另一方面 , 结对编程(PP)可以促进团队之前的协作 , 也能够加快新成员的融入 , 更加快速的创建价值 。 还有结对编程与 CI/CD 以及主干开发能够很好的融合在一起 。
可是在另外一群不喜欢结对编程的人眼中 , 却有另一番观点 , 他们认为 , 结对编程会降低效率 , 尤其是两个开发人员经验差距较大的时候 。 他们还认为 , 这种工作方式会让开发者无法集中注意力 。 每一个人的工作方式都不同 , 在同一台电脑上工作 , 具有非常大的挑战 。
我曾经分别与这些人讨论过 , 但是我发现 , 那些结对编程中的重要事项却没有受到多大的关注 。
『程序员』为什么许多程序员讨厌结对编程?
本文插图
双刃剑
结对编程是一把双刃剑 , 有优势也有劣势 。
结对编程并不能解决所有的问题 , 但是对比其它方法 , 它是降低工作难度的一个行之有效的方法 。
按照结对编程的几种正确姿势(领航员-驾驶员模式 , 乒乓模式) , 可以使用结对编程的过程变得非常的顺畅 。
如果不是领航员-驾驶员模式 , 对于没有键盘和鼠标的人来说 , 很有可能变成这一对中的真正的“乘客” 。
在团队中 , 与其他成员配对完成有挑战的任务时 , 可以扩大整个团队的知识共享 , 增强整个团队的协作能力 。
如果团队中每一个配对的人 , 都需要花费相同的时间去工作 , 这些会给整个团队带来压力 , 导致不兼容的配对 。
在结对编程中 , 要经常休息 , 推荐使用番茄钟(在指定的时间专注工作后休息一会儿)等技术 , 即能好好休息 , 又能高效编程 。
允许其他同事打扰 , 使用两个成员都脱离“工作” 。
对每一个任务都进行结对编程有可能会给团队带来压力 。
如果仅对“复杂”的任务使用结对编程 , 这样会使大多数任务看起来“不复杂” 。
『程序员』为什么许多程序员讨厌结对编程?
本文插图
礼节
我们需要从原来带着耳机一个人工作变成与其他人一起协作 , 这是一个工作方式的转变 , 非常困难 , 这也是结对编程最具有挑战的部分 。
从本质上讲 , 这与你从一个人独自生活到与一个室友一起生活一样 。 你不得不花时间去学习如何让你的队友工作高效 , 如何让他觉得和你一起工作很舒服 。 当然 , 你的队友也会做同样的事情 。 在这种情况下 , 对于任何事情 , 都有可能需要你们做出让步 , 需要你们妥协 。