《敏 捷 教 练:如何打造优秀的敏捷团队》—11.3 结对编程

举报
清华大学出版社 发表于 2019/10/21 21:20:24 2019/10/21
【摘要】 本节书摘来自清华大学出版社《敏 捷 教 练:如何打造优秀的敏捷团队》一书中第十一章,第11.3节,作者是Rachel Davies Liz Sedley,徐 毅 袁店明 译。

11.3  结对编程

结对编程就是两个人一起干活,用同一台计算机解决同一个问题。每个人都能积极地参与开发软件;被称作驾驶员(driver)的人负责打字,她的搭档也即导航员(navigator)负责考虑后续步骤和观测潜在的缺陷。结对者轮流担任这两个角色。

如果想说服团队尝试结对编程,可参考下面这些长时间实践结对编程所带来的收益。

 

l  代码质量更高,因为不断在进行检查。

l  优良实践在团队中广泛分享。

l  开发人员更少被打断,因为大家往往不会去打断那些正在一起工作的人。

l  每一部分代码都有超过一个开发人员了解它。

l  实现了统一的编码风格,大家更容易一起工作。

l  团队融合提高,因为团队互相学习,很享受在一起工作。

如果你自己也懂编程,就会经常忍不住想直接提议开发人员该如何写代码。小心,你可能会浪费你的时间,开发人员很可能会忽视你的编程经验,因为你并不为这个项目编写代码。他们还可能认为你这是越权,在干预他们选择自己的工作方式,所以,在给出这种建议时,一定要谨慎。然而,结对编程是一种辅导单个开发人员的绝佳方式。如果还没有尝试过,可以参考以下这些技巧帮助自己完善教导方式。

当你正在敲键盘的时候,不要只是默默地输入代码。要展现出结对编程重要的一面,阐述你正在做什么以及为什么这样做。当结对伙伴掌控键盘的时候,要确保你自己别变成一个指手画脚的人。挑剔每一个打字错误,总是大喊大叫键盘快捷键组合,与这样的人结对是天下最悲催的事情。

保持开放心态,接受结对伙伴的建议,即便他们只是一个新手程序员。有一种现象叫“初心”(beginner’s mind)[1]:用全新的眼光看待事物会得出更多选择。因此,即使你已看到一个非常明显的解决方案,也要乐于尝试你的结对伙伴的建议。如果失败了,那么他们会学到一些东西;如果成功了,那么你会学到一些东西!如果你想了解更多,可以阅读Arlo Belshee发表于Agile 2005大会论文集的论文“Promiscuous Pairing and Beginner’s Mind”,其中介绍了团队如何尝试充分利用结对轮换时间[Bel05]

我们也时常看到做得很糟糕的结对编程,所有工作都是一个人在做,另一个人只是在一旁看他们敲键盘而已。你应该看到这一对团员成员之间有交互。有效结对是一个充满活力的舞蹈,两人频繁而自然地交替敲键盘。YouTube上有一段名为“Real Programmers Use Sign Language”的视频剪辑,它展示了两个开发人员结对时的大量手势交流。[2]



image.png

观看网上直播的结对练习,你也能对结对编程交互有所了解。[1][2]

通常情况下,一个人一次控制键盘不能超过10分钟。引入乒乓编(参见11.4节的补充内容),帮助团队习惯在结对时交替控制键盘。

首先,结对编程可能会让开发人员感到沮丧;这往往意味着要放慢速度帮助队友,而不是继续编写代码。随着时间的推移,你会发现团队开始了解对方的弱点,在结对时也就能将精力更多地集中于手头的任务,免受风格之争的干扰,生产的代码也更具可读性。

请记住,结对编程是高强度的;需要注意力高度集中。提醒团队,比较好的方式是每隔一个小时左右休息一小会儿。为此,有些团队使用厨房定时器,或者使用番茄工作法(pomodoro technique)鼓励结对休息,参见11.4页补充内容中的描述。

还要鼓励开发人员们交换结对。每日站会就很适合团队讨论他们是否在任何任务上与谁一起结对——如果可以,又和谁建议团队画一个结对表(参见8.2),让他们看到团队成员是否与其他人都会一一结对。



【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。