配对编程指南

两个负责人胜过一个人-组织内部的团队合作远不是颠覆性的概念,但是在一个主要提倡代表自由工作的领域,可能需要两个开发人员联系起来。

结对编程基本上是一种正在发展的软件开发技术,其中两个人在单个代码块上工作。 程序员承担驱动程序和导航程序两个部分之一。

在此过程中,驾驶员负责勤勉地起草代码,而导航员的职责是审查并专注于行动计划。

有大量研究描述了增加产量和生产率以及提供安全可靠的产品的巨大好处。 但是,每个人的看法差异很大。

说服某些官员将有限的编程资源分配给该技术,真是一个冷酷的呼吁,特别是因为它首先被视为是对宝贵资源的滥用。 事实是,结对编程技术可以花费大约15%的时间,而产生的缺陷却少15%(有关更多详细信息,请参阅https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF)。

本文的目的是为组织提供基本的结对编程指南,并重点介绍开发人员使用此技术需要克服的优势和挑战。 激动吗 让我们探索吧!

结对编程—简介

回想一下,配对编程最初是作为极限编程软件开发技术的组成部分引入的。 极限编程是由肯特·贝克(Kent Beck)在90年代构想的,它是一套软件标准,可帮助开发人员团队使用出色的软件。 它强调交换信息,清晰,响应,确定和考虑,所有这些最终将指向决定性的结对编程知识。

根据贝克的说法,“对程序员:彼此保持任务。 对系统进行头脑风暴改进。 阐明想法。 当他们的伴侣陷入困境时要主动,从而减少挫败感。 使彼此对团队的实践负责。 配对”

怎么运行的?

如上所述,结对编程包括在一个系统上工作的两个人(开发人员),一个人打字,另一个人导航或观察。 通常,负责打字的一个人称为“驱动程序”,而另一个负责“导航器”的人不断修改和检查正在编码或键入的内容。 在彼此之间的整个时间里,二人组始终保持联系,使另一方参与并帮助概述代码方向。

目的是在两个参与者之间分担工作量,以保持稳定的开发流,并帮助在团队中传播知识。 驱动程序和审阅者应经常相互交互,因为这将增加双方的知识和效率。

总之,该概念不仅涉及将两个开发人员聚集在一起并指示他们发疯。 在过去的几年中,专业人员已经设计出可以在多种情况下使用的方法。 通过经验和适当的实践,这些人已经超越并完善了这些程序。

结对编程技术

在Weblab,我们已经使用配对技术已有相当一段时间了。 通常,我们将其用于复杂的请求请求审查以及指导和修复。 我们看到了从未与他人起草过代码的开发人员,还目睹了多年成对起草代码的个人。 因此,我假设我要记下一些有关结对编程以及与此方法相关的最广泛使用的样式的经验和理论。

驾驶员-导航员角色

通常,结对编程已通过驾驶员导航技术普及。 理想情况下,团队的两个成员都应转换职责以取得更好的结果。

在这种配对编程风格中,导航员立即失去了兴趣。 那可能是因为负责打字的人没有交流,或者是审稿人不想打扰他。 我多次观察到驾驶员提出的“只是一分钟,我就有一个主意”并继续工作,导航员检查他们的社交帐户或执行其他不相关的任务。

强式配对是一种方法,在这种方法中,驾驶员不执行审阅者未将其引导到的操作。 正如Llewellyn解释的那样:“要想从头到计算机,一个想法必须经过别人的掌控。”

每当驾驶员需要提出想法时,他必须将系统移交给他的伴侣,然后从观察者位置进行控制。 这种方法完全吸引了观察者。

开发人员经常使用的另一种配对编程模式是乒乓配对。 在这种方法中,驱动程序为行为起草测试,并要求审阅者应用行为。 实施后,导航器轮到他,新驾驶员记下下一个测试,以应用新导航器。

问题在于,花时间重构代码并进行测试是这种模式的最大挑战。 实际上,有时候我在测试重构上花费的时间比在编码上花费的时间更多。 实现功能可能很复杂,并且也会使测试变得复杂。 在应用属性的过程中,保持进步势头比较容易,但是我们还需要注意代码的简单性,以便长期维护它。 类似的想法也适用于测试部分。

  • 大约96%的结对程序员在一项在线调查中报告说,他们在结对编程环境中的工作比单独工作更喜欢。
  • 另外,接受调查的开发人员中有95%的人表示,与成对工作相比,成对工作更有信心
  • 对生产力和输出的影响也是积极的,因为与成对工作的程序员相比,成对的设计替代者通常更多。 另外,它们还比个人更容易捕获设计缺陷和错误。
  • 盐湖城犹他大学的劳里·威廉姆斯(Laurie Williams)表明,成对的程序员只比两个独立的程序员慢15%,但错误产生的次数却减少了15%

结对编程—作为招聘工具

公司面试中使用的结对编程是将面试更像是一种能力测试的最佳方法之一。 基本思想是,我们在遇到编码问题时与申请人联系在一起。 这可能与常规配对有些不同,因为在大多数情况下,受访者都比较活跃。

使用这种方法的最好的事情之一是,它即将达到任务的实际情况。 除此之外,它还有助于公司准确了解受访者的专业知识水平和能力。

作为询问者,您有机会观察被调查者将如何迅速掌握新概念,他们与其他人合作的潜力,最重要的是他们完成复杂编码任务的技能水平。

有效对编程标记

配对期间

  • 让我开车
  • 你能帮我吗?
  • 我们一起做吧
  • 这是我的计划
  • 您有什么打算?
  • 此代码块如何工作? 让我们进行单元测试
  • 我累了? 这是怎么回事?
  • 我不明白这一点。 给我画个设计
  • 我们忽略了什么吗?

短暂休息

  • 我们可以休息一下吗?
  • 我们可以换角色吗?
  • 我们出去喝杯咖啡吧

记得

  • 不要强迫
  • 给您的伴侣一个在正确的时间开车的机会
  • 鼓励开放交流
  • 不要忽略休息
  • 信任
  • 找出你的错误
  • 先批评自己
  • 慢一点

结对编程—最后的想法

配对编程适合所有人吗? 好吧,答案并不简单。 我们都是不同的,所以结果肯定会有所不同。 结对编程在某些情况下效果很好,而在另一些情况下则相反。

由于此技术应增强双方合作伙伴的努力,因此可能并非总是如此。 请记住,并非每个项目都适合配对或共享编程。 这个想法特别适合那些经验丰富的独奏或一组初学者可以完成任务的复杂项目。 在这种情况下,建立高级-初级组合可能是提高初级人员的技能和熟练程度的重要步骤。

在我看来,这种方法本身没有什么坏处,因为所有方法都取决于为特定项目找到合适的程序员组合。 请随时在下面留下一些评论,以便我们了解您的意见。 我们希望听到您的回音!

作者:软件工程师Oleksandr Knyga

Sharmeen Hayat,作者兼数据专家

Dima Dmytriienko,编辑兼品牌专家