@levinzhang
2016-04-30T00:27:04.000000Z
字数 3670
阅读 675
by Stéphane Wojewoda on Apr 25, 2016
Mob编程是一种软件开发的方式,在这种方式中,整个团队会在同一时间、同一空间、同一台电脑上从事同一件事情。这是一种相对较新的方式并且引起了很多的讨论。第一届Mob编程会议会在5月1日至2日举行。InfoQ与这次活动的组织者进行了交流,试图理解这次活动为何值得关注。
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。