QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

新一代态势感知系统发布——北望

H3C-Navigator

网络安全 网络 态势感知关联分析、SOC 态势感知 安全运营

融云猿桌派:听说女生不适合搞 IT,哈?

融云 RongCloud

百度ToB垂类账号权限平台的设计与实践

百度Geek说

架构 后端

HTTP 中 ServletContext 对象,java软件工程师面试话术

爱好编程进阶

Java 面试 后端开发

mybatis-plus如何自动填充字段创建时间和修改时间,10天拿到阿里Java岗offer

爱好编程进阶

Java 面试 后端开发

IstioCon 2022,网易数帆六年优化经验即将揭秘

网易数帆

微服务 云原生 istio 服务网格 Service Mesh (ASM)

阿里云强力贡献:如何让 StarRocks 做到极速数据湖分析

StarRocks

数据库 大数据 StarRocks

百度程序员开发避坑指南(Go语言篇)

百度Geek说

后端

新华三首发400G园区核心交换机,开启园区超宽时代

H3C-Navigator

网络 交换机 智慧园区 网络交换机

融云 Unity SDK 升级,专注游戏场景,更好社交体验

融云 RongCloud

90天吃透阿里P8推荐的625页Java编程兵书技术实战,直接入职阿里定级P6

爱好编程进阶

Java 面试 后端开发

黑客是怎么cookie获取?钓鱼?键盘记录?

喀拉峻

网络安全 XSS

架构实战营 - 第 6 期 模块三课后作业

乐邦

「架构实战营」

Java-23种设计模式概述,手动实现一个简单的AOP框架

爱好编程进阶

Java 面试 后端开发

互联网通信安全之 WebRTC 传输安全机制

融云 RongCloud

为什么你应该了解 Loggie

网易数帆

Go Kubernetes 云原生 日志 Loggie

FastDFS入门,Java编程笔试题及答案

爱好编程进阶

Java 面试 后端开发

Sentinel FlowSlot 限流实现原理(文末附流程图与总结),50家大厂面试万字精华总结

爱好编程进阶

Java 面试 后端开发

Github上都在疯找的阿里内部“全栈技能修炼”终于来了,中级java工程师面试题

爱好编程进阶

Java 面试 后端开发

Scrum基础框架,快速配置Scrum自动化场景

阿里云云效

云计算 阿里云 Scrum 敏捷开发 研发敏捷

记一次Kafka写入超时问题详细分析

移动云大数据

kafka

Linux 信号(Signal)

mazhen

Linux JVM signal Linux Kenel

2021阿里总监最新整理:初级-中级-高级大厂面试真题(附答案解析

爱好编程进阶

Java 面试 后端开发

Docker编排利器DockerCompose,java面试题大汇总

爱好编程进阶

Java 面试 后端开发

Excel是世界上最危险的软件?

图灵教育

Python 数据分析 Excel

一键智能Mock,你值得拥有

Liam

前端 前端开发 Postman swagger web前端开发

eclipse配置SVN和Maven插件,原生Java开发的路该怎么走

爱好编程进阶

Java 面试 后端开发

持续进击,STI上演极致通缩模型

BlockChain先知

星环科技春季新品发布周,4月19日-23日重磅内容等你来解锁!

星环科技

关于 MySQL 数据库学习的书籍有哪些值得推荐?

程序员万金游

MySQL 数据库 java 日志 MySQL 数据库 java

JavaEE框架学习笔记——SpringMVC篇,java集合详解和集合面试题目

爱好编程进阶

Java 面试 后端开发

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