极限编程之结对编程

原文链接:https://www.jianshu.com/p/6b77fd80e941

在敏捷开发(Agile)越来越火的今天,大家或多或少也听过结对编程这个词。但是可能真正实践过的并不多,在这里我就来分享一下我们做结对编程经历以及看法。(话不多说,现在开始!)

主要内容:

  • 结对编程是什么?
  • 结对编程有什么好处?
  • 我们是如何做结对编程的?
  • 一点点想法以及建议。

结对编程是什么?

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。

上面是维基百科上对于结对编程的定义,一开始去学习敏捷的时候会对于Agile, Scrum, XP的概念有些混乱。我理解为Agile是一套理论,XP是一套实现Agile的技术框架 (Scrum是另一种),而结对编程则是框架里面的一种方法,所以他们之间的关系从上到下依次是:Agile > XP > Pair Programming。

结对编程有什么好处

程序猿们可能习惯了孤军奋战,喜欢一个人享受电脑前成功的快感,通常对于结对编程会抗拒。

在他们眼中,结对编程是这样的

或是这样的:
还缺一张图 :)

其实并不然,结对编程在掌握对方法的情况下,还是有很多好处的:

  1. 因为有一个领航员同时审查代码,有助于提高代码质量(Code Quality)
  2. 在结对编程的时候,通常驾驶员是新人或是对所做任务涉及的知识缺乏的人,领航员会在过程中分享知识(knowledge sharing),可以快速帮助团队新人熟悉相关知识。
  3. 结对编程有助于集中团队成员的注意力,因为他们在结对的时候没办法玩手机😝、查邮件等个人事情,而且也不容易被其他人打扰。

我们是怎样做结对编程的

本人任职于一家香港本土公司IT部门,最近因为上级要求实践敏捷开发而开始接触结对编程。一开始大家也很是抗拒,也有人发文列举亚洲人为什么不能做结对编程blah blah。不过我们组执行的还不错,到现在大概进行了大概4-5个星期,这里我来说说我们是怎么做结对编程的。

1. 选伙伴

每次做sprint planning的时候我们会给每个task分配一个坐庄的人,这个人通常是对于这个task比较熟悉的人,另一个位置暂时空缺。

然后到了每天早会的时候,我们会分配另一个人给这个task,这个时候分配人选的方法比较多样。在刚开始的时候,鉴于大家比较害羞,我们会用随机抽取的形式来进行结对。久而久之成员就会自己主动选择task和结对伙伴(比如说我对task A了解的不多,而且我也有兴趣学习其中的知识的话,我就会主动选择这个task, 并与task A的庄家进行结对)

2. 结对ing

按照结对编程的标准,我们的配置是

  • 一台电脑
  • 两个屏幕 (镜像
  • 两套键鼠 (这样每个成员都可以去操纵电脑,如果条件有限的话也可以一套键鼠

结对一开始的时候,坐庄的同学会先当驾驶员,在完成任务的时候分享相关的知识,工作思路以及方法,领航员这时候主要以学习为主,能够有初步的了解,并且有能力能够开始工作。

接着会交换位置,坐庄的同学当领航员,给同伴实践的机会。这时候作为领航员也要继续分享知识,同时仔细审查驾驶员写的代码,并及时准确的给出建议。

之后会定时交换位置,以免某一位童鞋过于疲劳。

3. 换对象

当一个task做完以后,我们会换结对的对象。但我们会遇到一些情况,比如说别的结对小组还没做完任务怎么办?

我们的解决方法是,当一天结束,第二天开始的时候,会重新分配结对伙伴。初期为了做更充分的知识分享,如果一个任务没做完,会让成员继续结对。后期就会要求最好一天换一个结对伙伴。

一点点想法以及建议

同时我也有在看TW顾问推荐的一本书,Scrum and XP from the Trenches。结合自己的经历,总结一下几点分享给大家。
但是请注意,不一定适用于任何情况,应该要不断尝试,不断改变方法,才能找到最适合自己方法。

  • 尊重(Respect)以及耐心(Patience),在结对编程的时候一定要尊重队友,每个人都有自己的强弱项。作为领航员,当驾驶员不明白的地方要耐心解释,不要一把把控制权抢过来自己来写,一定要给伙伴足够的时间去消化和练习。还有不需要评价伙伴写代码的风格,这不是审查的重点。
  • 结对编程在短期是会消耗时间的,因为两个人做一件事。但是就长期来讲,是对效率有提升的,因为代码质量提高了,并且通过知识分享团队成员能够互相为对方做 Backup
  • 结对编程确实很累人,不需要一整天做结对编程。
  • 不是什么task都需要做结对,也不是为了结对而结对,只做有价值的结对编程(比如说需要提升质量或者做知识分享)。
  • 不在结对的时候可以做别的task,或者做一些technical story (例如技术债,写测试等等)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容

  • 传统软件工程方法的文档辆过重👇于是出现了 👉 敏捷开发 👉 “轻量级”方法的软件开发方法👇XP是敏捷开发的...
    Crumvey阅读 1,335评论 0 2
  • 序 迭代开发基本需求 迭代要有固定时长(被称为“时间盒——timebox”),不能超过六个星期。 在每一次迭代的结...
    陈浩要安静阅读 2,740评论 1 13
  • 第一次听说结对编程的时候,我觉得太反直觉了,两个人用一台电脑写代码,效率不就下降了一半吗?后来我在团队里去尝试引入...
    李浪溪_WaterLee阅读 4,948评论 8 27
  • 2015年度Review已经拉开帷幕,今年你都收到了哪些醉人的反馈呢?和往常一样,作为开发的我听到最多的话题当属结...
    禚娴静阅读 769评论 0 3
  • 还能这样玩,既然事情已经发生,看怎么解决了,就算一个人担又有多大点事,你们都这样,真的事无语了,心凉了。
    烟花雨下的诺言阅读 118评论 0 0