配对编程:(半)权威指南

“我需要换衣服”。 幸运的是,那只是大量的汗水,但有一个令人烦恼的疑问,即可能发生更严重的,由焦虑引起的身体机能障碍。
监视器瞪着我,整齐并排坐着的键盘嘲笑我。 对我的肾上腺素充沛的大脑来说,由于我的精神上的无能和完全无法编程,我距离行军只有几秒钟的路程。 当我的伴侣坐下时,我并没有为我的表情做任何准备:兴奋而平静。 我想吐。

那是2008年4月14日,这是我对结对编程的第一次经历,而并非巧合的是,我在New Bamboo (现在是thinkbot的一部分)的第一天。

从大约7年前的那天开始,我花了很多时间进行编程,我敢说我来喜欢它。 是的,它可能是激烈的,有时甚至是情绪化的,但是,做得对,它也会带来深远的收获。

如果您习惯于自己编写代码,那么两个人都盯着同一代码似乎是浪费的。 鼓励人们持健康的怀疑态度-我大多数时候都建议这样做。 但是,当学习一种新技能(结对编程是其中一项)时,我发现最好暂停判断, 让自己有时间去玩耍和体验 拥有公正的经验后,让您的分析,批判性思维重新投入并评估价值。

考虑到这一点,我想分享一些我从艰难的道路中学到的课程。 希望每个人都能拥有一些东西:配对编程新手和老手。

基础

记住你的角色。 每对都必须找到自己的协作方式,但是通常,一个人键入并尝试实现当前功能( 驾驶员 ),而另一人则更战略性地考虑总体方向( 导航员 )。 至少每30-40分钟至少频繁地切换一次角色。

成为一名优秀的导航员。 作为导航员 ,您的工作是找出驾驶员尚未考虑的可能问题:是否缺少任何测试? 是否有预先存在的代码可以做到这一点? 您有更简单的方法吗? 您也是质量的守护者。 当您的一对在弱小的时刻想要跳过该测试或走下坡路时,要勇于坚强并轻柔地坚持质量。

充分参与。 配对并不容易:这需要努力和纪律。 双方都有责任完全致力于产生高质量的代码。 这意味着不要懈怠并检查Twitter或电子邮件,或在手机上浏览。 专注于手头的问题。

尽量减少无用的干扰。 每次中断都会中断您的流程,并且需要时间来恢复。 关闭,移动,燃烧或以其他方式破坏一切会使您脱离此流程的内容(电子邮件,警报,闪烁的指示灯,声音)。 如果您担心丢失重要消息,请设置一个物理提醒(例如,煮蛋计时器)以停止检查它们。 不过,并非所有的中断都不好-请参阅下面的本地速度与全局速度

同意编码标准。 一致的样式使团队中的每个人都可以轻松地深入研究任何代码。 不要浪费时间和精力争论在哪里放置花括号。 同意明确的样式指南,其中包含样式和格式决定(例如ruby样式指南 ),然后返回解决重要的问题。 甚至更好,连接到您的项目的自动样式检查器( thoughtbot的 Hound CI , Rubocop等人)

不要着急 认为您需要成为一名摇滚明星开发人员 ,疯狂地敲击键盘上的灰尘,在几秒钟内提出解决方案? 如果我们这样工作,大多数人仅仅是凡人就会产生一堆胡言乱语。 编程与输入速度无关,而是对复杂问题的思考。 最好是慢慢去做正确的事,而不是匆忙做错事。 实践使人永久性地养成良好的习惯,并相信速度自然会随着时间的流逝而出现。

大声思考。 您正在考虑什么主意? 为什么一种方法比另一种方法更好? 表达您的想法不仅使他们知道自己的想法并为他们提供帮助的机会,而且实际上也可以帮助您解决自己的问题(请参阅橡皮鸭调试) 。

定期休息。 配对非常激烈:令人振奋,但也很累。 如果发现能量下降,建议休息一下。 您可以停下来品尝最新的潮人,手工咖啡 ,与团队聊天,或者只是呼吸新鲜的空气-站起来,换个场景。 您的思想将继续在后台解决问题,因此您将获得新的见解,重新焕发活力。

频繁切换配对。 配对有助于分散整个团队中的知识,无论是关于系统的独特知识(防止总线因素问题)还是深厚的技术知识。 您可以从所有人那里学到一些东西:了解其他人如何解决问题,他们使用的命令,甚至只是他们的态度,都非常有见地。 您将不会相信会有多少次“我不敢相信我从来不知道”的时刻。

编写 自动化测试 没有什么比一套测试能够按预期运行的测试那样建立对系统的信心。 配对时,每个人都必须参加写作测试。 关于如何进行(以及一些修复 )存在一些争议 。 先测试,后测试或其他方法:您必须找出对您的团队有效的方法。

尝试 乒乓球配对 一个人实施测试,然后另一个人必须通过测试。 切换角色。 冲洗并重复。 这可能很有趣,并为配对建立了良好的节奏。

充足的睡眠。 结对编程正在学习类固醇。 睡眠是我们消化和组织流入大脑的大量新信息的机制。 太少,太专心,决策受苦-而不是您想如何编程。 以前的配对伙伴曾经梦想他是系统中传递的对象。

玩得开心。 配对不一定要很认真。 可以通过玩笑或新颖的方法来简化编程过程来减轻心情。 您的创造力和娱乐能力是极限。 笑声和幽默感(尤其是与您正在做的工作有关)尤其有助于学习 。 只要确保它不是避免工作的策略即可。

拥抱多样性。 我们每个人都有独特的个人历史。 我们的团队越多样化,我们对问题所持的观点就越有趣。 享受人们的个性。 庆祝他们的差异。 这有助于我们克服与生俱来的偏见。

如果您是配对或代码的新手

跟随并吸收。 观看某人的代码是一种高带宽的体验-您可以学到很多东西。 尽力跟进; 乍一看似乎很快且令人不知所措,但是在几天之内,事情将变得更加有意义。 逐渐地,您将开始理解较小的模式( “啊,好的,这就是我运行测试的方式”“这就是您启动应用程序的方式” ),使您可以自由地专注于较大的概念。

问问题。 你为什么这么做? 你在想什么? 您怎么知道从那里开始? 请注意您不了解或不清楚的事情,然后询问。 这是一种平衡:提出过多的问题可能会打扰您俩的思考过程,使他们减慢速度并变得痛苦。 记下一个清单以提醒您。

假设您迷路了。 有时候(也许经常),当您发现自己迷失方向或努力跟上步伐时。 感觉很恐怖。 那很正常 希望你们俩对此敏感。 善于配对的部分原因是诚实地交流,以便您可以在一起纠正路线并解决任何问题。

睡得更多。 说真的

注意截止日期。 在理想的世界中,您的一对将让您以自己的步调跟上步伐。 不幸的是,有时现实世界并不那么理想。 聘请新的团队成员(即使是经验丰富的专业人士)也会影响生产力,但这也必须与交付需求保持平衡。 认识到您的伴侣不完美,并且随着期限的临近可能会感到焦虑或急躁。

先进水平

扩大配对范围。 稍加思考和独创性,您总能找到升级配对的方法。 我花了几个月的时间,每天与同一个伙伴配对,进行两个人的项目。 愚蠢的是,我们从来没有主动与旁边的另一个团队轮流配对。 真可惜。 两队都输了。 如果您是一个人工作,那么互联网就意味着只有一小段距离 。

掌握你的情绪。 自我,害怕看起来愚蠢,无聊。 您每天都会遇到自己的恶魔。 不要否认他们。 学习识别它们,并找出缓解它们的策略。 这是终生的挑战。 培养成为优秀伴侣的素质:耐心,尊重,宽容,谦虚,勇气,诚实。

注意人们的想法。 正如我们所做的那样,我们始终与自己在一起生活,很容易忘记每个人的想法和流程都不同。 开始关注您俩的思维方式。 您是否想在他们陷入沉思的同时,在突破的边缘填补沉默? 他们需要走得更慢(或更快)吗? 如果您通过示例进行解释,他们会更好地理解吗? 您对合作伙伴的了解越多,可以他们合作而不是与之抗衡的能力就越好,并为双方带来最好的。

进行自我意识。 最后一点的推论。 知道喜欢什么, 需要什么样的手段,你必须得到它的一个更好的机会。

小心使用语言。 您说话的方式可能会对邮件的接收方式产生深远的影响。 尽量避免使用涉及判断的短语- “您为什么不……”表示“您是个白痴” 而是尝试以下方法:

  • 你有没有考虑过…?
  • 不利之处可能是……
  • 我想知道这是否可行...
  • 如果我们这样做了会怎样?
  • 如果我们尝试…可以吗?

本地与全球速度。 人们常常误以为会以最快的速度因为他们可以( 本地速度 )是最好的球队。 不是。 我们的目标应该是使整个团队尽快( 全球速度)创造最大价值。 人们可以通过多种方式陷入这种陷阱,例如

  • 错误的事情上继续前进
  • 不帮助修复损坏的构建
  • 不停止解决另一个团队成员的关键问题

说点辛苦的话。 配对有点像婚姻:良好的沟通和妥协是关键。 您的双胞胎有BO ,他们的呼吸发臭,或者他们有一个讨厌的习惯来通过键盘获取食物? 我们所有人的日子都不好过,但是如果这些事情持续存在并打扰您,则值得解决。 这需要勇气,但从长远来看,您经常会帮到您。 有时候,将其从胸口取下来就足以感觉好些。

通融。 配对是一门艺术,很像编程。 很少有规则是一成不变的。 开放,愿意尝试新事物。 注意结果-衡量是否可行-并继续做更多有效的工作。

如果您发现此功能有用,请点击下面的“推荐”按钮来帮助您宣传。 谢谢!

From: https://hackernoon.com/pair-programming-a-semi-definitive-guide-44bab1c9c1de

你可能感兴趣的:(配对编程:(半)权威指南)