译 | 结对编程实践指南
我们来谈谈结对编程。结对编程是一种极限编程技术;它是Kent Beck & Cynthia Andres的极限编程中的12种实践之一。然而,它实际上比这更古老,有关于它的研究(Nick V. Flor, Edin L. Hitchins, 1991)可以追溯到90年代早期。
结对编程最基本的意思是两个或多个人共享一台计算机,同时编写代码的行为。这能让你与其他开发人员建立密切的关系,帮助开发人员进行结对学习,并在团队中创建共享所有权的责任感。这些社交活动使团队能够互相信任,从而发挥自己的最大作用。
使用结对编程开发出的代码中的bug可以减少15% (Laurie Williams, 2000)。然而,对我来说,这还不少最重要的。
角色
让两个人在同一台电脑上工作的方法和让多个人共同开发一样,有很多种。然而,我在结对编程方面最有效的经验是确定参与者的两个角色:司机和向导。
司机负责输入代码。他们控制着键盘和鼠标,他们专注于语法和打字的细节。
路导负责指导和解释。他把握更大范围内做什么的纲领,考虑整体设计,并帮助提醒小的遗漏。
这些角色不是永远固定不变的,而是根据结对的动态变化而变化的。
我在结对编程中应该是什么角色?
水平高/水平低
当你和一个高技能的人或一个低技能的人在一起时,我推荐:
- 高技能人当路导
- 低技能的人当司机
这意味着没有经验的人需要亲自动手,有经验的人需要解释他们的行为,确保所有的细节都被分享。
学习测试驱动开发
当你刚开始测试驱动开发时,练习“乒乓”对编程。遵循下面的步骤:
- 编写测试
- 互换角色
- 实现代码使测试通过
- 返回1。
这种步骤使得测试优先,要保持角色快速转换,确保每个人都参与其中。
学习结对编程
当不熟悉结对编程但熟悉测试驱动开发时:
- 写代码直到你需要休息(或者工作45分钟了)
- 休息一下
- 互换角色
- 返回1。
这能让你学习结对的过程,学会如何简化它,我们鼓励频繁的休息。当你变得更有经验的时候,这种步骤会让你感到限制,所以当你感到有自信时,你可以放弃这种步骤。
这些并不是原则性的规则,但是当你的伴侣是新的时候,它们可以帮助你、指导你。过一段时间,你就能感觉到什么时候是交换角色的好时机了,但要记得要友善。注意你的搭档,如果他们在一个角色上呆了很长时间,那就主动提出交换。
问题
当你开始结对的时候,你会感觉让自己处于一种随时都可能被质疑的状态,并且不得不花大力气解释你解决问题的方法,这会让你感到疲倦、沮丧和却步。为了让结对编程成为一种有用的体验,这里有一些当你开始和一个新的队友结对时很有用的技巧。
感觉有困难时就停下来
你会觉得累。这是我进行结对编程时的最大障碍之一。我真的很想让它发挥作用,但工作结束后,我感到筋疲力尽,几乎要放弃了。
你会表现很脆弱,在结对过程中,你会处于精神紧张状态,但有一天你开始关心你的队友,在需要停下来的时候你可以直觉地感觉到,你需要强迫自己停下来。随着时间的推移,你知道了你的伴侣的节奏和你自己的模式,事情将变得更容易。
有一种技术叫做“番茄工作法”,如果你正在经历这种困境,我推荐你使用它。
这是这样的:
- 设置25分钟的定时器
- 编程,直到计时器结束
- 在一张纸上画一个勾号。
- 如果少于4个√,休息5分钟,否则休息15-30分钟。
- 擦去这些记号
- 回到步骤1。
这将迫使你休息很多时间,不管你感觉如何。过一段时间后,如果25分钟太短,你想要工作更长时间,或者你想完全扔掉计时器,你可以和你的伴侣商量。
此时,在你和你的工作之间保持一些精神距离也很重要。不要老坐在电脑前。
如果你是一个外向的人,也许乒乓球对你的长时间休息是有好处的,如果你是一个内向的人,有一点独处的时间喝点东西,做点运动是很好的选择。
分而治之
如果你发现你总是需要在网上搜索答案,可是很沮丧沮丧,你无法找到你想要的信息,那么,离开一会儿再回来。
你可以这样做:
- 用一小段时间搜索
- 分开做你们的搜索
- 一起来分享你找到的东西
- 确定一种方法
- 两人再次结对
提醒一句。在此期间,您需要确保双方都不写代码。代码是一个共享的东西,当需要研究时,工作应该一起完成。
沉默不语时去休息或交互角色
在结对编程中,沉默是不好的信号。如果你一句话不说话,就会破坏和队友的关系。这可能是因为您的司机喜欢自己做事,或者您的路导没有在指导。也可能因为某人不快乐。
你可以这样处理:
- 长时间休息(如果你通常需要5分钟,那么就需要15分钟)
- 当你回来的时候,确认一下你要工作多久再休息或者换角色
- 互换角色
- 继续编写代码
这样两个人都有时间检查邮件或做让他们分心的事情,恢复一些精神力量,进入一个更快乐的状态,如果是司机把车开偏了,要求他们解释他们在做什么。
让结对更容易
如果你正在管理一个团队,你正在努力保持各个结对编程组正常进行,更容易的一种方法是从共用一台电脑改变为使用结对工作站。这更容易,他们就不会要求独自工作了。
结对工作站是一台有两个显示器、两个键盘和两只鼠标的单机。它仍然是2张桌子,这意味着你的伴侣可以舒服地不撞腿。这可以是一个可以容纳两个监视器的桌面,或者一个开发人员可以带他们的笔记本或混用。都行。
结对是一种习得的技能
我想让你们从结对编程中学到的是你们需要练习才能擅长的东西。结对编程能增加团队内部的交互,一开始可能很困难,但是使用上面描述的办法,您最终会达到目的。
坚持下去,不要气馁,继续学习。
英文原文:Pair Programming: A Practical Guide
你也许感兴趣的:
- 一次不顺利的结对编程
- 六种不同的结对编程模式对比
- 结对编程的好处与坏处
- 第一次尝试结对编程的心得体会
- 我们想要的结对编程是这样的,但现实却是……
- 如何爱上结对编程
- 结对编程真的好吗?消停会儿吧
- 让结对编程更有效的十种方法
- 为什么结对编程并不那么受欢迎?
- 两个程序员结对编程的故事
你对本文的反应是: