理解Mobbing的科学之处

简介:

探讨和使用Mob编程的人不是很多。尽管这样,他们的经验大部分都很有参考价值,因为他们对编程和团队都有不同的见解。

Llewellyn Falco在第一届Mob编程大会上展示了一个有关Mob编程的keynote,叫做《理解Mobbing的科学之处》。Mob编程大会在2016年5月1日-2日在马萨诸塞州坎布里奇举行。InfoQ通过Q&A和文章对其进行了跟踪报道。

根据Llewellyn所说,Mob编程不是一项科学,而且计算机科学也几乎不算是一项科学。尽管如此,至于一个团队如何开发软件,在此有一些常用的实践方法:
独立编程是现在最常用的实践方法,不管是好的还是坏的,所有的东西都进入到了代码里, 结对编程是第二最为人熟知的方法,两个人的更好的想法会进入到代码里, Mob编程可能是最无人知道的开发方式,但是根据Llewellyn所说——它不是获取人们的大部分想法,而是选择了最好的想法
其中的科学又在哪呢?Llewellyn将它与系统理论联系在了一起:一个团队就是一个系统。而且它是一个很复杂的系统。人们很难将其中的一部分独立出来,或引用Dan North的一句话就是“一只手击掌会是什么声音?”。

在系统中开始任何东西就像是点燃一团营火。团队中如果全都是独立编程的程序员,即使是最好的程序员,当一个人落后了,他或她(大部分时候)都是独自解决问题,然后还是陷在问题中。为了产生新的想法,一个人需要让想法发散出去,越发散越好。而这正是mobbing所做的:让许多人试图一起增强一个已有的思想火花。使用Llewellyn所做的另一个比喻,这就是豪斯医生的剧集里(或硅谷第一季最后一集里)正好相反的事情:一个人有一个顿悟,或者引发了一个想法,然后团队的其他人有助于使它成为一个更好的想法。这种影响就像记忆和群体记忆的关系。群体记忆一般都比一个人的头脑更好,mob编程则可以驱动多人记忆。这和解决问题是一样的:你有一个鼓励Takeuchi和Nonaka称之为“多元化”的系统状态。而且一旦事情越来越糟时多元化就十分有用。

Llewellyn提出了下面一个显然很简单的问题:

你如何构建一个团队?

在他的回答里,有两个先决条件:
在mob中,你不知道想法会从哪里冒出,但是那真的不是重点。相反地,很多时候我们为生存倾向所折磨:一个人在观察带来成功的东西,而那正是你应该逆向分析的地方。举个例子,因为高级管理人员的想法被采用了,所以通常人们会认为他们所说的是更好的想法。然而,大多数时候这和想法本身无关,特别是在一个会议中。这都与HiPPO有关:当一个高级人员只是与团队交流而不是与团队一起工作时,成功的机制是不同的。更直接一点地说,如果一个项目是成功的,是多亏了高级人员的想法;否则的话就是归咎于团队。 这引发了另一个Llewellyn解释的现象:本杰明·富兰克林效应。当我们认为我们对别人很友好、体贴和尊敬时,事实往往相反:其实是那个人对你很友好、体贴和尊敬。
所以这个简单的问题的完整答案是:

作为一个团队一起工作。你和什么样的人待的时间最久,你也会变成这样的人。

现在我们回到人文主义:如果一个团队的样子不仅仅取决于团队成员是什么样的人,并且作为成员的我们会影响到我们周围的人,那我们必须很友好、体贴和尊敬他人。这才能让以身作则的精益原则生效。

Llewellyn最后与大家分享的一点是技术负债和技术资产的区别。只考虑负债而遗忘资产是不公平的(在你寻求降低成本而不是创造价值时很容易这样)。

很难阻止10倍开发者的神话的流传。但是10倍开发者看起来是什么样的呢?根据一些基于数学的例子,我没能理解很多,但是Llewellyn的结论是通常10倍看起来并不像你期望的那样。它和看问题的角度有关,并且10倍的速度可能看起来很慢但是可以非常有效。

为了将这一点更加具体,他介绍了两个陌生概念的差别:
无限的任务,例如将一块蛋糕分成两半直到时间结束。 超级任务,根本上来说是一个在有限的时间内完成的无限任务。例如在两分钟内持续将一块蛋糕分成两半,并不断把留下的部分也分成两半。你将在两分钟内结束切蛋糕的过程。
从这点来说,并且回到执行的角度,没有人可以说引进一个人1%的学习时间后是什么样的。另外一个方面,如果你在一个大公司(或古老的公司)工作,你有机会来理解十年不学习会变成什么样!

为了对mob编程进行总结,主要的关注点在于文化:为了获得改变,它应该是开放的并且是一个邀请。这真的是对他的演讲作为一个纹心结构的总结:你们应该作为一个团队去参加大会,并带着开放和邀请的文化。否则当你带着新概念回来时,你的团队无法与你保持同步(还会在大部分时间推开你)。

====================================分割线================================

本文转自d1net(转载)

目录
相关文章
|
9月前
|
信息无障碍 C++
万字长文,深度分析 c++的前景
万字长文,深度分析 c++的前景
89 0
|
12月前
|
算法
KMP算法细节详解(带动图理解)(2)
KMP算法细节详解(带动图理解)(2)
|
12月前
|
算法
KMP算法细节详解(带动图理解)(1)
前言 KMP算法是为了字符串匹配问题而被研究出来的,字符串匹配问题就是查看一个字符串A是否是字符串B的子串,如果是字串的话,在B的哪个位置?此算法代码简练,但理解起来非常困难,建议挑出一整块时间来专门学习,本文作者写的非常用心,还不了解KMP的小伙伴一定要静下心来慢慢细品,你一定会有所收获🍊 一、字符串匹配问题 如果遇到这种在一个字符串中寻找另一个字符串的子串这种问题,大多数人第一时间想到的肯定是通过暴力匹配算法来完成,也就是Brute-Force算法简称BF算法,时间复杂度为O(m*n),如果有上千行上万文本呢?,时间成本一定会很高,所以D.E.Knuth,J.H.Morris和V.R.
|
人工智能 JavaScript BI
【运筹学】整数规划 ( 相关概念 | 整数规划 | 整数线性规划 | 整数线性规划分类 )
【运筹学】整数规划 ( 相关概念 | 整数规划 | 整数线性规划 | 整数线性规划分类 )
121 0
|
机器学习/深度学习 JavaScript
【运筹学】整数规划 ( 整数规划示例 | 整数规划解决的核心问题 )
【运筹学】整数规划 ( 整数规划示例 | 整数规划解决的核心问题 )
174 0
【运筹学】整数规划 ( 整数规划问题解的特征 | 整数规划问题 与 松弛问题 示例 )
【运筹学】整数规划 ( 整数规划问题解的特征 | 整数规划问题 与 松弛问题 示例 )
346 0
【运筹学】整数规划 ( 整数规划问题解的特征 | 整数规划问题 与 松弛问题 示例 )
不似盘子似炸薯片,科学家首次展示银河系恒星外盘“翘曲”结构
该发现将为未来探究巨大盘星星系形成和演变提供重要的指引性线索。
320 0
|
Android开发
第二十一章:变换(十三)
垂直滑块?某些观点是否可以轮换并仍然可以正常工作? 更具体地说,Xamarin.Forms的普通水平Slider元素可以旋转成垂直滑块吗?我们来试试吧。 VerticalSliders程序在StackLayout中包含三个滑块,StackLayout本身逆时针旋转90度: <ContentPage xmlns="http://xamarin.
796 0
|
机器学习/深度学习 人工智能 自然语言处理
重温五条 AI 基础规律
像机器学习如何人工“智能”
311 0