让结对编程更有效的十种方法

简介:

如果你回忆一下自己结对编程(pair programming) 的经历,有多少次你能感觉到自己效率和能力的提升呢?又有多少次你为不愉快的经历而烦恼?

结对编程为软件开发团队(不管他们是否采用敏捷过程)带来的好处已经广为人知,但是要有效的实施结对编程,不仅需要团队的成员相信结对编程的益处,更重要的是,他们要全身心的投入。

让结对编程更有效的十种方法

怎样才能让结对编程更有效呢?仅仅是两个人共同完成一个任务并不意味着那是一次有效的结对经历。除了完成任务,结对编程也是增进你和其他团队成员之 间关系的好机会。你们可以互相学习,不仅仅是技术,也可以多了解一下彼此国家和民族的文化。你也可以了解一下他们的追求,他们为什么充满斗志,又为什么垂 头丧气。

Marcos Brizeno,一个在巴西的ThoughtWorker,  在他的一篇博文中提到了结对编程中会碰到的挑战:

  • 编程环境:结对编程中要使用相同的硬件和软件

  • 疲劳:结对编程中每个人都要保持高度的注意力

  • 自尊心:当你的想法不被接受时,需要保持虚心,避免不必要的争吵

好吧,我也没有什么灵丹妙药能让结对成为更加神奇的体验,不过在这里我还是有几点建议,让大家可以更好的面对Marcos提到的那些挑战:

#1 -不要让一个人霸占键盘

结对编程中,对开发环境更熟悉的那个人经常会长时间掌控着键盘。另一方也觉得如果他写代码的话会拖慢进度。这样做的坏处就是,任务结束的时候,对开 发环境不熟悉的那个人没有多少进步,他依旧不熟悉这个开发环境。对此,我们的解决办法是设定闹钟,时间到了就互换,双方轮流写代码。

#2 -要共同管理注意力

出于多种原因,结对中的一个人可能会比另一个人更能集中注意力。当这种情况发生时,如果你是能集中注意力的一方,你要停下来和另一方讨论这个问题。让你的另一半自己恢复他/她的注意力可能要花很久的时间,你自己也可能因此丧失注意力。番茄工作法 之类的窍门可以帮忙提升注意力,但你最好还是和对方共同讨论来找到最佳解决办法。

#3 -不要一个人干活

有时你的另一半需要离开一会。这时,你要停下手头的活,尽量等她/他/它回来。在等待时,你可以做点其他有益于项目或公司的事情,也可以处理一下自 己的杂事。当然,有时也要看具体情况。如果情况紧急,你不能停下来,那当你的另一半回来时,你要把自己单独做的那一部分解释清楚。

#4 -要有劳有逸

干活的时候集中注意力很重要,但是过度集中注意力是有害的。毕竟我们都不是机器人,谁也不能连干八个小时不带休息。所以我们还是需要间断的休息时 间。休息的时候完全不要想工作的事情,也尽量保持两个人在一起,比如讨论个大家都关心的话题,一起打打游戏,一起喝杯咖啡之类的。

#5 -要庆祝你们的成就!

在任务每一阶段结束的时候,或者每次结对结束的时候,你们要好好回顾一下自己的成就,要给自己一点激励。好好庆祝吧!跟其他同事分享一下你们的成果也不错。

#6 -要和你的同伴保持同步

很自然的,有时一个人比另一个人对任务了解的更深入。这有可能造成两个人的节奏不同步,以至不愉快的经历。如果你了解的更多,你要及时意识到这一 点,控制你的节奏,让你的同伴跟上。必要时,停下你手头的工作,好好解释一下。同样,如果你是跟不上趟的那个人,要及时提出来。让你的同伴慢下来,好好跟 你解释他/她到底在做什么,以及为什么这么做。记住,沟通是必须的。

#7 -要使用合适的交流方式

在交流时,要使用结对编程的两个人都能理解的语言。很难想象你能准确的理解一个句子,如果你连句子里的单词都不认识。所以,请尽量用简单直白的描述。如果有帮助的话,不妨在纸上把自己的想法画出来。你也可以找别人帮忙,如果他能把问题解释得更清楚。

#8-要学会处理分歧

在结对编程的过程中,分歧是经常会有的。面对分歧时,双方都应该先仔细听取对方的观点,然后用平静和尊重对方的语气阐述自己的观点。这时侯,最忌讳 的就是盲目自信。你要试着从对方的角度看待问题,这会让你发现自己遗漏了的地方。不要把这变成一场谁对谁错的争斗,你也没必要在每次辩论时都成为获胜的那 一方。如果双方实在没有办法达成一致的观点,那就试着找别的同事帮忙做个选择。

#9 -既要作学生,也要作老师

就算你才刚刚加入一个新的项目,所知不多,你也能立刻作出自己的贡献。同样的,如果你和一个刚刚加入项目的新手结对,你也要留给他/她发挥自己能力 的空间。多问些启发式的问题,逐步的解释你们的任务,在潜移默化中让你的同伴自己找到解决方案。此时你需要扮演的是一个良师益友的角色。

#10 -要及时提供和接受反馈

在结对结束的时候,要抓紧机会给对方一些意见和建议,再拖一阵,你的印象就模糊了。不用搞得太正式,15到30分钟足够了。你可以评价一下和他/她 结对的感觉如何,他/她有什么需要继续保持或改进的地方。如果你赶时间,至少也要把自己的想法记录下来,然后等有合适的机会转达给你的同伴。


最后,值得一提的是,我在这里提供的窍门都是我以前和其他 ThoughtWorker 结对编程时收到的建议。这些不是什么金科玉律,你就当作我给你的建议好了。

那么,现在轮到你给我提建议了。你有什么更好的办法来应付结对编程中的各种挑战吗?欢迎拍砖。


来源:51CTO

相关文章
|
6月前
|
Java 程序员
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
54 5
|
6月前
|
开发者 Ruby
【绝技揭秘】Rails应用如何借助状态机巧化繁为简?一文带你走出复杂逻辑的迷宫!
【8月更文挑战第31天】状态机是简化复杂业务流程的强大工具,尤其适用于需遵循特定转换规则的对象,如订单系统。本文通过技术博客形式,介绍如何在Rails应用中利用`state_machine`这一流行gem实现状态机,通过具体示例代码展示其定义与使用方法,帮助你更清晰、高效地管理订单状态转换等业务逻辑。
41 0
|
9月前
|
测试技术 项目管理 数据库
【软件设计师备考 专题 】软件生存期模型:瀑布、螺旋与喷泉
【软件设计师备考 专题 】软件生存期模型:瀑布、螺旋与喷泉
214 0
|
9月前
|
NoSQL JavaScript 前端开发
断点调试:开发者的时空穿梭术,提升编程效率必备技巧
断点调试:开发者的时空穿梭术,提升编程效率必备技巧
70 0
|
Dart Unix 编译器
C生万物 | 操作符汇总大全【庖丁解牛,精细讲解】
✒C语言操作符汇总大全,全程精析讲解,拨开云雾见天明☀
96007 10
C生万物 | 操作符汇总大全【庖丁解牛,精细讲解】
|
存储 数据管理 人机交互
【软工视频】第九章面向对象技术
【软工视频】第九章面向对象技术
116 0
|
机器学习/深度学习 人工智能 自然语言处理
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
267 0
|
架构师 Java 大数据
程序员如何跳出35岁魔咒,史上最全思维图收集解救你
时常有人在知乎、百度等平台抛出问题:程序员过了 35 岁或 40 岁是不是就失去了竞争力,要转管理岗了吗? 100offer 在2017年对其平台上的5844 位技术岗位求职者做了一个抽样调查,得出了如下统计结果: 10年以上的求职者,也就是“中年程序员”求职者的比例达到了10%,有了小幅攀升。
2118 0