写点什么

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

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

关注

评论

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

性能全面跃级,成本大幅降低!双十一企业云服务就选华为云Flexus X实例

YG科技

Python中哪个框架最适合做API?

科普小能手

API Python框架 Python开发 pyton API 接口

区块链智能合约开发:全面解析与实践指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

技术干货丨Inspire Cast 如何避免自动网格划分失败?

Altair RapidMiner

人工智能 仿真 智能制造 altair Inspire

BSC链近况及解读:BSC链代币DApp开发详解

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

CDN海外加速对国际服务器的效果如何?

Ogcloud

CDN 网络加速 CDN加速 海外网络加速 CDN网络加速

论云游戏的性能与性价比,ToDesk、青椒云、顺网云游戏等具体实操看这篇就够了

小喵子

云桌面 云电脑 云游戏 ToDesk

Mysql篇-三大日志

EquatorCoco

MySQL 数据库

快递鸟快递查询API接口参数代码

快递鸟

快递

《Django 5 By Example》阅读笔记:p76-p104

codists

Python django

大模型推荐系统如何高效预训练和推理

博文视点Broadview

无代码技术怎么兴起的?它对企业数字化转型有什么用处?

积木链小链

技术分享 无代码 无代码平台

课程质量评估系统(源码+文档+部署+讲解)

深圳亥时科技

在华为开发者空间,简单几步带你实现AI风格化编程

华为云开发者联盟

云主机 华为云ModelArts FunctionGraph AI 大底座

国科云:SSL证书配置过程中常见问题盘点

国科云

One Switch for Mac(系统功能快速开关工具)

Mac相关知识分享

双十一降本增效新路径!华为云Flexus X实例为中小企业注入“硬核”动力

YG科技

5分钟搞懂 Golang 堆内存

俞凡

golang

双十一首款柔性算力云服务器亮相全新亮相!华为云Fleus X 实例到底有多强?

YG科技

IPQ5322: Qualcomm’s Wi-Fi 7 Chipset for Superior Indoor Networking

wallyslilly

Java灵魂拷问13个为什么,你都会哪些?

不在线第一只蜗牛

Java Python

NTFS Disk by Omi NTFS for mac(NTFS 磁盘管理器)

Mac相关知识分享

OmniGraffle for mac(思维导图软件)中文版

Mac相关知识分享

打造透明、高效的分布式系统:通过 EMQX ECP 集成实现链路追踪功能

EMQ映云科技

链路追踪 emqx EMQX ECP 边缘服务

远程踏勘系统(源码+文档+部署+讲解)

深圳亥时科技

ppt结尾页怎么设计?推荐12个高颜值ppt结束页模板!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

Project Office X Pro for Mac专业的项目管理软件

Mac相关知识分享

双十一轻松跨越数字鸿沟!华为云Flexus X实例引领中小企业低成本上云

YG科技

一夜之间,内容行业和大模型行业被这个All in One产品改变了

脑极体

AI

权限系统:权限应用服务设计

不在线第一只蜗牛

架构 应用开发

科技赋能绿色“碳”索,下党零碳示范基地启幕

新消费日报

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