最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:001354
用户头像

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

关注

评论

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

BSN-DDC基础网络详解(七):BSN-DDC官方合约市场

BSN研习社

DevEco Device Tool 3.1 Release新版本发布,新增资源管理器、SFTP、HDC

HarmonyOS开发者

HarmonyOS

软件测试丨构建高效的Web自动化测试环境及Web自动化测试实战

测试人

软件测试 自动化测试 测试开发 Web自动化测试

基于FFmpeg和Wasm的Web端视频截帧方案

百度Geek说

ffmpeg webassembly 企业号 4 月 PK 榜 视频截帧

果然!GitHub上哄抢的500页微服务前后端分离开发手册,是出自Alibaba

做梦都在改BUG

Java 微服务 Spring Boot Vue 前后端分离

互联网大厂2700道Java高频面试题(2023年最新版)不管你工作几年,都可以看看

架构师之道

Java 编程

pnpm 之降本增效

京东科技开发者

前端 npm 企业号 4 月 PK 榜 node_modules

CVPR 2023 | 单阶段半监督目标检测SOTA:ARSL

飞桨PaddlePaddle

深度学习 目标检测 百度飞桨

StampedLock:JDK1.8中新增,比ReadWriteLock还快的锁

华为云开发者联盟

线程 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

MySQL架构与SQL执行流程

做梦都在改BUG

Java MySQL 数据库 SQL执行流程

GitHub已开源—在国内外都被称为分布式理论+实践的巅峰之作

做梦都在改BUG

Java 数据库 分布式 系统设计 设计数据密集型应用

移动端动态更新背后的原理及技术原理

没有用户名丶

天翼混合云一体机iStack解决方案直播

天翼云开发者社区

WorkPlus企业IM即时通讯私有化部署,从源头把控安全

WorkPlus

团队RONG合三状态,您的团队是哪一种?

禅道项目管理

“阿里味”的「Redis核心实践全彩手册」给你,还学不会就转行吧

做梦都在改BUG

Java 数据库 redis 缓存 面试

平均互信息与条件熵

timerring

信息论

Redis集群介绍及测试思路

京东科技开发者

redis redis集群 主从复制 redis哨兵集群 企业号 4 月 PK 榜

请您关注我们! 开源免费独立站BeikeShop——新一代跨境电商系统

BeikeShop

开源 跨境电商 电商系统 独立站 自建网站

从零学习SDK(3)如何安装和配置SDK

MobTech袤博科技

华泰证券与易观千帆达成合作,促进数字用户活力

易观分析

金融 证券

API First 再先一步,OpenAPI 定义被 openAI 定为 ChatGPT 插件标准

Apifox

人工智能 OpenAPI openai 开放api ChatGPT

Laplace分布算子开发经验分享

华为云开发者联盟

开发 华为云 正态分布 华为云开发者联盟 企业号 4 月 PK 榜

基于OCR进行Bert独立语义纠错实践

华为云开发者联盟

人工智能 华为云 OCR 华为云开发者联盟 企业号 4 月 PK 榜

牛客网2023Java最新面试宝典(附答案解析)正式开源

采菊东篱下

编程 java面试

BSN季度版本2023年3月31日迭代更新

BSN研习社

真正的AGI,既然是高度仿真人类的,是否可能也要经历过恐惧的体验?

FinClip

GaussDB(DWS)集群中寻找节点CPU占用高的语句

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

HummerRisk 使用教程:操作审计

HummerCloud

云安全

高频面试:如何解决MySQL主从复制延时问题

做梦都在改BUG

Java MySQL 面试 主从复制

值得一看!阿里内部“M9”级别全彩版分布式实战笔记

做梦都在改BUG

Java 架构 分布式 分布式事务 微服务

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