专业编程的世界总是会产生一些非常激烈的争论。例如关于是否以及如何注释代码。很难平息这些争论,因为很难科学地证明专业编程。我们真的不能要求大公司用控制组和实验组两次构建相同的软件。所以很多时候,我们的依据都是道听途说或者个人看法,非常缺乏实证数据。因此,与其说是否选择结对编程,不如说今天我想谈谈结对编程的模式。我之前已经从业务角度谈过结对编程的好处,今天的文章也是如此。您可以从中受益,但您必须评估它是否对您有意义。要进行良好的评估,您应该了解不同的结对编程模型以及它们的工作原理。是的,结对编程不仅仅是将两个人放在一起,让他们尽情发挥。多年来,从业者开发了适用于不同情况的技术,并且通过实践和实验,他们改进和完善了这些技术。1.不同熟练程度对结对编程模型的影响在查看实际解决方案之前,让我们先绕个小弯,看看不同开发人员的技术水平。尽管我们似乎特别倾向于在技能水平之间进行细粒度区分,但我认为实际上只有两个开发人员技能水平:初学者和专家。我知道我知道,你一定觉得这个划分太草率了,但是确实把复杂度降到了最低,而且可以很好的解释不同的配对模式。根据我们的两个技能水平,可以得出以下三种配对组合:Expert-ExpertExpert-BeginnerBeginner-Beginner请注意,我这里说的专业技能是背景的一部分,而不是一般的行业经验。技术的积累,对代码库的熟悉,甚至是专业的领域知识,在这里都很重要。我拥有两个计算机科学学位和数年使用多种面向对象编程语言的经验,但如果有一天我加入你们的Go团队,你们可以安全地将我置于初学者阵营,直到我找到自己的团队。位置。每种配对模式都有利有弊,但有时命运可能会迫使您根据可用的人做出选择,了解不同配对模式将帮助您在那个时候更加有效。此外,值得一提的是,初学者与初学者的组合为双方提供了很多学习机会,但也伴随着风险。因此,这种组合的适用性更多地取决于您对风险的偏好,而不是配对模式本身。2.非结构化结对模型想象一下结对编程诞生时的情形。李四走到张三的小隔间办公室,说:“嘿,我们一起用FORTRAN语言工作吧。”好吧,这么小的故事可能还不够信不信由你,但想象一下它是如何发生的。李四和张三习惯了把编程当成自己的工作,但有一天他们决定结合他们的智慧。他们不一定知道编程协作的任何技巧,因此他们即兴发挥并尝试互相帮助。这是我要列出的第一个协作示例。如果您认为这很荒谬,那么您将错过这堂课。了解一些可以尝试的技巧当然会有帮助,但不要削弱您的分析能力。如果你想开始,试错(testanderror)会有很大帮助。正如下面的配对技巧是通过反复试验得到的一样,您也会如此。但也要注意,这对组合的构成有局限性。它需要两个有能力的头脑和一台计算机,所以当你正在编程并且你的伴侣正在检查她的电子邮件时它不起作用。你可以根据情况使用一些不同的沟通技巧,比如“你用一个还是两个键盘?”,“谁来敲代码?什么时候敲?”,我们先来看看驾驭模式。这在理论上构成了最成熟的模型。它的名字来源于两个人可能乘坐汽车穿越未知领域的场景,驾驶员的注意力集中在操纵加速器和制动器、转动车轮以及注意障碍物和其他车辆等机械方面。同时,共产党员考虑更多的是宏观问题。离开高速公路需要多长时间?手机是否能及时收到任何意外堵车的提示?把这种关系的比喻套用到编程上,驱动程序负责编写代码、浏览文件和基本的实现方法。飞行员着眼于大局并检查错误。这种方法适合这种架构吗?是不是我们可以换一种方式重写一个实现方法呢?我们是否陷入了死胡同?如果双方都是互换角色的专家,那么先导模式会很好。理想,对于专家和新手的混合体来说还不错。这种模式在专家是共产党员的情况下最容易奏效,因为如果菜鸟成为共产党员,他可能只是被动地坐着,让专家扮演两个角色。四、后台操作员模式接下来要说的结对编程模式是后台操作员模式。这个方案看起来像驾驶员-飞行员模型,但飞行员接管了更具体策略的工作(让人想起后座司机)。与驾驶员-驾驶员模式一样,驾驶员坐在键盘前执行编写代码等任务。但与司机驾驶模式不同的是,后座警察给出了更详细的指示。这意味着她可以告诉驱动程序何时创建方法或打开新文件。她还告诉他如何命名测试或变量。这种模式在以初学者为驱动程序的初学者-专家组合中效果最好。初学者通过做专家告诉他们做的事情来学习。5.向导模式另一种非常适合高手新手组合的模式是向导模式。同样,驾驶比喻仍然适用。想象一下去某个地方度假并在那里旅行。司机登上长途汽车或公共汽车,开始开车,并告诉你他正在做的一切以及你所看到的一切。你的位置很被动。向导模式编程模式也是如此。司机一边写代码一边进行战略战术思考。当她这样做时,她会告诉“游客”她在做什么。游客很少干预。这适用于专家司机与新手游客配对,尤其是在新手什么都不知道的情况下。但如果角色互换,它也同样有效。初学者可以在专家的观察下探索和解决问题,专家提供反馈和指正等。6.乒乓配对模式要认真完成结对编程模式的学习,就必须了解乒乓配对模式。这种模式有一个不同于其他模式的有趣因素。为了便于理解,把结对编程看成是一种极限编程运动,这些人喜欢结对编程和其他特定的应用,比如单元测试。因此,当您遇到一位极限程序员时,您可以放心地假设她喜欢结对并实践测试驱动开发(TDD)。节奏很简单,一个人写了一个失败的测试,下一个人设法通过了。然后后一个人写了一个失败的测试,前一个人设法通过了。如此来回,有点像打乒乓球。这种模式特别适用于两名专家,初学者和专家的组合也很有效。同样有趣的是,如果目标是培训初学者,它可能最适合初学者组合。在Ping-Pong配对模式中,两个人的角色转换如此频繁以至于他们总是一起思考,所以所有组合都很好(尽管存在一些关系问题)。7.分布式模式我将以“非正式”配对模式结束。但这种配对模型很可能掌握着未来日益全球化的分布式世界的关键,我说的是分布式配对模型。极限编程始于90年代,当时远程工作需要Citrix系统和拨号调制解调器。换句话说,你不能在任何地方进行协作编程,只能由个人进行。但20年后,托管的硬性要求随着技术的发展而减弱。您可以使用ScreenHero等软件进行无缝连接。显然,在个人基础上,协作仍然更有效,但技术已经缩小了很大差距。此外,人们随时随地协作的长期好处是不可否认的。我相信在未来,结对编程模型也需要添加成熟的技术。但我认为分布式模型会变得更加多样化。随着时间的推移,以前的模型已经更新和改进。我认为在不到20年的时间里,我们将看到一些非常聪明和复杂的结对编程模式。
