结对编程_两年结对编程

结对编程

在过去的两年中,我使用结对编程来构建软件。 我最近换了工作; 在此过程中,我与很多同事进行了交谈,并研究了许多公司的实践。 我意识到,尽管像成对编程那样罕见,但实践的方式仍然很少。 当许多开发人员讨论结对编程时,它们的含义比我所想的要少得多。

我的团队通常在冲刺过程中配对整个工作日。 少量代码是由单独的开发人员编写的(例如,人们在早晨的不同时间进来或某人休假),但这是一个例外。 我们的物理空间和技术设置也支持这种工作方式。 每个工作站都驱动两个27英寸显示器,两个鼠标和两个键盘。 我们的书桌在侧面有一个可放置笔记本电脑的空间,我们将其用于电子邮件和研究等任务。 在大多数冲刺开始时,我们切换了配对,以便每个团队成员都有机会与其他每个成员一起工作。

以这种方式工作了两年之后,我想反思一下实践并分享自己的想法。 在某种程度上,我只是想传播结对编程。 我非常相信,这是一种团队合作的好方法。

关于团队建设和团队凝聚力有很多观点。 我喜欢塔克曼的团队发展阶段 :组建→突袭→规范→表演。 表现是与团队合作的好地方:我们在一起工作(没有(不需要)冲突),我们有动力,我们相信自己和队友的技能,并且我们觉得整个团队比团队更强大。其各部分的总和。

问题是:团队如何达到表演阶段? 回顾等许多实践都为这一增长做出了贡献。 但是对于我们的团队来说,我认为配对是我们成功到达那里的最大答案。

绩效要求团队成员之间进行良好的沟通。 每天整天一起工作的行为教导了这一点。 有效的配对需要不断的讨论。 通过纯粹的实践,团队成员学会有效地沟通。 例如,我会知道,与一个团队成员一起工作时,一个概念可能需要白板讨论,而与另一位成员一起,同一件事可能需要草拟接口签名。

表演团队的另一个方面是理解和欣赏每个成员的能力。 同样,由于同样的原因,结对编程也很出色。 逐行一起编写代码,每个开发人员都可以很快学习其他团队成员(以及他们自己)的优缺点。 作为跨职能团队编写软件需要做很多事情:编程语言和库知识,协议经验,算法知识,建立持续集成管道,编写和学习构建工具,操作系统知识,编写部署脚本以及许多其他技能。 通过直接合作解决这些问题,我很快了解了其他团队成员的长处。

在表现敏捷的团队中, 信任是隐含的。 开发团队始终致力于实现共同的目标。 但是,结对编程可将其带入另一个层次。 每天,每个开发人员都直接与第二个人合作以实现特定目标。 随着时间的流逝,这种共享的经验比我所经历的其他情况更快地建立了信任。

在团队建设之外,这种工作方式还有其他优点。 我清楚地记得的一种经验是向与之配对的人教授一些东西。 下周,他向与之配对的开发人员教授了该软件。 此后不久,我听到我最初教的事传播给了第四位团队成员。 知识在练习结对编程的团队成员中Swift传播。

配对也传播其他类型的知识。 在任何代码库中,都会有错误和正确的方法来完成某事的示例。 当两个开发人员一起编写至少一个开发人员了解正确使用模式的代码时,机会就大大增加了。

量化代码质量是一件棘手的事情,尤其是在流失很多的年轻产品上。 我相信结对编程极大地提高了质量,但是我在这里的证据更加有趣。

我想到了Phil Karlton的一句话:

在计算机科学中只有两件难事:缓存无效和命名。

在配对的最后几年中,我遇到的一种常见经验是围绕变量,方法和类的命名展开讨论。 一遍又一遍,命名产生了真正的对话。 该方法名称实际上传达了它的作用吗? 该名称与常见模式匹配吗? 将该表达式提取到命名变量中是否会增加清晰度? 命名对代码库非常重要,根据我的经验,配对有助于给予应有的重视。

好的测试是质量代码的属性; 再进一步,我相信测试驱动的开发会产生更好的代码 。 但是,可以很容易地摆脱先编写测试的习惯。 有时,人们可以知道正确的事情,但合理地不做。 很容易告诉自己“我会在之后编写测试”,或者在特别糟糕的一天,“我可以看到代码正在运行,对于这种特殊情况,我将跳过测试。” 配对有助于减轻此类情况。 与另一位开发人员一起工作,很难使没有做正确的事合理化。

最后,结对编程帮助我保持了专注。 在更开放的空间中工作时,会分散注意力。 当不可避免地出现中断,然后不得不花几分钟将正确的元素重新加载到工作记忆(人类记忆中的工作记忆)中时,也很容易失去精神背景。 我发现配对帮助我集中精力,当我失去注意力时,可以更快地重建背景。 配对是一个持续不断的讨论,而这种讨论形成了一个阻碍分心的泡沫。 在开发过程中,我的听觉很活跃。 我不那么容易分心。 一旦失去焦点,重建环境就更加顺利了。 在两个开发人员之间,我们可以更快地选择备份的东西。

结对编程帮助我们的团队建立了凝聚力,教会了我们信任和交流,并且实践传播了知识并提高了代码质量。 我坚信这种做法。

翻译自: https://www.javacodegeeks.com/2014/12/two-years-of-pair-programming.html

结对编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值