什么是Mob编程?

所有的聪明的人在同一时间,在同一个地方,在同一台电脑上工作于同样的事情。

Mob编程是一种软件开发方式,是结对编程的扩展,整个团队从事同一段代码编程。这类似于两个人坐在同一台计算机上,同时对一个任务或一个问题上进行结对编程。

这不同于"Swarming”,后者是整个团队一起策划一个方案,然后各自去独立工作。而在Mob编程中,团队一直呆在一起。

它基于精益生产,极端编程和精益软件开发原则建立。早期使用的短语“Mob编程”来自于“极端编程的观点”。

Mob编程用于以下领域且不限于这些:
1.用户故事
2.需求
3.测试
4.设计
5.bug修复
6.故障排除
7.测试

最初的概念来自Woody Zuill,它不是故意创造的,而是为了解决一个特定的问题催生的,“团队工作做得最好就是能弄清楚如何做工作”,他的团队2011开始尝试新的工作方式,从事使用代码kata技术进行培训,在这种技术方法中,一个小团队围坐在大屏幕周围,并在键盘上花费4或5分钟时间间隔键入代码,这些内容会显示在大屏幕上。他喜欢这个技术方式,并开始应用它。

他的整个团队坐在一个(或两个)屏幕前,并轮流坐在键盘上,每个人合作一起工作来解决一个问题,比如开发一个用户故事或其他。

Mob编程日渐流行,这是来自Mob Rule?的Mob编程场景:

Mob编程有一个非常简单的描述:团队所有人一起工作从事同一件工作,而不是将工作分配给个人或每对完成,整个团队坐在一起,并建议一个“司机”掌握唯一的键盘。

这是一个有趣的,令人深思的,甚至是具有挑战性的想法。一般人第一反应是怀疑。这些怀疑包括:
1.没有团队各自分工高效
2.有些人只是坐着,却没有真正的贡献
3.这需要由一些强有力的个人来主导
4.你怎么能设计出任何复杂的东西?

经过一段时间体验,他们认为:
1.实际效率很高,产生的用户故事数量不断增加,该团队的主观感觉,他们现在正在迅速前进,并产生更高质量的输出。

2.有些人确实说得比别人少,但每个人都参与了整个一天,每个人都有一定程度的贡献。

3.需要有一些“强有力的个人”的存在,主要是仔细聆听,并考虑每个人的想法。相比其他人会有更多谈话,并会有更多的指令,不过最终成绩结果还是集体驱动的。

4.能够设计复杂的东西?这是人们TDD和结对编程老掉牙的问题,实际中这是一种渐进式设计。这也是我们可以高品质解决真正复杂的问题唯一的方法,整个团队在系统架构思考中前进。

相对于结对编程,你不能对你的伙伴说,让我们休息一下,30分钟以后再开始,而整个团队在Mob编程时,你不太可能发出这种倡议。

关于参与人数问题,肯定不能200个人一起参与,6个人,或8,10或12个人?不过12个人确实已经够大了。不太切实际。

Mob编程实际也是某种头脑风暴,可以用于DDD等事件建模活动中。