Ist Pair Programming Zeitverschwendung?
Es mag sich paradox anhören, dass zwei Entwickler:innen, die gleichzeitig an derselben Aufgabe arbeiten, effizient vorgehen. Unserer Erfahrung nach bringt die Methode allerdings viele Vorteile. Studien geben uns recht (Cockburn & Williiams, 2001).
Entwickler:innen brauchen mit Pair Programming zwar 15 % mehr Zeit, um ein Feature zu entwickeln. Doch die positiven Aspekte überwiegen und können den anfänglichen Aufwand schnell wieder ausgleichen.
Pair Programming (oder Paarprogrammierung) gehört zu unseren Standard-Methoden, die wir täglich nutzen. Warum und wie du die Methode effizient einsetzen kannst, erfährst du hier.
Was ist Pair Programming?
Pair Programming ist eine Methode in der Softwareentwicklung, bei der zwei Entwickler:innen gemeinsam an einer Aufgabe arbeiten. Dabei nehmen die Entwickler:innen in der klassischen Methode unterschiedliche Rollen ein: Driver und Navigator. Das kannst du dir wie eine Taxifahrt vorstellen. Der Driver hat das Lenkrad in der Hand und fährt das „Taxi“ (aktive Rolle).
Das heißt: Sie oder er steuert die Maus sowie Tastatur und schreibt den Code. Während der Navigator die „Fahrtrichtung“ vorgibt. Der Navigator (beobachtende Rolle) überblickt den Gesamtkontext, überlegt sich Lösungswege, überprüft den Code und gibt dem Driver Feedback. Regelmäßig wechseln die Entwickler:innen die Rollen. Dabei gibt es verschiedene Formen des Pair Programmings (dazu später mehr).
Good to know: Pair Programming gehört zu den 12 Extreme Programming (XP) Praktiken, die von Kent Beck definiert wurden. Der Mitunterzeichner des agilen Manifests entwickelte mit Extreme Programming ein Framework, das sich auf das technische Handwerk des Programmierens spezialisiert.
Welche Vorteile hat das Pair Programming?
Wir konnten in der Praxis viele positive Aspekte beim Pair Programming beobachten:
1. Voneinander lernen
Eine der Gründe, die für das Pair Programming sprechen, ist der Wissenstransfer. Die Methode kannst du perfekt nutzen, um Juniors und Azubis an die Hand zu nehmen oder neue Teammitglieder in ein Projekt einzuarbeiten. Du tauschst dich über Erfahrungen aus, bekommst Anregungen, gibst Feedback zur Entwicklung.
Von Shortcuts bis hin zu bestimmten Arbeitsweisen kannst du dir von den anderen einiges abschauen. So lernst du von den anderen und sie auch von dir.
Zudem sinkt die Wahrscheinlichkeit, dass Wissensinseln entstehen. Es kennen sich immer mindestens zwei Personen mit einem Feature aus. Falls du krank oder im Urlaub bist, weiß dein Pair Bescheid.
2. Bessere Ergebnisse
Du bringst eine andere Sichtweise ein als dein Pair. Gemeinsam könnt ihr das Problem aus unterschiedlichen Blickwinkeln beleuchten. So könnt ihr euren "Tunnelblick" weiten, kreative Ideen entstehen, der Code ist in der Regel durchdachter. Das bestätigt auch die Studie von Cockburn und Williams (2001). Die Anzahl an Code-Lines sinkt mit Pair Programming signifikant, was auf ein cleaneres Design hinweist: Die Code-Qualität steigt.
3. Weniger Fehler
Mit steigender Qualität sinkt auch die Anzahl an Bugs. Beim Pair Programming findet gleichzeitig ein Review statt. Denn der Navigator ist dafür verantwortlich, den Code des Drivers zu prüfen. So fallen Fehler schneller auf, ihr könnt sie frühzeitig beseitigen, noch bevor das Feature in die Tests geht.
Je später Bugs im Prozess entdeckt werden - gerade bei komplexen Aufgaben - umso teurer wird es, sie zu beseitigen. Der Code, den Entwickler:innen mithilfe von Pair Programming entwickeln, weist in der Regel 15 % weniger Bugs auf:
4. Mehr Spaß
Was wir besonders an der Methode schätzen: Es macht einfach mehr Spaß, ein Problem zu zweit zu lösen, als allein vor dem Rechner zu sitzen. Die Motivation ist größer, wenn du noch eine Person neben dir hast, die das gleiche Ziel verfolgt. Ihr könnt euch austauschen, diskutieren und gemeinsam agil entwickeln.
Durch Pair Programming arbeitest du noch intensiver mit deinen Teamkolleg:innen. Das schweißt zusammen, der Zusammenhalt im Team steigt. Unsere Erfahrungen lassen sich ebenfalls von der Studie bestätigen.
Die Ergebnisse zeigen: Pair Programming bringt mehr Freude bei der Arbeit.
Wie ist das Vorgehen beim Pair Programming?
Pair Programming kann vor Ort oder remote stattfinden. Unserer Erfahrung nach ist es angenehmer vor Ort im Pairing zu arbeiten. Ihr braucht keine Kopfhörer, sitzt gemeinsam an einem PC ohne Bildverzögerungen und könnt euch noch freier austauschen. Grundsätzlich ist aber beides gut machbar.
Vor Ort
Klassischerweise sitzen beide Entwickler:innen beim Pair Programming vor einem PC. Eine Person hat die Maus und Tastatur in der Hand und tippt. Wir haben im Büro eine extra Ecke mit entsprechendem Equipment und Trennwand eingerichtet. Damit die Entwickler:innen sich in Ruhe austauschen und alles zur Verfügung haben, was sie brauchen.
Remote
Natürlich können die Entwickler:innen auch remote zusammenarbeiten. Wenn mehr als zwei Teammitglieder am Code schreiben (=Mob Programming) ist ein Online-Meeting praktisch, da alle den Bildschirm gut sehen können. Es müssen nicht drei oder mehr Personen vor einem PC sprichwörtlich ihre Köpfe zusammenstecken.
Es gibt auch spezielle Entwickler-Tools oder Add-Ins, mit denen ihr gemeinsam in der Entwicklungsumgebung arbeiten könnt. Eins davon ist zum Beispiel Code with me für IntelliJ, das wir gerne nutzen. Wenn ihr noch auf weitere Ressourcen oder Tools zugreifen wollt, ist allerdings Teams besser geeignet, da ihr dort den gesamten Bildschirm übertragen könnt.
Zuhören, reflektieren, auf die andere Person eingehen. Das kann auf Dauer anstrengend sein. Daher planen wir alle halbe Stunde eine Pause ein.
Pair Programming: Unsere Herangehensweise
Wenn du mit deinem Team die Pair Programming-Methode nutzen möchtest, ist es sinnvoll, die Tickets als Erstes einzuteilen: In Problemstellungen, die sich für das Pair Programming eignen. Und Anforderungen, die sich schneller allein umsetzen lassen.
Denn nicht alle Aufgabenstellungen sind für die enge Zusammenarbeit geeignet. Einfache Tätigkeiten, die keine große Kreativleistung, sondern eher ein Abarbeiten erfordern, lassen sich effizienter eigenständig bearbeiten. Es gibt unterschiedliche Formen des Pair Programmings. Was jedoch alle gleich haben, ist:
- Die Entwickler:innen sind gleichberechtigt
- Es gibt zwei unterschiedliche Rollen
- Die Rollen werden regelmäßig getauscht (stündlich, täglich oder wöchentlich)
Wie die lise Pair Programming nutzt
- Im Sprint Planning 2 besprechen wir gemeinsam die Tickets. Dabei markieren wir komplexe Aufgaben, die sich für das Pair Programming gut eignen.
- Im nächsten Schritt besprechen, wer welches Ticket bearbeitet. Tickets, die für das Pair Programming infrage kommen, weisen wir zwei Personen zu, die gemeinsam die Aufgabe lösen. Fürs Anlernen empfiehlt es sich, dass eine der Personen bereits erfahrener ist.
- Als Nächstes werden die Rollen bestimmt. Wenn wir nach der klassischen Driver-Navigator-Methode vorgehen, übernimmt eine Person die Funktion des Drivers, die andere des Navigators.
- Bevor es an den Code geht, klären wir, was genau die Aufgaben sind. Wir haben gute Erfahrungen damit gemacht, schriftlich festzulegen, wie wir vorgehen wollen und was wir dafür brauchen, z.B. an Tools.
- Jetzt geht’s ans Programmieren. Der Driver schreibt den Code und hat vor allem die technischen Aspekte im Blick. Der Navigator nimmt hingegen die Sicht der Stakeholder ein. Er überlegt sich, wie die Funktion den größtmöglichen Nutzen erfüllt. Er gibt dem Driver Feedback zum geschriebenen Code und hinterfragt kritisch.
Dabei sind wir im stetigen Austausch, damit wir in die gleiche Richtung gehen. Diskussionen sind natürlich erlaubt, sogar gewünscht. Wenn eine Person einen Einwand hat, diskutieren wir alternative Optionen, schauen uns die Faktoren an und kreieren so aus zwei Vorschlägen eine Lösung.
- Wenn es thematisch passt, machen wir nach 30 Minuten eine Pause und wechseln die Rollen. Da Pair Programming eine hohe Konzentration erfordert, arbeiten wir jeweils bis zu zwei Stunden, maximal einem halben Tag im Pairing.
- Wenn das Feature fertig entwickelt ist, reflektieren wir gemeinsam die Zusammenarbeit im Pairing. Wir halten fest, was gut lief und was wir vielleicht beim nächsten Mal noch besser machen können.
Ping-Pong-Technik
Es gibt auch andere Varianten des Pair Programmings. Eine Alternative, mit der wir ebenso gerne arbeiten, ist die Ping-Pong-Methode. Dabei schreibt abwechselnd eine Person den Test-Code, die andere den Produktiv-Code. Dabei gehen sie nach dem Red-Green-Zyklus des "Test Driven Development" Ansatzes vor.
Eine Person entwickelt zunächst die Tests, die „Rot“ anzeigen, da es noch keinen Produktiv-Code gibt. Die andere Person schreibt den Produktiv-Code bis die Tests erfolgreich durchlaufen und grünes Licht geben. Das Vorgehen wiederholen die Entwickler:innen bis das Feature fertig entwickelt ist und den Anforderungen des Product Owners entspricht.
Unsere 3 Tipps fürs Pair Programming
1. Pausen einplanen: Pair Programming erfordert Konzentration. Du musst dich auf deine:n Kolleg:in einlassen, ihre Ansätze nachvollziehen, diskutieren und reflektieren. Das ist anstrengend. Daher kannst du keine 8 Stunden am Stück im Pair Programming arbeiten.
Wir empfehlen, maximal den halben Tag zu zweit zu arbeiten und ausreichend Phasen einzuplanen, in denen du allein arbeiten kannst. Regelmäßige Pausen sind hilfreich, um den Kopf freizubekommen. Wir machen in der Regel nach ca. 30 Minuten eine kurze Pause.
2. In Kommunikation bleiben: Beide gemeinsam gestalten den Code und sollten daher auch im stetigen Austausch stehen. Ein freundlicher und vertrauensvoller Umgang ist die Basis. Gemeinsam besprechen die Entwickler:innen die Probleme, reflektieren ihre Ansätze, bewerten Faktoren und finden neue Wege. Dabei kann es zu wertvollen Diskussionen kommen, die wiederum zu kreativen Lösungen führen.
Das erfordert Kompromissbereitschaft. Es geht nicht darum, seinen Kopf durchzusetzen, sondern die bestmögliche Lösung zu schaffen.
Konstruktive Kritik ist kein Angriff und sollte respektvoll formuliert sein. Wenn eine erfahrene Person eine:n neue:n Kolleg:in anlernt, so sollte sie das neue Teammitglied in das Vorgehen einbinden, z.B. in dem sie die einzelnen Schritte erklärt. Die oder der neue Entwickler:in kann sich aktiv am Prozess beteiligen, in dem sie Fragen stellt und aufmerksam zuhört.
3. Auch für Fehleranalysen wertvoll: Pair Programming eignet sich nicht nur gut, um neuen Code zu schreiben. Sondern auch, um auf Fehlersuche bei Bugs zu gehen. Vier Augen sehen mehr als zwei. Fehler lassen sich einfacher finden und besser analysieren.
Bei Code-Änderungen denkt immer noch eine weitere Person mit. Es werden in der Regel mehr Faktoren berücksichtigt und die Teamarbeit steigert die Qualität.
TL;DR: Pair Programming ist effizient und macht Spaß
Beim Pair Programming arbeiten zwei Entwickler:innen gemeinsam an einer Aufgabe. Sie schreiben besserem Code, machen weniger Fehler und haben mehr Freude bei der Arbeit.
Dadurch steigen Effizienz und Code-Qualität. Es gibt unterschiedliche Vorgehensweisen.
Wir arbeiten mit der klassischen Driver-Navigator-Methode. Dabei übernimmt der Driver die Steuerung und schreibt den Code. Der Navigator gibt die Richtung vor und berücksichtigt die Perspektive der Anwender:innen.
Auch die Ping-Pong-Variante ist bei uns beliebt, bei der eine Person den Test-Code entwickelt und die anderen den Produktiv-Code. Die Rollen wechseln sich ab.
Kommunikation ist wichtig sowie Respekt, konstruktives Feedback und Kompromissbereitschaft.
Wir empfehlen, regelmäßig Pausen zu machen und maximal den halben Tag für das Pair Programming einzuplanen. Auch für die Einarbeitung oder Fehleranalysen lässt sich die Methode gut einsetzen.
Für uns ist Pair Programming nicht mehr wegzudenken. Wir nutzen es regelmäßig und schätzen vor allem, dass es das Teamgefühl stärkt.
Lust, bei uns im Pair zu entwickeln? Dann schau dir unsere offenen Stellen an und bewirb dich!