Mob Programming

Mob Programming ist eine relativ neue Entwicklungsmethode von Software, die auf eine spezielle Art von Teamarbeit setzt. Zwischen fünf und zehn Entwickler arbeiten zu derselben Zeit, im gleichen Raum an einer Aufgabe. Sie benutzen darüber hinaus ein einziges Terminal, dessen Benutzerschnittstelle mithilfe eines Projektors großflächig an die Wand projiziert werden kann. In der Regel wechseln sich die Teammitglieder etwa alle 30 Minuten ab, sie kommunizieren aber ständig, leisten konzeptionelle Vorarbeit und bringen neue Ideen in die kollaborative Entwicklung mit ein. Mob Programming ist angelehnt an agile Methoden und speziell an das Pair Programming, das die Qualität von Software durch das Vier-Augen-Prinzip verbessern soll. Dieses Prinzip wird durch den Mob ausgedehnt auf eine noch umfassendere Kontrolle von Funktionalität und Qualität der Anwendung.

Der Entwickler Woody Zuill gilt seit seinem Vortrag "Mob Programming" bei der JavaOne 2014 in San Francisco als Begründer dieses Entwicklungsansatzes, obwohl es den Begriff schon länger gibt. 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.” Mob Programming kann die Produktivität bei bestimmten Projekten steigern, indem mehrere Entwickler kollektiv an einem vorab definierten Problem arbeiten. Mitunter besteht das Problem in der Herstellung eines lauffähigen Systemkerns, der die grundsätzlichen Funktionen der Software beinhaltet.

Allgemeine Informationen zum Thema

Entwicklungsprojekte im Softwarebereich zeichnen sich oft durch Komplexität aus: Die Anforderungen des Kunden sind hoch und es ist lediglich eine grobe User Story verfügbar. Entwicklungsschritte müssen unterteilt werden und bei der späteren Integration stellt sich dieser Ansatz als problematisch heraus. Es gibt häufig Fehler und Bugs, die das Gesamtsystem beeinflussen, nicht aber einzelne Komponenten oder Branches. Üblicherweise werden Softwareanwendungen in kleinere Tasks oder Komponenten heruntergebrochen und von Teams oder einzelnen Entwicklern bearbeitet, bevor sie auf das Produktivsystem übertragen werden.

Jeder Fehler bei der Integration führt jedoch zu steigenden Kosten und Mehraufwand. Teilweise sind Verwerfungen von Teammitgliedern und Vorgesetzten die Folge. Während beim Scrum-Ansatz oder beim Swarming Entscheidung im Team getroffen werden, erfolgt die eigentliche Arbeit bei den meisten klassischen Entwicklungsansätzen getrennt in Silos. Die Hauptprobleme vieler Software-Projekte sind laut Woody Zuill:

  • fehlende Kommunikation
  • personelle wie strukturelle Veränderungen und
  • Hierarchien, die der Entscheidungsfindung im Weg stehen.

Funktionsweise des Mob Programming

Das Mob Programming soll diese Probleme von vorneherein vermeiden: Das Team arbeitet an der Umsetzung der ganzen Anwendung kollaborativ. Das bedeutet, dass nicht die Komponenten des Systems unterteilt werden, sondern die gesamte Aufgabe der Erstellung wird auf das Team zeitlich verteilt.[1] Spezialisten für Interfaces, Datenbanken, UX-Designer, Product Owner oder Business Analysten widmen sich also gemeinsam der Softwareentwicklung. Die konkrete Arbeit erfolgt nach dem Schema des Pair Programmings: Es gibt einen Driver und einen Navigator, wobei der passive Teil des Mobs der Navigator ist und der Driver sich auf das Kodieren und Tippen konzentrieren kann.[2] User Stories und Anforderungskataloge werden vom Team gemeinsam erstellt. Schritte wie das Gestalten des Designs oder das Testen von Funktionen werden ebenso wie das spätere Deployment der Software im Team erarbeitet. Optional können diese Entwicklungsphasen auf die verschiedenen Mob Sessions verteilt werden.

Bei jeder Session nutzt der Mob Synergien, die durch die Teamarbeit in den gleichen Räumlichkeiten entstehen. Junge Entwickler, Informatiker und Designer werden in die Entwicklung schnell eingeführt und lernen von ihren erfahrenen Kollegen. Guidelines, Prozesse und Konventionen des Teams können so schnell erlernt werden.[3] Die Entwicklung ist zudem interdisziplinär: Die Programmierung von Datenbanken, Funktionen oder Benutzerschnittstellen ist zum Beispiel in keiner Weise getrennt vom Projektmanagement oder von Business Entscheidungen. Es soll weder räumliche noch kommunikative Barrieren geben. Innerhalb einer Mob Session oder eines Meetings bleibt das Team zusammen und übernimmt komplett die Verantwortung. Das führt zu einer Entlastung einzelner Mitarbeiter, die bei anderen Entwicklungsmethoden einem Lieferzwang ausgesetzt sind. Dieser Druck wird kollektiv vom Team übernommen.

Das Mob Programming zeichnet sich nicht nur durch das gemeinsame Erstellen von Quellcode aus, sondern auch durch die Aspekte Entscheidungsfindung, Kommunikation und Verantwortung – wie es aus anderen Lean Methoden und agilen Ansätzen bekannt ist. Werte wie gegenseitiger Respekt und ein freundlicher Umgang wurden aus dem Extreme Programming auf den Mob übertragen. Die Teamarbeit ist beim Mob Programming demokratisch: Jeder Entwickler hat ein Mitspracherecht und soll sich aktiv einbringen. Hierarchien spielen prinzipiell keine Rolle im Entwicklungsprozess, da sie den Grundideen des Mob Programming widersprechen. Es geht um die Sache und beispielsweise um die Frage, wie ein lauffähiger Systemkern schnell und effektiv erstellt werden kann.[4] Zwar wird dabei ein Terminal kontinuierlich verwendet, aber gerade dadurch ist der Code weniger anfällig für Fehler, Bugs und Konflikte bei der Integration. Nebenbei kann durch die Teamarbeit eine positivere Arbeitsatmosphäre erreicht werden.

Bedeutung für die Programmierung

Mob Programming soll laut Woody Zuill Blockaden verhindern, die bei anderen Entwicklungsansätzen unvermeidbar sind. Kommunikationsbarrieren, personelle Veränderungen sowie Probleme bei der Entscheidungsfindung würden der Produktivität bei vielen Projekten im Wege stehen. Zuill experimentierte deshalb vor einigen Jahren mit unterschiedlichen Arbeitsmethoden und fand heraus, dass es am besten ist, wenn die Teammitglieder entscheiden, wie sie arbeiten möchten oder es währenddessen herausfinden. Mit einem Team von sechs Entwicklern probierte er verschiedene Code Techniken aus. Unter anderem sogenannte Code Kata, die von David Thomas in „The Pragmatic Programmer“ das erste Mal erwähnt wurden: Die Entwickler setzen sich abwechselnd für kleine Intervalle von bis zu 30 Minuten an das Terminal und schreiben Codeteile.

Zunächst waren es Übungsmethoden, später wurde das Konzept erfolgreich auf reale Projekte angewendet. Mittlerweile ist das Thema des Mob Programmings viel diskutiert worden. Zuill betrachtet es jedoch als eine einfache Technik, die die Produktivität bei bestimmten Projekten steigern kann.[5] Geeignet erscheint das Mob Programming vor allem für das Deployment von neuer Software und der Gewährleistung von Cross-Funktionalitäten bei größeren Projekten.[6] Bug Fixes oder Patches zu erstellen ist eher Sache von anderen Entwicklungsansätzen.

Einzelnachweise

  1. Get a good start with mob programming mobprogramming.org. Abgerufen am 14.03.2016
  2. Getting Started with Mob Programming agileconnection.com. Abgerufen am 14.03.2016
  3. Mob Programming entwicklertag.de. Abgerufen am 14.03.2016
  4. Introducing Mob programming: The best team technique you've (probably) never heard of itworld.com. Abgerufen am 14.03.2016
  5. Getting Started with Mob Programming agileconnection.com. Abgerufen am 14.03.2016
  6. Mob programming – full team, full throttle codebetter.com. Abgerufen am 14.03.2016

Weblinks