译 | 结对编程实践指南

我们来谈谈结对编程。结对编程是一种极限编程技术;它是Kent Beck & Cynthia Andres的极限编程中的12种实践之一。然而,它实际上比这更古老,有关于它的研究(Nick V. Flor, Edin L. Hitchins, 1991)可以追溯到90年代早期。

结对编程最基本的意思是两个或多个人共享一台计算机,同时编写代码的行为。这能让你与其他开发人员建立密切的关系,帮助开发人员进行结对学习,并在团队中创建共享所有权的责任感。这些社交活动使团队能够互相信任,从而发挥自己的最大作用。

使用结对编程开发出的代码中的bug可以减少15% (Laurie Williams, 2000)。然而,对我来说,这还不少最重要的。

角色

让两个人在同一台电脑上工作的方法和让多个人共同开发一样,有很多种。然而,我在结对编程方面最有效的经验是确定参与者的两个角色:司机和向导。

司机负责输入代码。他们控制着键盘和鼠标,他们专注于语法和打字的细节。

路导负责指导和解释。他把握更大范围内做什么的纲领,考虑整体设计,并帮助提醒小的遗漏。

这些角色不是永远固定不变的,而是根据结对的动态变化而变化的。

我在结对编程中应该是什么角色?

水平高/水平低

当你和一个高技能的人或一个低技能的人在一起时,我推荐:

  • 高技能人当路导
  • 低技能的人当司机

这意味着没有经验的人需要亲自动手,有经验的人需要解释他们的行为,确保所有的细节都被分享。

学习测试驱动开发

当你刚开始测试驱动开发时,练习“乒乓”对编程。遵循下面的步骤:

  1. 编写测试
  2. 互换角色
  3. 实现代码使测试通过
  4. 返回1。

这种步骤使得测试优先,要保持角色快速转换,确保每个人都参与其中。

学习结对编程

当不熟悉结对编程但熟悉测试驱动开发时:

  1. 写代码直到你需要休息(或者工作45分钟了)
  2. 休息一下
  3. 互换角色
  4. 返回1。

这能让你学习结对的过程,学会如何简化它,我们鼓励频繁的休息。当你变得更有经验的时候,这种步骤会让你感到限制,所以当你感到有自信时,你可以放弃这种步骤。

这些并不是原则性的规则,但是当你的伴侣是新的时候,它们可以帮助你、指导你。过一段时间,你就能感觉到什么时候是交换角色的好时机了,但要记得要友善。注意你的搭档,如果他们在一个角色上呆了很长时间,那就主动提出交换。

问题

当你开始结对的时候,你会感觉让自己处于一种随时都可能被质疑的状态,并且不得不花大力气解释你解决问题的方法,这会让你感到疲倦、沮丧和却步。为了让结对编程成为一种有用的体验,这里有一些当你开始和一个新的队友结对时很有用的技巧。

感觉有困难时就停下来

你会觉得累。这是我进行结对编程时的最大障碍之一。我真的很想让它发挥作用,但工作结束后,我感到筋疲力尽,几乎要放弃了。

你会表现很脆弱,在结对过程中,你会处于精神紧张状态,但有一天你开始关心你的队友,在需要停下来的时候你可以直觉地感觉到,你需要强迫自己停下来。随着时间的推移,你知道了你的伴侣的节奏和你自己的模式,事情将变得更容易。

有一种技术叫做“番茄工作法”,如果你正在经历这种困境,我推荐你使用它。

这是这样的:

  1. 设置25分钟的定时器
  2. 编程,直到计时器结束
  3. 在一张纸上画一个勾号。
  4. 如果少于4个√,休息5分钟,否则休息15-30分钟。
  5. 擦去这些记号
  6. 回到步骤1。

这将迫使你休息很多时间,不管你感觉如何。过一段时间后,如果25分钟太短,你想要工作更长时间,或者你想完全扔掉计时器,你可以和你的伴侣商量。

此时,在你和你的工作之间保持一些精神距离也很重要。不要老坐在电脑前。

如果你是一个外向的人,也许乒乓球对你的长时间休息是有好处的,如果你是一个内向的人,有一点独处的时间喝点东西,做点运动是很好的选择。

分而治之

如果你发现你总是需要在网上搜索答案,可是很沮丧沮丧,你无法找到你想要的信息,那么,离开一会儿再回来。

你可以这样做:

  1. 用一小段时间搜索
  2. 分开做你们的搜索
  3. 一起来分享你找到的东西
  4. 确定一种方法
  5. 两人再次结对

提醒一句。在此期间,您需要确保双方都不写代码。代码是一个共享的东西,当需要研究时,工作应该一起完成。

沉默不语时去休息或交互角色

在结对编程中,沉默是不好的信号。如果你一句话不说话,就会破坏和队友的关系。这可能是因为您的司机喜欢自己做事,或者您的路导没有在指导。也可能因为某人不快乐。

你可以这样处理:

  1. 长时间休息(如果你通常需要5分钟,那么就需要15分钟)
  2. 当你回来的时候,确认一下你要工作多久再休息或者换角色
  3. 互换角色
  4. 继续编写代码

这样两个人都有时间检查邮件或做让他们分心的事情,恢复一些精神力量,进入一个更快乐的状态,如果是司机把车开偏了,要求他们解释他们在做什么。

让结对更容易

如果你正在管理一个团队,你正在努力保持各个结对编程组正常进行,更容易的一种方法是从共用一台电脑改变为使用结对工作站。这更容易,他们就不会要求独自工作了。

结对工作站是一台有两个显示器、两个键盘和两只鼠标的单机。它仍然是2张桌子,这意味着你的伴侣可以舒服地不撞腿。这可以是一个可以容纳两个监视器的桌面,或者一个开发人员可以带他们的笔记本或混用。都行。

结对是一种习得的技能

我想让你们从结对编程中学到的是你们需要练习才能擅长的东西。结对编程能增加团队内部的交互,一开始可能很困难,但是使用上面描述的办法,您最终会达到目的。

坚持下去,不要气馁,继续学习。

英文原文:Pair Programming: A Practical Guide

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

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