Z-Turn实验室-基于tmux的结对编程

一、极限编程与结对编程

结对编程(Pair Programming)是极限编程(Extreme Programming)的一种实践, 名声不小,但是在业界却很少采用,首先这个名字给人的感觉像是两个人干一个人的活一样,其次他的好处也不是立竿见影的,那什么是结对编程呢?

结对编程实践可以看做一种代码评审方式:极限编程实践者认为既然代码评审是有意义的,那推到极致就是即时评审,这也是结对编程提出的初衷。结对过程让团队在一起解决问题,一起成长。结对是成员之间共享知识,避免形成知识孤岛的方法。很多实践结对编程的团队报告说,结对可以显著减少错误并提高代码和设计质量。

二、Tmux

最近发现一直使用的tmux还可以方便地用于结对编程

tmux 提供的 socket 支持,可以创建让多个用户非常容易连接和共享的 tmux 会话,达到多人对同一个会话窗口协同编辑的效果(类比quip),原理如下图:

  1. Alice和Bob 通过ssh连接到同一个服务器
  2. Alice新建一个会话:tmux new -s shared
  3. Bob加入Alice刚刚新建的会话:tmux attach -t shared

三、建议配套工具

  • 推荐使用Vim作为IDE来编程,效果更佳
  • 结对编程需要频繁的沟通,最好是语音甚至是视频,推荐使用腾讯会议(分享屏幕+画图功能),适合头脑风暴

四、结对编程过程

  • 频繁交流沟通、头脑风暴
    • 一遍写代码,一遍向同事解释写代码的意图,有助于让同事了解自己的思路,也帮助自己更好地梳理思路,同时方便更好地头脑风暴
    • 不懂的地方提问,
  • 测试驱动
    • 一位写测试用例代码,另一位快速实现能通过测试的最小功能实现代码
  • 实时code review
    • 一位coding,另一位实时做code review,能及时发现并讨论问题,实时优化代码质量
  • 知识在团队内部传播,传帮带
    • 一般来说有经验者会更多地coding,相对经验较少的可以从中学习很多,可以快速帮助新手入门上手,使知识在团队内部传播、继承
  • 开放且善于倾听的心态

五、挖坑

  • 使用Vim在服务器端搭建一个友好的、易于编程的IDE环境
  • 找个志同道合的小伙伴,一起实践一下结对编程
柚子

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Index