# Mob Programming

Mob Programming (deutsch Teamprogrammierung), auch Ensemble-Programming, ist eine Softwareentwicklungsmethode, bei der das gesamte Team gemeinsam und gleichzeitig an einer Aufgabe arbeitet.

## Funktionsweise

Mob Programming ist angelehnt an Paarprogrammierung, das die Qualität von Software durch das Vier-Augen-Prinzip verbessert. Bei Mob Programming arbeiten alle Entwickler gemeinsam im gleichen Raum an einer Aufgabe. Sie benutzen dazu einen einzigen Computer, dessen Bild mithilfe eines Projektors projiziert wird. In der Regel wechseln sich die Teammitglieder etwa alle 30 Minuten ab, leisten konzeptionelle Arbeit und bringen neue Ideen in die Entwicklung ein. Mob Programming ist nicht nur auf die Programmierung beschränkt: Andere typische Softwareentwicklungsaufgaben wie Anforderungsmanagement, Softwaredesign, Softwaretest etc. werden ebenfalls gemeinsam erledigt. Alle am Projekt beteiligten Personen, darunter auch Anwender und Fachexperten gelten dabei als Teammitglieder. Bei Teams, die nicht programmieren – also beispielsweise Design- oder Planungsteams – wird der Begriff Swarming genannt. Mob Programming ist auch für verteilte Teams möglich, indem alle Mitglieder mittels Screen-Sharing in einem virtuellen Raum zusammenarbeiten.
Als Weiterentwicklung von agilen Methodiken gelten folgende Ziele für Mob Programming:
* Die Teammitglieder interagieren miteinander mit Freundlichkeit, Rücksichtnahme und Respekt.
* Der physische Arbeitsraum des Teams ist so gestaltet, dass das gesamte Team gleichzeitig an derselben Aufgabe ergonomisch arbeiten kann.
* Das Team arbeitet immer nur an einem Arbeitsgegenstand und schließt ihn ab, bevor es zum nächsten übergeht.
* Das Team ist stets bestrebt, sich durch regelmäßige Retrospektiven mit konkreten Maßnahmen zu verbessern.

## Geschichte

Der Begriff Mob Programming wurde erstmals 2002 in einem Aufsatz von Hohman und Slocum in Extreme Programming Perspectives erwähnt. Unabhängig davon wurde Mob Programming 2011 durch Woody Zuill in einem Team bei Hunter Industries als Weiterentwicklung von Testgetriebener Entwicklung und Coding Dojos eingesetzt. Seit seinem Vortrag „Mob Programming“ bei der JavaOne 2014 in San Francisco gilt Woody Zuill als Begründer dieses Entwicklungsansatzes. Zuill erklärt Mob Programming folgendermaßen:
   “All the brilliant people working on the same thing, at the same time, in the same space, on the same computer”
   „Alle genialen Leute arbeiten gleichzeitig an derselben Sache/Projekt, zur selben Zeit, am selben Ort, auf demselben Computer“

## Wissenschaftliche Untersuchungen

Ståhl und Martensson kamen zu dem Ergebnis, dass Mob Programming einen positiven Effekt auf Durchlaufzeit (Zeit bis Entwicklungsaufgaben als fertiggestellt gelten) und Produktivität bei komplexen, mehrere Bereiche übergreifenden Aufgaben hat. Auf der anderen Seite konstatierten sie sowohl hinsichtlich der Gesamtproduktivität als auch des Wissenstransfers widersprüchliche Resultate und wenn dann nur geringe Verbesserungen.
Wang und Manos verglichen Mob Programming mit Paarprogrammierung und kamen zu dem Ergebnis, dass Mob Programmierung zu weniger Stress führe, allerdings in Situationen schlechter sei, welche intensive Zusammenarbeit und Wissensaustausch fordern. Die Produktivität (im Sinne von umgesetzten Tasks) wäre bei Pair Programming höher, aber die Effizienz (im Sinne von wenig Bugs) bei Mob Programming.