写点什么

为什么 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:001810

评论

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

太神了!阿里p7大佬总结的Java面试心得,起始—进阶—突击,一应俱全!

Geek_0c76c3

Java 数据库 开源 程序员 架构

鹅厂二面,nginx回忆录

有态度的马甲

啃透Alibaba这份面试通关宝典,信心倍增!我成功拿下今年第15个Offer

Geek_0c76c3

Java 数据库 开源 程序员 架构

在 Go 语言中使用 exec 包执行 Shell 命令

宇宙之一粟

Shell Go 语言 10月月更

阿里老表总结的“JVM核心笔记”,让我瞬涨7K!

程序知音

Java 架构 性能优化 JVM 后端技术

JPEX推出竞猜世界杯冠军球队活动,质押平台通证赢奖金

股市老人

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

程序知音

Java 微服务 阿里 SpringCloud 后端技术

阿里大牛强力推荐:springboot实战派文档,采用知识点+实例的形势,深入了解

Geek_0c76c3

数据库 spring 开源 程序员 架构

实践了上万次,原来这些才是敏捷测试需要遵循的原则

敏捷开发

敏捷 测试 单元测试

云安全将进入黄金时代 - Gartner 报告解读

HummerCloud

云计算 云安全 Gartner

运维监控管理平台 TASKCTL 流程启动的3种不同模式

敏捷调度TASKCTL

大数据 数据仓库 自动化运维 TASKCTL DevOps工具

太强了!阿里巴巴最新开源303页Spring全家桶高级笔记,深入瓦解源码

Geek_0c76c3

Java 开源 程序员 架构 开发

京东的“618”高并发秒杀终极版教程!(Java语言设计)

程序知音

Java 架构 并发编程 高并发 后端技术

打造面向工业4.0的智能工厂01|云边协同架构助力视觉AI缺陷检测应用构建

EMQ映云科技

AI 物联网 IoT emqx 10月月更

idea启动build过慢

拾光师

IDEA 10月月更

一文带你玩转ProtoBuf

王中阳Go

Go 微服务 RPC protobuf 10月月更

React源码分析7-state计算流程和优先级

goClient1992

React

人工智能软件及服务细分市场数据监测报告合集

易观分析

人工智能 报告

面试官:你说说Vue中的组件和插件有什么区别?

CoderBin

vue.js 面试 前端 组件 10月月更

leetcode 220. Contains Duplicate III 存在重复元素 III(困难)

okokabcd

LeetCode 数据结构与算法

基础设施 NFTScan 正式发布 Avalanche 网络 NFT 浏览器

NFT Research

区块链 NFT web3 数据基础设施 Avalanche

技术内幕 | StarRocks Pipeline 执行框架(上)

StarRocks

数据库

TDengine 3.0 中如何编译、创建和使用自定义函数

TDengine

数据库 tdengine 开源 时序数据库

React源码分析8-状态更新的优先级机制

goClient1992

React

中国CRM要超车,没有弯道

ToB行业头条

自己手写一个redux

helloworld1024fd

JavaScript

腾讯强推Spring Security速成笔记太香了!认证授权一键搞定

程序知音

Java 架构 spring security 后端技术 Spirng

《数字经济全景白皮书》证券财富管理篇 重磅发布

易观分析

金融 证券

从零手写react-router

helloworld1024fd

JavaScript

Dataphin V3.6版来了!多项能力升级,助力企业提升全链路数据治理能力

瓴羊企业智能服务

基于 openEuler 22.09 版本构建的 NestOS 全新发布!

openEuler

镜像 操作系统 openEuler

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