我的结对编程 AWS Security LIVE 经验!

2025-06-08

我的结对编程经验

AWS 安全上线!

我在大学学习敏捷方法论的时候学到了结对编程。当时感觉非常繁琐,甚至有点吓人。我想象着自己在键盘上磕磕绊绊,同事在身后捂着脸。但实际上,结对编程帮助我提升了开发水平,而且我发现两人一起解决事情更轻松。

一些快节奏的结对编程

你介意我开车吗?

驾驶意味着掌控鼠标/键盘。导航意味着观察,并且根据两人的风格,他们可能决定要写什么,也可能提出问题、难题,并进行设计思考。点击此处查看更详细的角色划分(最初由 Jordan Poulton 撰写)。

我看到一项研究,声称在对话中,我们给对方回复的时间大约是轮到我们自己回复时给自己的三倍。我认为结对编程也是如此,因为我有时会感到压力很大。我记得很多时候自己会犯无数的拼写错误(直到有人指出才发现),忘记代码的基本结构,担心导航员在等我完成代码思考时感到无聊。然而,我不记得我的任何同事做过类似的事情。每个人都非常出色。

对于不熟悉的人来说,两个开发人员处理一个工单比分别处理两个工单效率更高,这似乎有些奇怪。原因之一在于专注程度,而这可以由驱动程序来维持。有人在旁观察你的代码,就能发现你的 Linter 可能无法发现的愚蠢错误。这节省了构建和测试的时间。你无需再谷歌搜索简单的问题(以及切换上下文),而是可以将它们抛在脑后,专注于你的 IDE。能够讨论想法有助于创造性地解决问题。我发现我的思绪不再游离,因为我的搭档总是会指引我回到我们的设计。兔子洞可以被扼杀在萌芽状态——例如,我们中的一个人会说“我们先不要优化这部分”。

对我来说,这里的氛围很舒适,很有趣。我见过有人把它叫做“自动双向小黄鸭”。

调试时,最好的做法是将问题分解成最小的部分——去除假设,找出你确信100%有效的部分。然而,摆脱自己的假设很难,后来你会发现,你认为正确的东西实际上是通往解决方案的途径。结对编程时,更容易以更有逻辑的方式解决问题,因为有另一双眼睛必须确信每一个假设。

配对适用于以下情况:

  • 你被困住了!
  • 你是新手,需要指导
  • 团队需要共享知识
  • 有一个时间敏感的功能

有些票不需要

我读过一些公司里人们的经历,他们每行代码都是结对编程的。我很好奇这种要求有什么好处。我想象着团队的巴士系数会非常低。但我考虑的是,我工作的地方,代码库中我熟悉的部分,我主要的工作是编写样板代码和进行一些测试。

到目前为止,我最喜欢的团队设置是将结对编程留给开发人员。如果我们觉得某个工单需要结对编程才能提高效率,那么我们只需告知经理这就是计划。

作为导师

在过去的一年里,我一直在教我的妻子编程。当我们结对合作解决某个功能或项目时,她的知识水平提升最为显著。这让我有机会观察她解决问题的方式,并引导她走上正确的道路(或至少接近正确的道路)。在我开车的时候,她反馈说,最有帮助的是那些与编程无关、更注重知识的步骤,例如设置开发环境、正确的版本控制、不同的测试套件以及 CI/CD 集成。

这听起来有点像结对编程协会(Pair Programming Institute,简称TM)的宣传。有些人不太适应结对编程,可能会觉得它既痛苦又低效。但这完全没有问题!


与 150 多名订阅我的关于编程和个人成长的新闻通讯的人一起!

我发布有关科技的推文@healeycodes

鏂囩珷鏉ユ簮锛�https://dev.to/healeycodes/my-experience-with-pair-programming-4c0a
PREV
如何在 JavaScript 中实现拖放功能
NEXT
使用 Node.js 构建一个 CAPTCHA 生成器