Pair Programming

Obwohl ich seit 15 Jahren als Softwareentwickler tätig bin, habe ich Pair Programming erst vor ca. drei Jahren bei Mayflower kennengelernt und zum ersten Mal angewandt. Bei all meinen vorhergehenden Tätigkeiten war ich ausschließlich als Code-Einzelkämpfer unterwegs und damit beschäftigt, so schnell und so effizient wie möglich Quellcode zu produzieren.

Ich möchte in diesem Artikel eine grundlegende Einführung in das Thema Pair Programming geben, indem ich die wichtigsten Aspekte zu dieser Arbeitstechnik vorstelle.

1. Was ist Pair Programming?

Beim Pair Programming arbeiten für die Erstellung des Quellcodes jeweils zwei Programmierer an einem Rechner sowie an der gleichen Aufgabe. Die beiden Entwickler nehmen hierbei unterschiedliche Rollen ein, die üblicherweise als Pilot und Navigator bezeichnet werden.

Der Pilot übernimmt die Kontrolle über die Eingabegeräte und formuliert den Quellcode. Der Navigator folgt währenddessen gedanklich, überwacht die Korrektheit des Codes sowie des Lösungsansatzes und denkt parallel über Korrekturen und mögliche Verbesserungen am Programmdesign nach.

Da diese beiden Rollen regelmäßig getauscht werden, gibt es beim Pairing keine feste Aufgabenteilung. Auch zwischen den Mitgliedern innerhalb des Teams werden die Pairing-Partner häufig gewechselt.

2. Welche Ziele werden durch Pair Programming verfolgt?

Obwohl es zunächst nach einem größeren Aufwand und Arbeitseinsatz aussieht, bietet Pair Programming im Vergleich zur Entwicklung durch einen einzelnen Programmierer zahlreiche Vorteile, die ich im Folgenden vorstellen möchte:

2.1. Erhöhung der Code-Qualität

Ein wesentlicher Vorteil von Pair Programming ist die Verbesserung der Softwarequalität. Der zentrale Faktor hierfür ist die permanente Durchführung von Codereviews durch die Kontrollfunktion des Navigators, der mit seinem unmittelbaren Feedback problematische Lösungen vermeiden und auf potentielle Fehler oder Verletzungen der Code-Struktur hinweisen soll.

Sobald einem der beiden Entwicklern mögliche Probleme auffallen, sollten sie generell sofort angesprochen und somit unmittelbar im Zweiergespräch gelöst werden. Das führt zur Produktion von Quellcode der leichter zu warten ist sowie zu kleineren Programmen mit einem vereinfachten Code-Design.

Durch die Einführung von Pair Programming wird eine Kultur der permanenten und konsequenten Durchführung von Code-Reviews zugunsten der Qualitätssicherung etabliert.

2.2. Frühzeitiges Erkennen von Fehlern

Programmierfehler sind umso teurer, je später sie entdeckt werden. Üblicherweise rechnet man beim Pair Programming mit ca. 15 Prozent weniger Fehlern als bei der herkömmlichen Programmierung[1]. In Konsequenz führt das auch zu weniger Fehlerbehebungsaufwänden.

Man geht davon aus, dass Fehler, die erst im Test gefunden werden, circa 10 Mal so teuer in deren Behebung sind, als wenn sie bereits während der Entwicklung gefunden werden[2]. Somit können durch den Einsatz von Pair Programming die Folgekosten der Softwareentwicklung erheblich minimiert werden.

2.3. Wissensverteilung im gesamten Projektteam

Die Verbreitung von Projektwissen über die Entwicklung im Pair Programming ist wohl einer der wichtigsten und interessantesten Aspekte aus Firmensicht.

Durch das regelmäßige Rotieren der Pairing-Partner können alle Teammitglieder verschiedene Teile des Quellcodes und somit des betriebsinternen Know-hows kennenlernen. Hierdurch wird der Bildung von Wissensinseln vorgebeugt, wodurch sich ein geringeres Projektrisiko hinsichtlich der Fluktuation und der Abwesenheit von Mitarbeitern ergibt.

Generell stellt Pair Programming eine hervorragende Möglichkeit dar, um Junior-Entwickler zur Wissensvermittlung punktuell mit Senior-Entwicklern zusammenzubringen. Das gilt sowohl für die Übermittlung allgemeiner Programmierkenntnisse (General Knowledge) als auch für die Weitergabe von projektspezifischem Wissen (Specific Codebase Knowledge).

2.4. Erhöhung der Arbeitsmotivation

Entwickler die Pair Programming praktizieren haben sehr oft mehr Spaß und Freude an der Arbeit, da die Programmierung im Pairing oft spannender und interessanter ist als alleine zu arbeiten. Zum einen können Entwickler beim Pairen zahlreiche Kenntnisse von erfahreneren Kollegen erwerben und zum anderen die Weitergabe des eigenen Wissens an andere Entwickler erlernen und spezialisieren.

2.5. Verbesserung der Kommunikation im Team

Durch das häufige Wechseln der Programmierpartner kann die teaminterne Kommunikation stark verbessert werden. Mitarbeiter lernen kontinuierlich, sich individuell auf andere Mitarbeiter einzustellen und werden somit souveräner in der Zusammenarbeit mit anderen Entwicklern. Gerade für neue Teamkollegen ist Pair Programming eine sehr gute Möglichkeit,  Teammitglieder sowie deren Arbeitsweise schneller kennenzulernen.

Da ein intensives, gemeinsames Arbeiten auch ein hohes Maß an Toleranz und Respekt voraussetzt, lernt man diese Verhaltensweisen schnell anzuwenden und als Teil der Teamkultur zu etablieren. Daher ist es für die Paare auch sinnvoll, sich die nötige Zeit zu geben, um sich aufeinander einzuspielen. Beim Ausprobieren neuer Paarungen bietet es sich daher an, gemeinsam an länger andauernden Tasks zu arbeiten.

2.6. Erhöhung der Produktivität

Pair Programming führt zunächst zu einer geringeren Geschwindigkeit bei der Programmierung. So geht man davon aus, dass eine Aufgabe im Pairing ca. 15 Prozent länger für deren Umsetzung benötigt, als wie wenn sie von einer Einzelperson umgesetzt wird.[3]

Allerdings kann Pair Programming durch die gesteigerte technische und fachliche Qualität des entwickelten Quellcodes genau dort die Produktivität erhöhen, wo während der Softwareentwicklung am meisten Zeit verbracht wird: Beim Finden und Beheben von Fehlern, sowie beim Lesen und Verstehen von Code.

Eine Voraussetzung für hohe Produktivitätssteigerungen mittels Pair Programming ist allerdings, dass die fachliche Kompetenz beider Partner nicht zu sehr voneinander abweicht.

3. Welche Probleme kann Pair Programming mit sich bringen?

Die Eingewöhnung der Teammitglieder sowie die Teamfindung kann beim Pair Programming aufwendig sein, wenn nicht alle Personen miteinander produktiv arbeiten können. Auch die Kombination von Frühaufstehern und Langschläfern kann bei Gleitzeitmodellen oder Vertrauensarbeitszeit zu Konflikten führen. Hilfreich ist daher ein ähnlicher Tagesrhythmus der Teammitglieder. Außerdem ist es sinnvoll, den Paaren die nötige Zeit zu geben, um sich aufeinander einzuspielen.

Pair Programming fordert den Partnern eine Menge Geduld ab und ist besonders mental herausfordernd. Das liegt daran, dass der Pilot nicht jede seiner Ideen direkt ausprobieren kann und gleichzeitig jede seiner Aktionen direkt vom Navigator hinterfragt wird, was anfänglich gar nicht so leicht fällt. Jeder Gedankengang muss dem Gegenüber direkt formuliert werden, damit dieser die einzelnen Programmierschritte gut nachvollziehen kann.

Die Prämisse zum Pairing ist daher, dass beide Partner ein bestimmtes Maß an Kritikfähigkeit und Kompromissbereitschaft mitbringen. Beide müssen offen für andere Lösungswege sein und die Bereitschaft dazu haben, alternative Ideen nicht direkt abzulehnen sowie eigene Standpunkte nicht ausufernd zu diskutieren. Pair Programming bietet sich somit aber auch als eine sehr gute Möglichkeit zur Persönlichkeitsentwicklung an.

Alles rund ums Pair Programming


4. Ausblick

Pair Programming ist grundsätzlich sehr vielseitig einsetzbar: Es unterstützt einen schnellen Wissenstransfer und eine rasche Einarbeitung neuer Projektmitarbeiter. Zudem hilft es, die Entwicklerfähigkeiten von weniger erfahrenen Kollegen zu verbessern und bietet sich zudem beim Erstellen von zentralen, kritischen oder fehleranfälligen Softwarekomponenten an.

Im zweiten und abschließenden Teil meiner Blogserie über Pair Programming möchte ich Euch vorstellen, welche persönlichen Erfahrungen ich mit Pair Programming gemacht habe. Zudem stelle ich Euch die wichtigsten Regeln vor, die man beim Pairing beachten sollte, und gebe Tipps, die sich im konkreten Doing mit dieser Arbeitstechnik bei Mayflower herausgestellt haben.

Für Feedback bin ich sehr gerne unter christopher.stock@mayflower.de erreichbar.

[1] [2] [3] Alistair Cockburn, Laurie Williams: The Costs and Benefits of Pair Programming.

Helloquence

Dieser Eintrag wurde veröffentlicht in Development, NewWork und verschlagwortet mit von Christopher Stock. Permanenter Link zum Eintrag.

Über Christopher Stock

Christopher ist als Developer bei der Mayflower GmbH tätig und entwickelt dort hochwertige Web-Applikationen, unter anderem mit Java, TypeScript und PHP. Zu seinen Hobbys gehören neben der Programmierung auch Designen, Joggen, Skifahren, Schwimmen, Fitness und Verreisen. Trotz mehr als 15 Jahren Berufserfahrung als Softwareentwickler im Web-, Desktop- und Mobile Application-Bereich liebt er die Programmierung noch immer wie bei seinem allerersten GW-BASIC Programm.

Für neue Blogupdates anmelden:


2 Gedanken zu “Pair Programming

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.