Was ist Pair-Programming?

Pair-Programming

Pair Programming hat bereits eine lange Geschichte. Der Informatiker Larry Constantine machte schon 1995 die Beobachtung, dass Programmierer, die in Paaren zusammenarbeiteten, schneller programmierten. Zudem wurden auch weniger Bugs produziert. Basierend auf diesen Beobachtungen wurde 1996 von Fachkollegen die Methode des Extreme Programming (XP) entwickelt. Der entscheidende Aspekt von XP ist Pair Programming.

Vor allem typische Flüchtigkeitsfehler lassen sich mit dieser agilen Programmiermethode reduzieren. Zusätzlich wird eine bessere Verteilung von Wissen im Unternehmen erzielt. Das Thema hat seither weiter an Relevanz gewonnen, vor allem im Kontext sich selbst organisierender Teams integriert in agile Methoden wie Scrum.

Definiton: Pair Programming

Bei der Erstellung des Quellcodes mit Pair Programming arbeiten jeweils zwei Programmierer an einem Rechner an der gleichen Aufgabe. Hierbei nehmen die beiden Entwickler unterschiedliche Rollen ein. Üblicherweise werden sie als Pilot und Navigator bezeichnet. Die Kontrolle über die Eingabegeräte hat dabei der Pilot und er formuliert auch den Quellcode. Währenddessen folgt der Navigator gedanklich und überwacht die Korrektheit des Codes sowie den Lösungsansatz. Parallel denkt er über mögliche Verbesserungen und Korrekturen am Programmdesign nach. Diese beiden Rollen werden regelmäßig getauscht. Eine feste Aufgabenteilung gibt es beim Pairing also nicht. Die Pairing-Partner werden auch innerhalb des Teams häufig gewechselt.

Wie funktioniert Pair Programming?

Pair Programming ist grundsätzlich vielseitig einsetzbar. Es fördert sowohl den schnellen Wissenstransfer als auch die rasche Einarbeitung neuer Projektmitarbeiter. Auch werden die Entwicklerfähigkeiten weniger erfahrener Kollegen verbessert. Diese Technik lohnt sich vor allem bei zentralen, kritischen oder fehleranfälligen Softwarekomponenten – schlicht aufgrund des 2-Augen-Prinzips. Auf den ersten Blick mag diese Vorgehensweise unwirtschaftlich wirken, da zwei Entwickler Code schreiben, den auch ein Entwickler hätte schreiben können. Dagegen stehen aber sich später auswirkende Effekte wie ein geringerer Wartungsaufwand, eine kürzere Einarbeitungszeit und bessere Softwarequalität. Das erhöht auch die Kundenzufriedenheit. Sinnvoll ist Pair Programming bei komplizierten Aufgaben. Die Programmierpartner können durch die Wissensbündelung Probleme schneller lösen. Auch werden komplizierte Sachverhalte in kürzerer Zeit erfasst. Durch die stetige Auseinandersetzung mit dem Partner wird das eigene Sachverständnis für den Sachverhalt konsequent überprüft. Auch bei Tasks mit potenziell hohem Risiko von Bugs helfen zwei Programmierer dabei Fehler zu vermeiden. Von einer hohen Codequalität ist z.B. dann auszugehen, wenn zwei Senior-Entwickler zusammenarbeiten. So geht der Code letztendlich oft schneller in den Produktivbetrieb. Bei Aufgaben die neue Techniken erfordern, ist aus Managementsicht vor allem die Verbreitung betriebsinterner Know-hows interessant. Im Gegensatz dazu geht es den Programmierern vor allem um schnelle und brauchbare Ergebnisse. Zusätzlich motivierend wirkt dabei, wenn einer der Programmierer mit ähnlichen Techniken vertraut ist und daher konstruktive Vorschläge in das Brainstorming einfließen lassen kann.

Vorteile:

  • Reduzierung von Fehlern durch das Vieraugenprinzip
  • Der Code wird verständlicher
  • Das Design der Software wird besser
  • Das Wissen der Partner ergänzt sich
  • Aufgaben werden weniger falsch verstanden
  • Die gemeinsame Verantwortung wird gefördert
  • Höhere Testabdeckung
  • Mehr Spaß bei der Arbeit

Nachteile:

  • Bei gewissen Aufgaben Zeitverschwendung
  • Paarprogrammierung kann anstrengender sein
  • Ausbremsen eines Mitglieds durch zu große Leistungsunterschiede der Entwickler
  • Die Team Zusammensetzung kann problematisch sein
  • Gewöhnungsphase zu Beginn
  • Frustration eines zu schwachen Partners

Voraussetzungen und Umsetzung

Ein paar Dinge sind natürlich zu berücksichtigen, damit Pair Programming auch wirklich funktioniert. Das fängt schon beim Arbeitsplatz an. Am besten sollte dieser mit einem oder besser zwei großen Monitoren ausgestattet sein. Der Arbeitsplatz sollte bevorzugt eine gerade Kante haben oder leicht nach außen gewölbt sein. Unpraktisch sind nach innen gewölbte Arbeitsplätze. Die beiden Entwickler schauen dann nämlich voneinander weg oder kommen sich in die Quere. Da der Besitz der Eingabegeräte einen wesentlichen Einfluss auf die Aktivitäten hat, ist der Einsatz von zwei Tastaturen und Mäusen sinnvoll. Vor Beginn der Aufgabe sollten die Entwickler einen Lösungsansatz besprechen oder diesen sogar skizzieren. So wird das Verständnis für die Aufgabe gefördert und Irrwege lassen sich vermeiden. Tauchen während der Arbeit Unklarheiten auf, soll so lange gefragt werden bis alles geklärt ist. Erst dann wird weiter gemacht. Die Gefahr, dass ein Programmierer sonst den Anschluss verliert und nur noch Zuschauer ist, ist sonst zu groß. Um besser bei der Sache zu bleiben, ist zudem ein Rollenwechsel von Pilot und Navigator hilfreich. Ebenfalls förderlich ist das abwechslungsweise Schreiben von Tests und Implementierung.

Fazit

Mit Pair Programmig lässt sich die Programmier- und Softwarequalität steigern. Es stärkt die Eigenverantwortung der Mitarbeiter, die Wissensverteilung wird intensiviert und die Selbstorganisation im Team wird gestärkt. Pair Programming ist grundsätzlich auch sehr vielseitig einsetzbar. Es fördert die rasche Einarbeitung neuer Projektmitarbeiter und unterstützt zudem einen schnellen Wissenstransfer. Im Weiteren wird die Entwicklerfähigkeit von weniger erfahrenen Kollegen verbessert. Vor allem beim Erstellen von zentralen, kritischen oder fehleranfälligen Softwarekomponenten bietet sich Pair Programming an.

Rückmeldungen