Mob Programming – Software-Entwicklung im Team

Eine relativ neue Form der Software-Entwicklung ist das sogenannte Mob Programming, bei dem die Teamarbeit im Fokus steht. Mehrere Entwicklerinnen und Entwickler arbeiten dabei zusammen an demselben Endprodukt.

Vor- und Nachteile von Mob Programming

Vorteile

Nachteile

✔ Unkomplizierte Einarbeitung neuer Teammitglieder

✘ Hoher Zeit- und Personalaufwand

✔ Fachwissen durch verschiedene Expertinnen und Experten

✘ Verschiedene Meinungen können zu Unstimmigkeiten führen

✔ Geteilte Verantwortung

✘ Schwierige Umsetzung im Homeoffice

✔ Hochwertigerer Code

✔ Kreative und zielführende Lösungen

✔ Testen im Team

Was ist Mob Programming?

Mob Programming ist eine relativ neue Software-Entwicklungsmethode, die vor allem auf die Arbeit in speziell organisierten Teams setzt. Angelehnt an agile Software-Entwicklung sollen hierarchische Strukturen, die einer schnellen und effizienten Entscheidungsfindung oftmals im Weg stehen, aufgelöst werden. Auch der starke Fokus auf Zusammenarbeit ist von anderen agilen Software-Entwicklungsmethoden übernommen.

Der kollaborative Ansatz des Mob Programmings kann außerdem als Weiterentwicklung von Pair Programming verstanden werden. Während die Entwicklerinnen und Entwickler bei diesem ganz nach dem Motto „Vier Augen sehen mehr als zwei!“ in Zweierteams an Software gearbeitet haben, wird die Teamgröße beim Mob Programming auf fünf bis zehn Entwickelnde erhöht.

Doch das Mob Programming weist im Gegensatz zu traditioneller Teamarbeit noch eine Reihe weiterer Besonderheiten auf: Statt über in der IT-Welt etablierte Kollaborationstools wie GitHub an mehreren Rechnern gleichzeitig zu arbeiten, wird beim Mob Programming nur ein Terminal genutzt. Dieses wird oftmals mithilfe eines Beamers für alle Entwickelnden sichtbar an die Wand projiziert. Außerdem werden die Komponenten des Gesamtsystems nicht an einzelne, unter Umständen spezialisierte Entwickelnde aufgeteilt. Beim Mob Programming arbeitet das gesamte Team simultan an demselben Code. Auch das Erstellen der Anforderungskataloge oder das Testen und Deployen der fertigen Software ist Teamsache.

Rollen beim Mob Programming

Um die Teamarbeit zu strukturieren, werden den Teammitgliedern zu Beginn jeder Mob-Programming-Phase verschiedene Rollen zugeteilt. Diese Rollen sind allerdings keinesfalls statisch. Ganz im Gegenteil, nach einer gewissen Zeitspanne (zumeist 15 bis 30 Minuten) wird ein Rollenwechsel eingeleitet. In jedem Team gibt es einen Driver und mehrere Navigators:

  • Driver: Driver ist die Person, die letzten Endes den Code eintippt. Die im Team erarbeiteten Konzepte und Ideen setzt der Driver also in die Tat um.
  • Navigator: Alle anderen Teammitglieder werden als Navigators bezeichnet, die die Ideen kollaborativ entwickeln.

Je nach verfolgtem Mob-Programming-Ansatz kann es unter den Navigators noch weitere Rollen geben:

Ein Destinated Navigator sorgt dafür, die Ansätze und Ideen der Teammitglieder zu strukturieren und zwischen konkurrierenden Meinungen zu vermitteln, sodass der Driver nicht zwischen verschiedenen Implementierungsvarianten entscheiden muss. Er nimmt oft gleichzeitig die Rolle des Timekeepers ein, der nach einer gewissen Zeit für den Wechsel der Rollen innerhalb des Teams sorgt.

Außerdem können Teammitglieder sogenannte Researcher sein. Bei Unklarheiten und Unsicherheiten recherchieren und sammeln sie Informationen für das gesamte Team. Dieses Team kann auch Personen beinhalten, die nichts Konkretes zu der Entwicklungsphase beitragen können, sondern den gesamten Prozess lediglich beobachten und Nachfragen bei Unklarheiten stellen. Sie werden als Learner bezeichnet.

Regeln beim Mob Programming

Wie das Mob Programming konkret ausgestaltet wird, ist nirgendwo vorgeschrieben. Vielmehr ist die Ausgestaltung abhängig vom individuellen Entwicklungszweck und der jeweiligen Teamdynamik. Dennoch gibt es Richtlinien, deren Einhaltung zu einem erfolgreichen Mob Programming beiträgt.

So ist es sinnvoll, den Rechner des Drivers an einen gemeinsamen, großen Bildschirm oder einen Beamer anzuschließen, damit alle Teammitglieder den aktuellen Stand des Codes verfolgen können. Auch die räumliche Nähe spielt beim Mob Programming daher eine Rolle: Im Idealfall befindet sich das gesamte Programmierteam in demselben Raum. Nur so kann von direktem, persönlichem Austausch profitiert werden.

Auch die Vergabe der Rollen innerhalb des Teams ist eine wichtige Voraussetzung für ein erfolgreiches Mob Programming. Insbesondere der Timekeeper, der den Rollenwechsel einleitet, ist unabdingbar, um die Vorteile des Mob Programmings auszuschöpfen. Die hohe Fluktuation innerhalb einzelner Rollenbilder sorgt für ständig neuen Input.

Vor- und Nachteile von Mob Programming

Der Ansatz der Mob Programmings bietet eine Reihe von Vorteilen. Der vielfältige Erfahrungsaustausch zwischen den einzelnen Teammitgliedern sorgt für eine kreative und zielführende Software-Erstellung. Außerdem können die Entwicklerinnen und Entwickler untereinander vom Fachwissen der Mitprogrammierenden profitieren und so ihren Horizont erweitern. Vor diesem Hintergrund eignet sich Mob Programming ideal dafür, neue Mitarbeiterinnen und Mitarbeiter schrittweise an Projekte heranzuführen. Die eigens für solche Zwecke existierende Rolle des Learners ist integraler Bestandteil des Software-Entwicklungsmodells.

Auch die Verantwortung, die mit der Entwicklung von Software einhergeht, wird durch Mob Programming aufgeteilt, sodass der Druck, der auf einzelnen Entwickelnden lastet, minimiert wird. Durch die gemeinsame Formulierung des Codes ist dieser weniger fehleranfällig und hochwertiger. Zudem tragen die gemeinsamen Tests dazu bei, die Codequalität zu sichern. Diese wird natürlich auch dadurch verbessert, dass das gesamte Team gleichzeitig an demselben Code arbeitet; Fehler, die erst bei der Integration getrennt voneinander entwickelter Software-Komponenten entstehen, fallen so bereits im Vorhinein weg.

Dennoch bringt auch Mob Programming einige Nachteile mit sich. Am relevantesten dürfte der erhebliche Zeit- und Personalaufwand sein, der für die Umsetzung des agilen Ansatzes erforderlich ist. Auch das Vermitteln zwischen verschiedenen Meinungen zum selben Sachverhalt kann beim Programmieren von konsistentem Code zu Problemen führen. Ein wichtiger Punkt ist auch, dass das Mob Programming im Homeoffice wesentlich schlechter funktioniert und sich damit eher weniger für Remote-Work anbietet. Zwar gibt es Ansätze, die ein Mob Programming auch in Onlinesitzungen vorschlagen; beim traditionellen Mob Programming ist die Möglichkeit des direkten persönlichen Austauschs aber wichtiger Bestandteil.