结对编程反模式 / Pair Programming Antipatterns

只要简单地避免不当的结对, 就有可能能够较好地结对编程.

远离这些常见错误, 你们将会提高成功的机会.

对于导航员

过快地指出错误

给你的驾驶员一个机会, 让他们自己注意到他们的语法错误和拼写错误.

不断地指出小错误会使这个过程受到影响, 包括你的和他的. 而且还会使你对于结对编程感到自我满足.

记住: 你的任务是考虑大局, 而不是一发现有错别字就指出来.

给太多低级指令

如果你对驾驶员有什么建议, 请在他们能理解的更高抽象层次上进行沟通.

如果你发现你自己正在口述代码(或者更糟糕, 已经自己敲键盘写起来了), 请停下来, 看看是否能够在更高层次上传递你的想法.

如果没成功, 那就要求暂时成为驾驶员, 把你的想法勾勒出来.

不带键盘

每次结对都带上自己的键盘. 在开始之间就插上.

这会使角色切换更加容易, 而且可以使你在沟通不行的时候用行动来表达.

有一个自己的鼠标也很好, 但不是那么重要. (要求别人点击某个东西很容易, 要求他们输入很多字符就很困难了.)

对于驾驶员

开太快

如果你对你的编辑器很熟悉, 那么很容易跟丢, 即使是有经验的导航员.

除非你确保你的伙伴跟上了, 不要以相当快的速度操作代码.

如果你在描述你在做什么, 这非常有帮助.

允许你的伙伴掉线/走神

如果行进太快, 或者你在做一些他们不理解的事情, 是很容易失去导航员的注意力的.

如果你发现你的伙伴的注意力在漂移, 停下来, 重新同步一下.

坏问题: "你明白这个, 对不?"

好问题: "你觉得这里面那一部分最难理解?"

结对编程应该是持续的双向交流. 如果你或者导航员一方沉默了, 停下来, 检查一下.

平等的看屏幕

坐好, 然后显示器应该在你们之间. 确保你们两个人都能平等地看到它(考虑增大字体大小).

如果一个人被挤到一边去了, 会在潜意识中造成不平等等级制度的印象.

一个结对是一个最小的单元. 两个人中没有哪个人更重要.

中间不休息

结对编程是很耗费精力的, 甚至比正常编程还要累.

一个用来保证足够休息时间的好方法是番茄钟. 考虑在开始之前先与你的搭档商量好工作和休息的时间长度.

听了但是没听进去

同时听和打字是很难的.

如果你的导航员提了个建议, 考虑把你的手从键盘上拿开. 更好的方法是: 转个身, 有些眼神交流.

对于两个人

出现生产力低下的分心

在开始结对之前, 关掉所有的通知(包括电脑和手机).

一个结对不应该被任何Slack通知或者短信打断. 如果有, 道歉并且关闭.

不要在另一个显示器上开着你的邮箱.

(即使你不结对, 你也应该做上面的事情. 提高编程效率的最快方法就是减少打断.)

不切换角色

由于不同的原因, "驾驶"和"导航"都会很消耗精力.

交换角色让你休息大脑中疲惫的部分, 激活闲置的部分.

当结对编程失去动力的时候, 交换一下驾驶员是为其注入动力的很好的方法. 考虑设置一个定时器(番茄钟), 来提示每次的交换.

忘记了结对编程是一项技能

结对编程是一项必须学习的技能.

一开始你不会很擅长, 但是持续的联系会带来进步.

不要第一次经历困难就放弃. 不要认为有经验的开发者会自动编程好的结对伙伴. 不要期望着不经练习就会变好.

试着和你的搭档一回顾一下, 或者在每次结对编程之后问问他们的反馈. 有什么可以做得更好?