在软件产业历史上有的疯狂的点子中, XP 既拥有结对编程,又有测试驱动开发的方法,在它第一次公布的时候是一个非常疯狂的想法。Mob 编程看起来则比它更进一步:它是一个整个团队都在同一个地点、在同一时间使用同一台电脑进行工作的开发方式。
Woody Zuill 在第一届Mob 编程大会上就Mob 编程发表了一个演讲,在其中,他回答了每个人在他四年的mob 编程中不停问他的问题。Mob 编程大会在2016 年5 月1 日至2 日在美国麻州剑桥镇召开。InfoQ 通过问答与文章报道了整个事件。
这篇文章通过两部分来对keynote 和对Zuill 的采访中的想法进行回顾,其中包括了引入Mob 编程的不同方式、IT 工业最主要的问题、mobbing 适合的其他活动和mobbing 的目的。
Keynote:Mob 编程是做什么的?
关于 XP 的历史以及对 C 等级和高级(非 IT)经理解释技术实践的困难,很明显的一个问题是:“一个在一台电脑上工作的五人团队如何有很高的生产力?”Woody Zuill 给了我们两个答案:
- 将工作分开到多人中就很高效的证明到底在哪里?这与 Robert C 十分接近。在 Martin 对 IT 历史的回顾和 Peter Drucker 对于“知识工人”的工作中提到:使用工厂标准来衡量知识工作是一种解释,但(据我所观察到)没有通过证明的证据。
- 我们的目标不是多产而是有效。为了使用精益实践画一条线,多产而非有效通常是一个迅速产生浪费的好方法。
一个团队在开发软件时所面对的最主要的问题在 Mob 编程中全部消失了。例如:
- 再没有交流的问题;整个团队都在那里,随时保持与大家接触。
- 为了得到问题(的答案)的等待时间:问题不在于产量,而是获得解答。在这个环境下,再积压中引入新的库存就是浪费了。整天一起工作就消除了这个问题。
- 技术负债。这也许是软件开发最无形的方面:在 IT 中,当一个队伍在产品中引入了垃圾,它会留下来。Mob 编程则使持续的高质量成为可能。
在 2012 年,Zuill 在 Hunter 中和他的团队尝试了一些新的实践。在通过 twitter 进行了一些讨论后,他开始问自己他在会议中都做了什么。在大量的演讲中,他持续问自己同样的问题,于是他决定写一些幻灯片来解释它,并在脑中铭记 Peter Block 的这句话:
“另一个人经验的价值是为了给我们希望,而不是告诉我们该怎样或该不该前进。”
Zuill 有一个复杂的问题:“为什么团队要像现在这样工作?”观众们的回答都是因为团队,而他的回答却不同:一个团队用 Mob 的方式进行工作的唯一原因是这个团队决定了这么做。
这也许就是 Mob 最适合敏捷思维的地方,而且它也许比 Manifesto 更敏捷,更像 Alex Krivitsky 在 2011 年重写的那样:这全都是关于“个人和交流”。为了做到这点,Mob 编程“manifesto”(我不确定会有人这样称之)如下:
所有聪慧的头脑在同一件事、同一个时间、同一个地点、同一台电脑上工作。
我看到了它与第一个 manifesto 的两点不同:
- 首先,Mob 编程是集中式的,并且它通过行动的结合连接起来。整个 Mob 承诺在同一时间共同做同一件事,并且不在人们之间划分工作。这就是最像 XP 本该有的样子。这就是 _ 集体所有制 _ 的承诺。
- 第二,多亏这个结合,没有必要再问有关集中的和分布式团队的问题。每个人必须一起工作、为了工作而产生的没什么用的效率工具(joinMe、HangOut 等)是毫无意义的。有些团队则因此而著名(Cucumber 团队、Corgibytes 等)。
为了达到并强调这一模式,Zuill 解释了强结对编程的引入,其中 Llewellyn Falco 是这样定义的:
为了一个想法从你的大脑输入电脑,你需要借助别的手。
Woody 对 Mob 编程则十分谦虚:他一起工作的团队刚刚才尝试了一些实践;他们只是在更多地使用他们认为有用的实践方法。Woody 刚刚看到了代码的感觉,并要求团队提升一些技术。他这么说道:
做这个工作的人能最好地决定怎么做这项工作。
这样的 mob 团队典型的一天是由不需要站会的、每天一小时的学习时间开始。在那之后,整个团队开始做他们的产品,一天不超过八小时。在一小段时间后,产品负责人基本上全天都作为小组的一员工作。他们还使用了一些原则:
- 做更多有利的事:这是 Kent Beck 在“XP 解释”中所提到的:如果一样东西看起来很有效,多做一些。
- 回顾会议:为了更好地提高效果,团队要审查自己的实践,至少一天一次,来适应并 _ 扩大效益 _。
- 每周实践:为了提升你的代码能力,这是必须要执行的。
Robert Henri 总结了其中的要点:
对象不是艺术,但是在这样美妙的状态下,它会不可避免地称为艺术。
作为总结,Mob 编程是有关学习态度的:
- 分享
- 关注新手的想法
Zuill 没有讲 Mob 编程提升到“必须要做的事”,而他鼓励更多频繁的回顾和对团队基本的关心。Mob 编程也许和在这里描述的实践一样重要,通过不同的,对于团队的效果会有所不同。
每个参与 mob 的人在 Mobbing 中都随时保持能与大家接触,这意味着为了使它成功,你必须确认团队的心理安全。这和 Richard Kasperowski 在两天前展示的 Core Protocols 的解释很接近。这也许就是为什么有了 Core Protocols 之后,敏捷的开放空间和 Mob 编程中定义了现代化的敏捷。
对Woody Zuill 的采访
InfoQ:Woody,非常感谢你能够接受 InfoQ 的采访。在你的 keynote 之后,你说 IT 工业已经破产。你可以分享你为什么这么认为吗?
我不至于说出 IT 工业已经破产这样的话,但是我们现在遵循的许多实践方法只不过是按照惯例执行。这就像 Adm. Grace Hopper 所说的:“人类已经开始拒绝改变。他们喜欢说:‘我们总是这么做’。而我试图做出反抗。”当我们只是简单地因为“我们曾经总是这么做”而去做事情,我把这样的情况看作一个提升的机会。
InfoQ:以这样的角度,你认为我们可以做什么来提升我们商业的情况?
把关注点放到运行得很顺利的事情上是很有用的,然后再做一些实验来看我们可不可以找到一种放大利益的方法。例如,在探索“Mob 编程”前我们聚集起来开会,来查看一些开发者一直有困难而没有解决的工作。在查看过有问题的地方后,我们开始在会议上共同解决这些问题。这就不是提出一些想法然后再回到自己的办公桌上开始尝试写代码,我们一起工作来定义代码中的问题并且作为一个团队来解决问题。我们发现这样做非常高效,所以决定继续用这样的方式作为实验工作几天,来看我们是否能够“提高协作的效果”。最终表明它十分有效,这也是我们为什么会这样工作,即每天作为一个团队进行“Mob 编程”的原因。
InfoQ:作为 Mobbing 中的主要代理人,你怎样在公司中引入 Mob 编程的想法?
虽然我十分自信 Mob 编程有很多的好处,但是我不会随意推测我看到和体验到的这些好处是普遍适用的。然而,当我被邀请向团队介绍 Mob 编程时,我做了一个研讨班,其中我们探索了软件开发的本质、团队工作的好处,以及分享创意和有礼貌地解决冲突的技巧。
InfoQ:从另一方面来讲,如果我们的读者都很相信 Mob 编程,你可以从内在分享些引入 Mobbing 的建议吗?
慢慢来。如果人们对实践 Mob 编程很感兴趣,我建议共同实践简单的代码练习或 Katas 是一个很好的开始。没有了在生产工作中的工作压力,我们可以练习如何一起工作并且学习怎么样良好且有意义地沟通。Mob 编程就是有关学习一起工作的。
InfoQ:从一些角度来说,你认为 Mob 编程可以在编程外的其他领域使用吗,就像 Scrum?
就像敏捷编程和极限编程,Mob 编程也是关于软件开发的,但是类似的概念也同样适用于其他类型的工作,例如设计、市场、硬件工程、文档工作等,甚至可以说任何事情。在许多领域里一起高效地工作都是优势。
InfoQ:在协调人的一次研讨班中,你说:“这不是有关 Mob 编程的”。所以如果 mob 不是有关 mob 的,那什么与 mob 有关?
它是关于探索原则和实践的,这在你正在做的事和你在共同工作的人的环境中是十分重要的。Mob 编程本身只不过是通过使正在做工作的人们能够决定怎么样做自己的工作而发展出来的结果。我们在练习如何从频繁和定期的回顾中获得好的结果、更关注能使工作变得好的事、以及提高它的效果,它就是发生在这样的环境下。当我们能把这件事做好,我们就能找到任何环境下正确的实践结合。
InfoQ:如果我们的读者想要更深层地了解 Mob 编程,你建议他们可以读 / 看 / 听 / 做些什么?
youtube 上有一个三分钟的视频,可以作为一个有趣的开始——它展示了我们最初的团队如何使用“Mob 编程”在工作日的全部 8 小时中共同工作。
我还与 Kevin Meadows 写了一本书,他们可以阅读。
我们在大会上有大量的演讲视频和播客节目,我还经常做有关 Mob 编程的免费网上研讨会。并且我很乐于通过视频会议来解答任何问题。
查看英文原文: Mob Programming - an Interview with Woody Zuill
感谢刘嘉洋对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论