实施TDD时有哪些推荐的结对编程姿势?

Ron Jeffries[1],他在的博客中描述什么是极限编程时,绘制了一张图:

图片来自:https://ronjeffries.com/xprog/book/whatisxp/

并对最内圈的四项实践描述如下:

Extreme Programmers work together in pairs and as a group, with simple design and obsessively tested code, improving the design continually to keep it always just right for the current needs.

XP的创始人也一直在提倡和建议我们组合使用这些实践,在一起使用时发挥更大的威力。对于内圈的四项实践,在我们做TDD的时候,有了严格测试的代码,能够为持续持续重构提供保障,重构到什么时候停止呢?直到符合简单设计为止,那如果判断是简单设计了,其中一条是你的Pair是否很容易看懂你的设计了。有了Pari,TDD的时候还可以轮换写测试写测试和实现。

当然,在现在很多团队中,可能没法将这四项实践组合使用起来,比如说因为个人能力原因,没法实施TDD,因为项目管理原因,没法执行结对编程。如果你能够将他们组合起来使用,比如两人结对编程实施TDD,你就可以尝试一些不同的方式。

结对编程有哪些不一样的玩法呢?ThoughtWorks的大姐大(禚娴静)经过实践总结,推荐了Pair的几种姿势:

图片来自:https://insights.thoughtworks.cn/pair-programming/

图中列出了通常有2种结对编程模式:Ping-Pang,N-D,M-K模式是一种N-D模式的具体操作的方式。

Ping-Pang

借用乒乓球的场景,比如两位乒乓球选手在比拼,通常这两个人的实力不会相差太大,越接近决赛,实力越相当。在软件开发中比较适合两个人能力和经验类似,共同努力去完成一项任务。尤其是适合TDD的场景,两个人一个人写测试,一个人写实现,然后交换。这种方式,两个人频繁交换,快节奏的切换,能够帮助彼此聚焦,交换经验和知识。

在工作中,两个有一定经验的Pair非常适合推荐采用这种方式。值得注意的是如果是两个人都非常jUnior,是不推荐的,主要考虑到两人的经验和技术能力,相对不太容易碰撞出简单设计的火花。

N-D

领航者-驾驶者模式,通常导航者作为牵引者,驾驶者作为执行者,听起来有点像教练教学徒的场景。它比较适合老人带新人,老人教新人如何写,新人去写,老人给出具体的反馈,新人去修改。技能传授,就非常适合这种方式。如果团队来了新人,就可以用这种方式。

N-D还可以倒过来用,让新人来做领航者,老人来写,一方面验证新人是否对思路已经掌握,能否其举一反三,另一方面,想新人演示自己是如何使用快捷键高效编码的。

神Pair

神Pair强调的是神似形不似。即,两个人看起来没在Pair,实际上也是在Pair。那这种Pair就是一种松散的神Pair。我通常会把它叫做风Pair,风代表风向。什么意思呢?当一个人Senior需要带多个Junior 时,他没办法做到以上两种Pair,怎么办?就可以借助Tasking这个实践来开张风Pair。通常的做法是:

  1. Junior自己尝试拆分业务需求,然后找Senior沟通,确认需求理解无误,Junior完成任务。
  2. Junior自己尝试做技术任务拆解。如果技术实现较为复杂,看第3步。
  3. Senior拆分技术任务,然后跟Junior进行沟通对齐,由Junior去完成任务。
  4. 定期Pair对齐任务完成情况。

总结下来有三个阶段:

  1. Pair确定风向
  2. 各自放风
  3. Pair聚集风向

L-R

L-R,左-右手模式,当你的项目没有条件进行结对编程的时候,你可以学会左右手Pair,自己也可以独立完成这些有价值的实践。

以上Pair的姿势,你更喜欢哪种呢?

参考

  1. Ron Jeffies,is one of the three founders of the Extreme Programming (XP) software development methodology circa 1996, along with Kent Beck and Ward Cunningham.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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