Agile Softwareentwicklung ist mehr als die Einführung von Rollen und Zeremonien. Es geht um eine neue Art der Zusammenarbeit. Ich möchte mit euch teilen, wie ich ein großer Fan des Mob-Programmings geworden bin.
In einem Kundenprojekt hatten wir das Problem, dass unsere Backend-Lösungen nicht vollständig umgesetzt werden konnten, da im Team nicht die notwendigen Skills vorhanden waren, um den Frontend-Teil zu implementieren. Denn der wurde grundsätzlich von einem anderen Team implementiert. Theoretisch. Denn praktisch versanken unsere Anforderungen in den Weiten des Backlogs des Frontend-Teams und unser Kunde musste lange auf seine neuen Funktionalitäten warten. Mit Mob-Programming haben wir dieses Problem gelöst.
Auf der Suche nach einer Art der Zusammenarbeit von Entwicklungsteams, die eine wirkliche Veränderung zur wasserfallähnlichen Arbeitsweise darstellt, bin ich durch die Vorträge von Woody Zuill auf das Mob-Programming aufmerksam geworden. Das Mob-Programming ist ein kollaborativer Ansatz in der Softwareentwicklung, bei dem das gesamte Team zur gleichen Zeit an einem Computer an derselben Sache arbeitet. Es gibt grundsätzlich zwei Rollen, die aber nur temporär sind. Der sogenannte Driver ist die Person, die vor dem Computer sitzt und den Code eintippt. Alle anderen Teammitglieder sind Navigator:innen, die die Ideen und Lösungswege diskutieren und so dem Driver den Input liefern. Die Teammitglieder wechseln sich in der Rolle des Drivers ab. Das Besondere für mich ist, dass Ideen der Navigator:innen erst durch den Kopf des Drivers und dessen Finger ihren Weg in den Code finden und der Rest des Teams daran teilhaben und lernen kann.
Als ich erstmals davon hörte, klang Mob-Programming für mich wie die Lösung vieler Probleme und schon zu gut, um wahr zu sein. Ich musste es unbedingt ausprobieren, um mich selbst davon zu überzeugen. Hier sind meine 3 Gründe, wieso man mit Mob-Programming schneller entwickeln kann:
Um unser Problem zunächst zu lösen und den fehlenden Teil der Frontend-Lösungen einzubauen, erweiterten wir unser Entwicklungsteam um eine neue Kollegin mit Frontend-Skills. Mit ihrer Hilfe konnten wir bereits nach kurzer Zeit einige Frontend-Lösungen selbst implementieren. Aufgrund dieses Erfolgs konnten wir eine weitere Kollegin mit Frontend-Skills gewinnen. Um unsere beiden neuen Kolleginnen schneller und besser onzuboarden, führten wir unter anderem einen Mob-Programming-Workshop mit dem gesamten Team durch, bei dem wir uns der Herausforderung stellten, eine neue Funktionalität mit Backend- und Frontend-Teil zu implementieren.
Es war unsere erste Erfahrung mit Mob-Programming. Dabei waren Frontend- und Backend-Entwickler:innen, wie auch ScrumMaster (ich) und Product Owner anwesend. Die Skepsis war zu Beginn groß, wie wir als Team gleichzeitig und dabei produktiv an der Funktionalität arbeiten könnten. Die große Überraschung war, dass wir an nur einem Tag die Funktionalität vom Backend-Teil bis zum Frontend-Teil komplett umsetzen konnten, die wir früher inklusive Wartezeiten über Wochen nicht abschließen konnten.
Das Feedback der neuen Kollegin war zudem, dass sie noch nie ein besseres Onboarding bekommen hatte. Sie fühlte sich direkt nach dem Mob-Programming arbeitsfähig, da sie die Bedienung der Tools, die Projektstandards und die Herangehensweise ihrer Kolleg:innen direkt mitbekommen hatte. Auch die weitere Frontend-Kollegin war begeistert davon, wie viel Verständnis sie in diesem Mob-Programming Workshop für die Backend-Entwicklung aufgebaut hat.
Zu einem Mob gehören nicht nur die Softwareentwickler:innen, sondern alle Mitglieder eines agilen Teams, auch Product Owner, ScrumMaster, Designer:innen und Tester:innen. Das Mob-Programming ermöglicht einerseits ganz nebenbei eine gleichzeitige Code-Review, da mehrere paar Augen den Code direkt prüfen und so die Qualität verbessern. Andererseits erlebten bei unserem Versuch alle Anwesenden, dass unser agiles Team alle Skills besitzt, die es für die Produktentwicklung und -umsetzung benötigt.
Der erste Aha-Moment des Teams war, die Implementierung der Funktionalität miteinander zu besprechen und so aus verschiedenen Perspektiven ein gemeinsames Verständnis davon zu entwickeln. Der Wissensaustausch zwischen den verschiedenen Rollen geschah dabei fast von allein. Beim Austausch von Backend- und Frontend-Entwickler:innen war für mich spannend zu beobachten, wie die bestehenden Silos aufgebrochen wurden und ein intensiver Wissensaustausch stattfand. So wird aus dem Mob über längere Zeit ein Team mit T-shaped Skills, bei dem jedes Teammitglied zusätzlich zur eigenen Expertise ein breiteres Wissen zum Produkt und über die eigene Rolle hinaus entwickelt.
Da der Mob für einen Zeitraum von mehreren Stunden zusammensitzt, entfallen Abstimmungsmeetings, denn alle kennen den aktuellen Stand. Dailys, Refinements etc. werden unnötig. Stattdessen wird gemeinsam an einer User Story gearbeitet. Genauso entfallen Wartezeiten auf Antworten, da alle relevanten Wissensträger:innen verfügbar sind und direkt Fragen beantworten oder Entscheidungen treffen. So traf bei unserem Mob-Programming die Product Ownerin eine Entscheidung, die sonst hätte warten müssen und unseren Flow gestört hätte. Als weiterer Nebeneffekt wächst das Team zusammen, ganz ohne Teambuilding-Spiele.
Nach der anfänglichen Skepsis waren die Teammitglieder nach dem ersten Mob-Programming-Workshop überzeugt und erstaunt darüber, dass eine Funktionalität, die sich ohne Mob-Programming über mehrere Tage gezogen hätte, an einem Tag komplett umgesetzt werden konnte.
Nach dem ich das Mob-Programming ausprobiert habe und mich von den Vorteilen überzeugen konnte, bin ich ein großer Fan und ermutige euch, damit zu beginnen und zu experimentieren. Aber Vorsicht: Bei Routineaufgaben kann Mob-Programming den Prozess unnötig verlangsamen. Verwendet es situativ, aber dennoch regelmäßig: für besonders komplexe Aufgabenstellung, bei denen das Know-how mehrerer Teammitglieder benötigt wird, und für das Onboarding neuer Mitarbeiter:innen.
Probiert es einfach aus und überzeugt euch selbst.
Frohes Mob-Programmen!
Titelbild: John Schnobrich, Unsplash