Wenn ein Team an einer schwierigen Funktion festhängt, hilft oft nicht noch mehr Einzelarbeit, sondern mehr gemeinsames Denken. Beim mob programming arbeitet das gesamte Entwicklungsteam gleichzeitig an einer Aufgabe und nutzt dafür einen gemeinsamen Rechner. Ich zeige, wie die Methode funktioniert, welche Rollen und Regeln sich bewähren, wann sie produktiv ist und wo ihre Grenzen liegen.
Gemeinsames Programmieren bündelt Wissen und verkürzt Abstimmungen
- Ein Rechner dient als gemeinsamer Arbeitsplatz für das gesamte Team.
- Driver und Navigator wechseln regelmäßig ihre Rollen.
- Die Methode eignet sich besonders für komplexe Aufgaben, Architekturentscheidungen und Wissenstransfer.
- Kurze Wechselintervalle von etwa 10 bis 20 Minuten halten alle Beteiligten aktiv.
- Der Ansatz funktioniert nur mit klarer Moderation und psychologischer Sicherheit.

Was bei dieser Teamprogrammierung tatsächlich passiert
Bei der Methode arbeitet ein komplettes Team gemeinsam an einem konkreten Arbeitspaket. Alle sitzen vor demselben Bildschirm oder verbinden sich über eine Videokonferenz mit einer gemeinsamen Entwicklungsumgebung. Nur eine Person bedient zu einem Zeitpunkt die Tastatur, während die anderen analysieren, Fragen stellen und die nächsten Schritte diskutieren.
Das klingt zunächst langsamer als mehrere Entwickler an getrennten Rechnern. Der entscheidende Unterschied liegt aber nicht in der Tippgeschwindigkeit, sondern in der Zahl der Schleifen, die entfallen. Design, Implementierung, Review und Fehlersuche finden in einem gemeinsamen Gespräch statt, statt nacheinander über Tickets, Pull Requests und Meetings zu laufen.
Die Aufgabe sollte klein genug sein, um in einer Sitzung sichtbaren Fortschritt zu erzielen. Das kann eine neue API, ein kritischer Fehler, ein Refactoring oder ein Architekturprototyp sein. Für eine komplette Produktentwicklung an einem einzigen Arbeitstag ist der Ansatz selten sinnvoll, für eine schwierige Teilaufgabe dagegen oft sehr effektiv.
Der gemeinsame Rechner ist ein Arbeitsprinzip
Der eine Rechner soll nicht Kontrolle symbolisieren, sondern parallele Nebenarbeit begrenzen. Das Team konzentriert sich auf ein Problem, einen Lösungsweg und ein gemeinsames Ergebnis. Eigene Notebooks können trotzdem für Dokumentation, Recherche oder Tests genutzt werden, solange nicht mehrere konkurrierende Implementierungen entstehen.
Gerade bei neuen oder unübersichtlichen Codebasen zeigt sich der Nutzen schnell. Ein erfahrener Entwickler kennt vielleicht die Architektur, eine Kollegin versteht die fachliche Regel besser und ein dritter Teammitglied entdeckt Risiken in der Bedienung. Die Methode bringt dieses Wissen zusammen, bevor es in getrennten Arbeitsschritten verloren geht.
Die Rollen sorgen für Fokus und Beteiligung
Ohne Rollen wird aus gemeinsamer Entwicklung schnell eine Diskussion, in der eine Person programmiert und alle anderen zuschauen. Die klassische Aufteilung verhindert dieses Muster. Sie macht sichtbar, wer gerade handelt, wer den Weg vorgibt und wer den Prozess schützt.
Driver
Der Driver bedient Tastatur und Entwicklungsumgebung. Er setzt die Anweisungen des Teams um, sollte aber nicht heimlich eine eigene Lösung verfolgen. Seine Aufgabe ist bewusst taktisch: Code schreiben, Tests ausführen und Rückfragen stellen, wenn eine Anweisung unklar bleibt.
Navigator
Der Navigator formuliert den nächsten sinnvollen Schritt. Er erklärt nicht nur, welche Zeile zu schreiben ist, sondern beschreibt möglichst die Idee dahinter. Dadurch bleibt die Diskussion auf der richtigen Abstraktionsebene und der Driver wird nicht zum bloßen Schreibwerkzeug.
Die übrigen Teammitglieder
Die anderen Beteiligten bilden den erweiterten Denkraum. Sie prüfen Annahmen, bringen Fachwissen ein und achten auf mögliche Nebenwirkungen. Wichtig ist, dass sie nicht jede Zeile kommentieren. Gute Navigation arbeitet mit wenigen, verständlichen Schritten, nicht mit einem dauernden Strom von Zurufen.
Facilitator
Bei größeren Gruppen lohnt sich eine moderierende Rolle. Der Facilitator achtet auf Redeanteile, Zeit, Pausen und das Einhalten der Regeln. Besonders in hierarchischen Teams ist diese Funktion hilfreich, weil sie verhindert, dass die lauteste oder dienstälteste Person automatisch jede Entscheidung übernimmt.
Die Rollen rotieren idealerweise nach einem festen Zeitintervall. Ich halte 10 bis 20 Minuten für einen guten Startpunkt. Kürzere Wechsel können den Arbeitsfluss stören, längere Intervalle führen dagegen leicht dazu, dass einzelne Personen innerlich aussteigen.
So läuft eine produktive Session ab
Eine erfolgreiche Sitzung beginnt nicht mit dem Öffnen der IDE, sondern mit einer klaren Begrenzung. Das Team sollte wissen, welches Ergebnis am Ende erwartet wird und woran es erkennt, dass die Aufgabe erledigt ist. Ein kurzer Ziel-Satz wie „Wir reproduzieren den Fehler, schreiben einen Test und beheben die Ursache“ ist meist besser als ein allgemeines Vorhaben.
- Ziel festlegen: Eine konkrete Aufgabe auswählen und das erwartete Ergebnis formulieren.
- Arbeitsumgebung vorbereiten: Repository, Tests, Zugangsdaten und benötigte Tools öffnen.
- Rollen verteilen: Driver, Navigator und gegebenenfalls Facilitator benennen.
- In kleinen Schritten arbeiten: Erst den nächsten Test oder die nächste Codeänderung beschreiben, dann umsetzen.
- Rollen wechseln: Nach dem vereinbarten Intervall übernimmt die nächste Person.
- Ergebnis prüfen: Tests, Codequalität und offene Entscheidungen gemeinsam bewerten.
Am Arbeitsplatz helfen ein großer Monitor, eine gute Tastatur und eine sichtbare Zeitschaltuhr. In einem verteilten Team braucht es zusätzlich Screen-Sharing, stabile Audioverbindungen und eine Vereinbarung darüber, wer bei technischen Problemen weiterarbeiten darf. Schlechte Akustik und unklare Bildschirmfreigaben machen den Ansatz unnötig anstrengend.
Ich empfehle, zunächst mit einer Sitzung von 60 bis 90 Minuten zu beginnen. Danach sollte das Team kurz festhalten, was geholfen hat, wer zu wenig beteiligt war und ob die Aufgabe für diese Arbeitsform geeignet war. Eine Retrospektive von zehn Minuten reicht meistens aus, wenn sie ehrlich geführt wird.
Ein Beispiel aus der Webentwicklung
Angenommen, ein Team muss eine fehlerhafte Zahlungsbestätigung in einer Webanwendung korrigieren. Eine Person kennt das Frontend, eine zweite den Backend-Service, eine dritte die Testumgebung und eine vierte die fachlichen Regeln. Gemeinsam reproduzieren sie den Fehler, formulieren einen automatisierten Test und ändern die betroffenen Komponenten.
Der Vorteil liegt hier nicht darin, dass vier Personen schneller Code tippen. Sie vermeiden vielmehr, dass Frontend und Backend unterschiedliche Annahmen über den Zahlungsstatus treffen. Das Ergebnis ist häufig kleiner, als es eine isolierte Umsetzung geworden wäre, und zugleich besser begründet.
Wann der Ansatz besonders viel bringt
Die Methode spielt ihre Stärke aus, wenn die Aufgabe mehrere Wissensbereiche berührt oder die Kosten einer falschen Entscheidung hoch sind. Für einfache Änderungen an einer bekannten Stelle wäre sie dagegen oft überdimensioniert. Nicht jede Aufgabe braucht die Aufmerksamkeit des ganzen Teams.
- Architekturentscheidungen: Mehrere Perspektiven werden sichtbar, bevor sich das Team auf eine Struktur festlegt.
- Komplexe Fehler: Logs, Fachregeln und Code lassen sich gleichzeitig betrachten.
- Wissenstransfer: Neue Teammitglieder lernen nicht nur das Ergebnis, sondern auch die Entscheidungswege kennen.
- Sicherheitskritische Änderungen: Risiken werden früher erkannt und nicht erst im späteren Review.
- Unbekannte Technologien: Das vorhandene Wissen verteilt sich schneller auf mehrere Personen.
- Technische Schulden: Ein gemeinsames Refactoring kann verhindern, dass jeder Teilbereich anders behandelt wird.
Ein weiterer Vorteil ist die geringere Abhängigkeit von einzelnen Spezialisten. Wenn nur eine Person weiß, wie ein bestimmter Dienst funktioniert, entsteht ein Engpass. Gemeinsames Arbeiten verteilt dieses Wissen praktisch und schafft mehr Redundanz im Team, ohne ein zusätzliches Schulungsprojekt aufzusetzen.
Allerdings kann die Methode auch teuer werden. Vier Entwickler, die zwei Stunden gemeinsam arbeiten, verursachen vier Personenstunden. Das lohnt sich nur, wenn die bessere Entscheidung, der schnellere Wissenstransfer oder die vermiedene Nacharbeit diesen Aufwand rechtfertigt.
Die wichtigsten Grenzen und typischen Fehler
Das größte Risiko ist Dominanz. Wenn eine erfahrene Person jede Lösung vorgibt, bleibt der Rest zwar körperlich im Raum, arbeitet aber nicht wirklich mit. Ich würde eine Session in diesem Fall unterbrechen und die Moderation stärken, statt das Format vorschnell als ungeeignet abzuschreiben.
Zu große Aufgaben
Ein Vorhaben wie „den Checkout verbessern“ ist zu ungenau. Besser ist ein klarer Ausschnitt, etwa die Validierung einer bestimmten Lieferadresse. Kleine Arbeitspakete erzeugen sichtbares Feedback und verhindern, dass die Gruppe stundenlang über Möglichkeiten spricht.
Zu viele Personen
Mit drei bis sechs Beteiligten bleibt die Kommunikation meist überschaubar. Größere Gruppen können funktionieren, brauchen aber eine strikte Moderation und kurze Beiträge. Wenn mehrere Personen gleichzeitig sprechen oder nur zwei Teammitglieder aktiv sind, sinkt der Nutzen deutlich.
Fehlende psychologische Sicherheit
Niemand sollte Angst haben, eine naive Frage zu stellen oder einen Fehler zu machen. Gerade der Driver muss unfertigen Code schreiben dürfen, ohne vor jeder Eingabe bewertet zu werden. Ein respektvoller Umgang ist keine weiche Ergänzung, sondern eine technische Voraussetzung für gute Entscheidungen.
Lesen Sie auch: E2E-Tests richtig einsetzen - Abläufe, Tools und CI/CD
Meetings statt Arbeit
Manche Teams diskutieren im Kreis und kommen kaum zur Umsetzung. Eine einfache Regel hilft: Erst die kleinste überprüfbare Änderung beschreiben, dann testen. Wenn eine Diskussion länger als zehn Minuten keine klare Richtung ergibt, sollte das Team die Annahmen notieren, eine Rechercheaufgabe definieren oder die Entscheidung bewusst vertagen.
Wie sich Teamprogrammierung von anderen Arbeitsformen unterscheidet
| Arbeitsform | Zusammenarbeit | Stärke | Geeignet für |
|---|---|---|---|
| Einzelarbeit | Eine Person arbeitet selbstständig | Hohe Konzentration bei klaren Aufgaben | Routineänderungen und kleine Features |
| Pair Programming | Zwei Personen an einem Rechner | Direktes Review und schneller Austausch | Komplexe Implementierungen mit begrenztem Abstimmungsbedarf |
| Teamprogrammierung | Das gesamte Team arbeitet an einem Arbeitspaket | Breites Wissen und gemeinsame Entscheidungen | Architektur, Fehleranalyse und Wissenstransfer |
| Parallele Umsetzung | Mehrere Personen arbeiten getrennt | Hohe lokale Geschwindigkeit | Gut voneinander trennbare Aufgaben |
Pair Programming ist oft der bessere Einstieg, wenn ein Team gemeinsame Entwicklung erst kennenlernen muss. Die Teamvariante lohnt sich vor allem dort, wo eine isolierte Lösung später viele Abstimmungen oder Korrekturen auslösen würde. Die Frage ist nicht, welche Methode moderner wirkt, sondern wo gemeinsames Denken den größten wirtschaftlichen Nutzen erzeugt.
Auch KI-Werkzeuge lassen sich in den Ablauf integrieren. Sie können Testideen liefern, Code erklären oder alternative Implementierungen skizzieren. Die Verantwortung für Architektur, Sicherheit und fachliche Richtigkeit bleibt jedoch beim Team. Ein KI-Vorschlag ersetzt keine gemeinsame Entscheidung, sondern erweitert höchstens den Diskussionsraum.
So gelingt der Einstieg ohne unnötigen Widerstand
Ich würde nicht sofort den gesamten Entwicklungsprozess umstellen. Wählt stattdessen eine Aufgabe mit mittlerer Komplexität und begrenztem Risiko. Ein Bug in einem gut getesteten Modul eignet sich besser als ein ungeklärtes Großprojekt mit engem Liefertermin.
- Startet mit 3 bis 5 Personen und einer Session von 60 bis 90 Minuten.
- Legt ein Wechselintervall von 10 bis 20 Minuten fest.
- Definiert vor Beginn ein sichtbares Ziel und eine Definition of Done.
- Lasst jede Person mindestens einmal Driver und Navigator sein.
- Schreibt offene Fragen und Entscheidungen während der Arbeit mit.
- Bewertet danach nicht nur den Output, sondern auch Beteiligung und Energie.
Ein sinnvoller Testzeitraum umfasst zwei bis vier Sitzungen an unterschiedlichen Aufgabentypen. Messt dabei keine scheinbar exakte Produktivitätszahl, sondern beobachtet Durchlaufzeit, Nacharbeit, Defekte und Wissensverteilung. Nach meiner Erfahrung liefern diese Signale ein ehrlicheres Bild als die Zahl der geschriebenen Codezeilen.
Wenn ein Team nach mehreren Versuchen keinen Nutzen erkennt, sollte es die Methode nicht erzwingen. Vielleicht sind die Aufgaben zu simpel, die Gruppe zu groß oder die Entscheidungswege bereits gut genug. Gute Softwareentwicklung besteht auch darin, eine passende Arbeitsform wieder loszulassen.
Der beste erste Versuch ist kleiner als gedacht
Gemeinsames Programmieren ist kein Dauerzustand und kein Wettbewerb um möglichst viele Personen vor einem Bildschirm. Es ist ein gezieltes Werkzeug für Situationen, in denen gemeinsames Verständnis wertvoller ist als individuelle Tippgeschwindigkeit.
Wer mit einer klar begrenzten Aufgabe, rotierenden Rollen und einer respektvollen Gesprächskultur startet, erkennt schnell, ob der Ansatz zum eigenen Team passt. Für komplexe Webprojekte, Architekturfragen und kritische Fehler kann er eine bemerkenswert direkte Verbindung zwischen Fachwissen, Code und Entscheidung schaffen.