写点什么

Mob 编程——对 Woody Zuill 的一次采访

  • 2016-07-03
  • 本文字数:3528 字

    阅读完需:约 12 分钟

在软件产业历史上有的疯狂的点子中, 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 给了我们两个答案:

  1. 将工作分开到多人中就很高效的证明到底在哪里?这与 Robert C 十分接近。在 Martin 对 IT 历史的回顾和 Peter Drucker 对于“知识工人”的工作中提到:使用工厂标准来衡量知识工作是一种解释,但(据我所观察到)没有通过证明的证据。
  2. 我们的目标不是多产而是有效。为了使用精益实践画一条线,多产而非有效通常是一个迅速产生浪费的好方法。

一个团队在开发软件时所面对的最主要的问题在 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 )关注我们。

2016-07-03 19:001545
用户头像

发布了 26 篇内容, 共 66507 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

一种基于Prompt的通用信息抽取(UIE)框架

阿里技术

深度学习 信息抽取

音视频开发进阶|第六讲:色彩和色彩空间·下篇

ZEGO即构

音视频开发 色彩

最近面试经常被问到的js手写题

helloworld1024fd

JavaScript

共筑使能千行百业的数字底座 | HDC 2022松湖对话顺利召开

OpenHarmony开发者

OpenHarmony

走进 Orca 架构及技术世界

KaiwuDB

数据库·

一本书,带你走出Spring新手村

博文视点Broadview

React组件复用的发展史

夏天的味道123

React

聊聊前端开发中的 Ghost Design 设计思路

汪子熙

前端开发 angular web开发 SAP 11月月更

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

React性能优化的8种方式

xiaofeng

React

react源码中的hooks

flyzz177

React

重磅!涛思数据发布TDengine PI连接器

TDengine

数据库 tdengine 时序数据库

假如面试官要你手写一个promise

helloworld1024fd

JavaScript

react源码中的协调与调度

flyzz177

React

美团前端常考手写面试题(边面边更)

helloworld1024fd

JavaScript

想会用synchronized锁,先掌握底层核心原理

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

CIO们开始将软件供应链升级为安全优先级top

SEAL安全

DevOps 开源软件 软件供应链 SBOM 软件供应链安全

React核心工作原理

xiaofeng

React

Oracle、MySQL等数据库故障处理优质文章分享 | 10月文章汇总

墨天轮

MySQL 数据库 oracle 性能优化 故障恢复

阿里云E-HPC+i4p大内存实例,加速寻因生物单细胞数据分析效率

阿里云弹性计算

HPC

OpenHarmony移植案例: build lite源码分析之hb命令__entry__.py

华为云开发者联盟

鸿蒙 芯片 华为云 源代码 企业号十月 PK 榜

元宇宙场景技术实践|实现“虚拟人”自由

ZEGO即构

React的5种高级模式

夏天的味道123

React

浅谈:数字资产永续合约交易所开发有什么好处?

W13902449729

合约交易所开发 区块链交易所开发

React组件设计模式-纯组件,函数组件,高阶组件

xiaofeng

React

【web 开发基础】通过模拟地铁售票系统介绍PHP 自定义函数之函数的参数-PHP 快速入门 (26)

迷彩

记录函数参数和返回值 参数列表 PHP基础 11月月更 函数参数

react源码中的生命周期和事件系统

flyzz177

React

动手实践丨使用华为云IoT边缘体验“边云协同”

华为云开发者联盟

云计算 华为云 企业号十月 PK 榜

阿里云Imagine Computing创新技术大赛正式开启!

阿里云视频云

阿里云 技术大赛

React组件复用的技巧

夏天的味道123

React

深入浅出分布式,阿里大牛手写《分布式核心原理》Github一夜爆火

Java永远的神

分布式 程序人生 分布式计算 分布式系统 分布式存储

Mob编程——对Woody Zuill的一次采访_语言 & 开发_Stéphane Wojewoda_InfoQ精选文章