写点什么

为什么 Mob 编程会议值得关注

  • 2016-05-05
  • 本文字数:3214 字

    阅读完需:约 11 分钟

_ Mob 编程是一种软件开发的方式,在这种方式中,整个团队会在同一时间、同一空间、同一台电脑上从事同一件事情。_ 这是一种相对较新的方式并且引起了很多的讨论。

第一届 Mob 编程会议将会在 5 月 1 日至 2 日于 Cambridge MA 举行,它是由 Agile New England 主办的。

InfoQ 与这次会议的组织者进行了交流,讨论了 Mob 编程、会议的目标以及到哪里获取更多的相关信息。

InfoQ:你们是第一届 Mob 编程会议的主要组织者,能介绍一下你们自己吗?

Nancy:我是 Nancy Van Schooenderwoert,是一名独立的敏捷教练,主要的工作就是和工程师打交道,这些工程师会构建安全性要求很高的产品,如医疗设备。我之所以提议 Agile New England 举办这个新的会议是因为 Mob 编程模型虽然很简单,但是它有很多深入的内容。我们需要有一个专注于此的活动,从而加深对它的理解。

Eric:我是 Eric Houston,对于 Mob 编程来说,我还是新人,我来这里是学习的。我倡导协作和集体的努力,在 Mob 编程中,我看到了这种理念的缩影。

Woody:我是 Woody Zuill,15 多年以来我一直专注于探索如何提升软件开发业务的方法。我发现敏捷宣言的价值观和原则是很重要的指导,我可以使用它来评估任何我想要尝试的实践。对我来讲,Mob 编程是这种探索过程的自然结果。

Llewellyn (Falco):我接触 Mob 编程开始于 13 年前,我发现了“更强风格的结对”,它遵循这样的规则:“对于某个理念,在它从你的脑子到键盘之间必须要经历其他人的手”。这个规则帮助我更好地理解与我共事的每个人,并将我所学习的领域推进到了超出我预期的程度。

就在前一天,Woody 还在跟我说要成为一个班卓琴的乐手。在节假日,人们通常会聚在一起,玩一些音乐,而程序员则只会聚在一起谈论代码。我们想改变这种情况,并且在当地的聚会上举行一些活动(dojo),在这些活动中,我们会在一起实际编码。这变成了一种很有意思的学习方式,不过 Mob 将其带到了一个全新的水平。我们的 dojo 很像聚会上的果酱会议(jam session),随机找一些人来一起玩音乐。Mob 编程就像一个真正的乐队,人们互相理解和信任彼此,编写出非常棒的软件,它不仅仅是为了片刻的欢愉,更能经受住时间的考验。从那时候开始,我就一直使用 Mob 编程方式,将其用到了团队工作和课堂教学中。

InfoQ:Mob 编程依然是一种很年轻的“方法”。你们能介绍一下它到底是什么吗?

Woody:Mob 编程是一种软件开发方式,在这种方式中,整个团队会在同一时间、同一空间、同一台电脑上从事同一件事情。这类似于结对编程,结对编程中两个人会使用同一台电脑,进行协作,同时编写同一段代码。但是,在 Mob 编程中,我们会将协作扩展至团队中的每一个人,不过,依然会使用同一台电脑来编写代码或做其他的事情。

除了软件编码以外,团队会在一起工作,完成传统软件开发团队所遇到的几乎所有的工作,如定义 Story、设计、测试、部署软件,还包括与客户、业务专家或 Product Owner 的协作。几乎所有的工作都是以“工作会议”或 workshop 的方式来处理,所有与创建软件相关的人都被视为团队成员,包括客户 /product owner。我们每天都会或多或少地按照这种方式进行工作。

换句话说,这种方式对结对编程的极限编程(Extreme Programming)理念进行了演进。我们努力强调并扩大一些理念,如面对面交流、团队共识、协作、全团队参与、持续代码检查以及“自组织团队”。

Llewellyn:很多人将编码视为我们所输入的代码行,Mob 并非如此。Mob 试图最大化地查找深刻见解的数量,并将其体现到代码中。这些见解体现在多个方面。有时,你只需要有人关注着你,从而帮你变得更好;有时,你灵光一现,有了某个想法的火花,但是需要其他思想的火种才能将其变为火焰;有时,你有了一个很棒的想法,但是缺少足够的能力、知识甚至勇气将其变为现实。在 Mob 中,我们可以培育和捕获每个见解,并将其变为最棒的实现,整个团队在任何给定的时间都能体现出最强的能力。

我经常会想到这个难题,“球拍的价格比球贵 1.00 美元,而它们一共需要 1.10 美元,那球的价格是多少呢?”,这样的问题很容易让人感到困惑,不过,如果在 Mob 中,有一个人得到了结果,那么整个 Mob 团队都会很快知道答案(0.05 美元)。

InfoQ:你们组织了史上第一次 Mob 编程会议,那么你们的目标是什么呢?

Woody:我曾经举办过很多的 workshop,有公开的也有内部的,还有一些其他的聚会(如在 Stockholm 的 Ericsson 所举办的几次活动),另外还做过很多演讲、访谈和展示。但是,这次我们想要提供一种不同的体验。

Nancy:Woody、Llewellyn 和我曾经帮助团队学习 Mob 编程,我们意识到后来出现了 Mob 的不同实践和风格——我们想要与来自不同团队的 Mob 参与者聚在一起,对比 / 探索他们特有的实践。我们也看到,有多种不同的方式来引入 Mob 编程。对于那些想提升讲授 Mob 编程水准的人来说,将会在实践中得到学习:他们将会向那些之前也从事这方面工作的人进行讲解,并向他们学习。我们的目标是不管你的 Mob 编程技巧水准如何,都能学到新的知识,其中也包括我们!

Llewellyn:在公司中,我们将每个人都聚集到同一个房间中一起工作,就会发生一些很棒的事情。我们相信如果将具有这种工作风格经验的人聚集到同一个房间中,并分享相关经验的话,会发生同样的事情。

我期望能够发现一些之前所不了解的东西。希望能够学习到一些别人已经掌握的新理念。

InfoQ:这次会议的日程与其他的敏捷活动颇为不同,你们能解释一下吗?

Woody:我们希望能够提供一种环境,让每个人都得到尽可能多的实战经验。我们对演讲的数量进行了限制,所以能够花尽可能多的时间去举行 workshop,在 workshop 中会有导师进行指导,这些导师都是创新者并且是较早采用 Mob 编程方式的人。在整个会议期间,我们还会举行回顾和 Open Space 环节,这样就能进行“优化和调整(tune and adjust)”,从而更好地满足参会人员的需要。

Llewellyn:我们希望获得共享的经验,还想要进行讨论和探索。与常规的会议不同,我们知道整个房间里所有人的知识要比站在房间前面进行演讲的人的知识多得多。我们不想采用学术会议的形式,让参加者只是听演讲,但我们也知道,一开始进行讨论的时候,会有很多的误解。有时候会有谬误:“它需要是 6!”“这不行,它是半打(½ a dozen),否则不可行”。有时候会产生误解:“这就是红色所代表的含义吗?”首先举行 workshop,能够有助于确保参会者使用共同的语言,因为我们具有共同的经验。

InfoQ:这个活动的目标观众是谁呢?

Nancy:敏捷团队中的每个人都是我们的目标观众。各种水平的软件开发人员和测试人员都会觉得这是一个关于 Mob 编程的很好的入门,如果他们已经尝试过 Mob 编程的话,那么他们会了解到将其继续推进的方法,以及如何解决所面临困难。技术领导会发现 Mob 编程能够使他们的团队成员之间保持同步,学习新东西会非常高效。

Llewellyn:Mob 建立在多样性之上,我们希望这次会议能体现这一点。

  • 来自团队中所有组成部分的不同观点 [程序员、测试人员、product owner、UX、BA 等等]。
  • 来自教师、学生、咨询人员以及全职雇员的不同观点。
  • 来自刚刚听说这种方法的人、全职采用这种方法的人甚至该方法发明者的不同观点。

每个人都会为这个拼图做出自己的贡献。

InfoQ:在我参加之前,如果我希望加深对 Mob 编程的认识,你们有什么推荐阅读或视频吗?

Nancy有一个三分钟的视频是关于 Woody 的团队如何实施 Mob 编程的。这个视频展现了一个 100% 的时间都采用 Mob 方法的团队所经历的典型的一天。
参见 Woody 的博客,这里有很多最新的相关信息。

Woody:在 LeanPub 上,Llewellyn 有一本指南性的图书——我也刚发布了“正在进行中”的一本书(也在Leanpub 上): Mob Programming: A Whole Team Approach

Llewellyn:我还要补充 Woody 的 NDC 访谈 Jason 的敏捷 2015 经验报告(Agile 2015 experience report) Aaron 的 Mobbing for Introverts

查看英文原文: Why the Mob Programming Conference Matters

2016-05-05 19:001922

评论

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

Git 安装及配置

Emperor_LawD

git 基础 5月月更

Nginx 如何将所有 HTTP 的流量转移到 HTTPS

HoneyMoose

浅谈TCP和UDP协议

工程师日月

5月月更

硬仗白酒,解锁当下“社交密码”

联营汇聚

CleanMyMac2022免费版Mac电脑清理软件功能

茶色酒

CleanMyMac2022 CleanMyMac

Nacos源码系列—关于服务注册的那些事

牧小农

源码 nacos

Tech Talk 宣传 | 如何高效、极简构造无服务器 Web 应用

亚马逊云科技 (Amazon Web Services)

Web

不仅仅是自动化,DevOps 测试工具推荐

飞算JavaAI开发助手

一“碳”究竟:碳交易的生意经与飞轮“燃料”

脑极体

Global Tensor和实习总结|OneFlow学习笔记

OneFlow

深度学习 学习笔记 分布式训练 Global Tensor

无需修改代码,用 fcapp.run 运行你的 REST 应用

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Django Model 如何返回空的 QuerySet

AlwaysBeta

django

虎符交易所上线量化网格交易 同步开启活动三重奏

区块链前沿News

活动 虎符交易所

闲置计费 | Serverless 冷启动与成本间的最优解

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

python进阶-迭代器和生成器

AIWeker

Python 人工智能 5月月更

【愚公系列】2022 年 05 月 二十三种设计模式(五)-单例模式(Singleton Pattern)

愚公搬代码

5月月更

时序数据库在水电站领域的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

MySQL存储过程批量生成假用户电话号码

芝士味的椒盐

MySQL MySQL 数据库 5月月更

一文搞定 Flutter 文件下载和管理

岛上码农

flutter 跨平台 安卓开发 ios 开发 5月月更

每日一题——PAT乙级1004 成绩排名 python

武师叔

五、高可用之全链路压测

穿过生命散发芬芳

5月月更

在线时间戳格式化转换工具

入门小站

工具

IntelliJ IDEA 如何增加运行时候的内存

HoneyMoose

Jackson 解决没有无参构造函数的反序列化问题

TRAMP

Jackson java 序列化与反序列化

低代码实现探索(四十一)未实现小目标

零道云-混合式低代码平台

Flutter/Dart:生成最小值和最大值之间的随机数

坚果

5月月更

攻克编译器技术(2)

刘旭东

源代码 编译器原理 5月月更

Linux多线程-概念及控制

可口也可樂

c++ Linux 后端

ssh常用命令总结

入门小站

SSH

喜报!阿里云首个通过应用多活“先进级”能力评估

阿里巴巴云原生

阿里云 云原生 应用多活

聊聊 Kafka:Kafka 消息丢失的场景以及最佳实践

老周聊架构

kafka 4月月更 5月月更

为什么Mob编程会议值得关注_语言 & 开发_Stéphane Wojewoda_InfoQ精选文章