一、极限编程与结对编程
结对编程(Pair Programming)是极限编程(Extreme Programming)的一种实践, 名声不小,但是在业界却很少采用,首先这个名字给人的感觉像是两个人干一个人的活一样,其次他的好处也不是立竿见影的,那什么是结对编程呢?
结对编程实践可以看做一种代码评审方式:极限编程实践者认为既然代码评审是有意义的,那推到极致就是即时评审,这也是结对编程提出的初衷。结对过程让团队在一起解决问题,一起成长。结对是成员之间共享知识,避免形成知识孤岛的方法。很多实践结对编程的团队报告说,结对可以显著减少错误并提高代码和设计质量。
二、Tmux
最近发现一直使用的tmux还可以方便地用于结对编程
tmux 提供的 socket 支持,可以创建让多个用户非常容易连接和共享的 tmux 会话,达到多人对同一个会话窗口协同编辑的效果(类比quip),原理如下图:

- Alice和Bob 通过ssh连接到同一个服务器
- Alice新建一个会话:
tmux new -s shared
- Bob加入Alice刚刚新建的会话:
tmux attach -t shared
三、建议配套工具
- 推荐使用Vim作为IDE来编程,效果更佳
- 结对编程需要频繁的沟通,最好是语音甚至是视频,推荐使用腾讯会议(分享屏幕+画图功能),适合头脑风暴
四、结对编程过程
- 频繁交流沟通、头脑风暴
- 一遍写代码,一遍向同事解释写代码的意图,有助于让同事了解自己的思路,也帮助自己更好地梳理思路,同时方便更好地头脑风暴
- 不懂的地方提问,
- 测试驱动
- 一位写测试用例代码,另一位快速实现能通过测试的最小功能实现代码
- 实时code review
- 一位coding,另一位实时做code review,能及时发现并讨论问题,实时优化代码质量
- 知识在团队内部传播,传帮带
- 一般来说有经验者会更多地coding,相对经验较少的可以从中学习很多,可以快速帮助新手入门上手,使知识在团队内部传播、继承
- 开放且善于倾听的心态
五、挖坑
- 使用Vim在服务器端搭建一个友好的、易于编程的IDE环境
- 找个志同道合的小伙伴,一起实践一下结对编程
发表回复