Pair Programming: Lessons Learned

10 Lessons Learned für besseres Pair Programming

Avatar von Christopher Stock

Es ist Zeit für Lessons Learned: Nachdem ich in meinem letzten Blogbeitrag eine Einführung in das Thema Pair Programming gegeben habe, möchte ich in diesem Artikel meine persönlichen Erfahrungen mit dieser Arbeitstechnik teilen. Hierzu stelle ich die wichtigsten Regeln vor, die man beim Pairing beachten sollte. Außerdem gebe ich Tipps, die sich im konkreten Doing bei Mayflower als Lessons Learned herausgestellt haben.

Bei Mayflower wurde das Konzept des Pair Programmings bereits 2010 erprobt und hatte sich seitdem in allen Teams etabliert. Vorrangige Treiber dieser Einführung waren zu dieser Zeit die Teamleiter sowie die Kollegen aus der Softwareentwicklung. Da ich bei Mayflower sehr gute Erfahrungen mit dem Pair Programming gemacht habe, möchte ich sie hier weitergeben.

Wann funktioniert Pair Programming am besten?

Generell bietet sich die Durchführung von Pair Programming besonders bei komplizierten oder komplexen Aufgaben an. Durch die Wissensbündelung der Programmierpartner lassen sich auftretende Probleme schneller lösen und komplizierte Sachverhalte in kürzerer Zeit erfassen. Außerdem wird auch das eigene Verständnis eines Sachverhalts durch die stetige Auseinandersetzung mit dem Partner konsequent überprüft und sichergestellt.

Für uns haben sich die folgenden Konstellationen als besonders effektiv herausgestellt:

  • Steht der Wissens- und Know-how-Transfer im Vordergrund, so empfiehlt sich die Kombination eines Juniors mit einem Senior-Programmierer. Hiermit kann der bestmögliche Lerneffekt erzielt werden, wovon insbesondere neue Projektmitglieder profitieren können.
  • Steht die Wissensvermittlung an einen Junior keine Rolle, so sollte generell darauf geachtet werden, dass die fachlichen Kenntnisse beider Partner nicht zu ungleich sind, da sich ansonsten leicht das Gefühl einer Lehrer-Schüler-Beziehung einstellen kann, welches das Entstehen von positiven Dynamiken eher erschwert.
  • Steht die Vermeidung von Fehlern, die Codequalität oder die Umsetzung komplexer Aufgaben im Vordergrund, so sollten möglichst zwei Senior-Entwickler miteinander arbeiten. Hierdurch wird eine hohe Effizienz und eine geringe Fehlerquote gewährleistet, sodass der Code schneller in die Produktion überführt werden kann.

10 Tipps – das sollte beim Pair Programming beachtet werden

Die folgenden Regeln und Tipps basieren auf unseren Lessons Learned und sollen grundlegende Hilfen für das gemeinsame Pairing darstellen. Natürlich können sie individuell auf den Bedarf der entsprechenden Konstellationen innerhalb des Teams angepasst werden:

Klärt das Ausmaß des Pairings!

Vor der Einführung von Pair Programming ist das geplante Ausmaß zu klären. Hierzu gehört die Entscheidung, ob die Entwickler durchgängig, phasenweise oder nur bei Bedarf im Pairing entwickeln sollen. Gerade bei schwierigen oder komplexen Aufgaben können somit alle Teammitglieder vom Pairing profitieren. Einfache und kleinere Aufgaben können auch außerhalb des Pair Programmings erledigt werden.

Beginnt mit einer gut definierten Aufgabe!

Beide Partner sollten stets eine klar definierte Aufgabe und somit ein gemeinsames Ziel vor Augen haben. Dieses Ziel muss beiden Entwicklern bekannt sein, bevor es in der Programmierung umgesetzt wird.

Bearbeitet immer nur eine Aufgabe gleichzeitig!

Der Pilot sollte immer nur an einer einzigen Aufgabe arbeiten und nicht von dieser abkommen. Daher muss der Navigator den Piloten im Falle eines Abschweifens sofort darauf hinzuweisen. Zur Lösung kann der Navigator Tasks die erst später anstehen notieren, um sie zu einem späteren Zeitpunkt wieder vorzubringen. Somit kann der Pilot weiter auf seinem aktuellen Task fokussiert bleiben.

Wechselt Eure Rollen und Pairings oft durch!

Experten empfehlen ein häufiges Abwechseln der Rollen beim Pair Programming, auch innerhalb einer Aufgabe. Somit bleibt das Engagement bei beiden Partnern. Bis sich die Programmierpartner aufeinander eingespielt haben kann ein Timer verwendet werden, sodass beispielsweise alle 15 Minuten die Rollen im Pairing durchgewechselt werden.

Durch das häufige Wechseln der Paarungen wird zudem sichergestellt, dass jedes Teammitglied mit allen anderen Entwicklern im Team und auch mit allen Teilen des Projekts konfrontiert wird.

Seid geduldig und macht Pausen!

Pair Programming fordert beiden Partnern eine Menge Geduld ab. Da der Pilot nicht jede seiner Ideen direkt ausprobieren kann ist es sehr wichtig, auch offen für andere Lösungswege zu sein und eigene Standpunkte nicht ausufernd zu diskutieren. Da diese Arbeitsweise besonders mental herausfordernd ist, empfiehlt sich das Einlegen regelmäßiger Pausen, um die fürs Pairing erforderlichen geistigen Kapazitäten wieder zu regenerieren.

Richtet Euren Arbeitsplatz ein!

Zum effektiven Pairing sollte ein aufgeräumter Arbeitsplatz vorhanden sein, auf dem beide Entwickler eine gute Sicht auf alle Monitore haben. Für den gelegentlichen Ideenaustausch bietet es sich an, ein Whiteboard oder einen Notizblock in Griffweite zu haben, sodass beide Partner Ideen schnell skizzieren oder anfallende Aufgaben für einen späteren Zeitpunkt festhalten können.

Lasst Euch nicht ablenken!

Zahlreiche geöffnete, unbenötigte Programme oder Tabs im Browser oder in der IDE verwässern den Arbeitsfokus sehr schnell und machen es für den Partner schwierig, ihn im Auge zu behalten. Durch das konsequente Schließen nicht benötigter Elemente auf der Arbeitsoberfläche lassen sich Ablenkungen leicht vermeiden. Das macht es für den Partner viel einfacher, den Überblick über die aktiven Komponenten des aktuellen Vorgangs zu behalten.

Aligned Euren Code!

Eine Grundvoraussetzung für ein funktionierendes Pair Programming ist ein gemeinsam vereinbarter Programmierstil sowie ein einheitliches Team-Alignment hinsichtlich des Coding Styles und der Code Conventions. Der Navigator sollte den Partner unmittelbar auf Verletzungen dieser Konventionen und auf mögliche Verbesserungen am Code, beispielsweise die Namensgebungen für alle Programmelemente, hinweisen.

Sprecht über Zeilennummern!

Für ein effizientes Pairing ist es extrem hilfreich, die zu diskutierenden Codestellen über die entsprechenden Zeilennummern zu identifizieren, damit der Partner sofort weiß worauf man sich bezieht. Andernfalls kann es für den Partner sehr mühsam sein, seinem Gegenüber zu folgen.

Das Wichtigste: Kommunikation ist alles!

Es ist wichtig, dem Partner permanent verständlich zu machen, welche Ziele man durch die aktuellen Codeänderungen erreichen und wie man sie umsetzen möchte. Daher ist es beim Pair Programming elementar, dem Partner aufmerksam zuzuhören und sofort Feedback zu geben, damit beide Entwickler jederzeit über ein synchrones Mindset verfügen.

Ein Problem oder eine Aufgabenstellung an seinen Partner zu schildern hilft dabei, die eigenen sowie die Gedankengänge des Partners zu fokussieren.

Hierzu kann die Tastatur gelegentlich auch ad hoc zwischen den Partnern gewechselt werden, da es manchmal einfacher ist, etwas direkt im Code auszudrücken und zu zeigen, als es nur in Worte zu verpacken.

Lessons Learned!

Mit der Einführung der Arbeitstechnik Pair Programming können agile Teams ihre Wissensverteilung intensivieren, ihre Softwarequalität steigern und gleichzeitig eine stärkere Selbstorganisation des Teams fördern.

Auch bei Mayflower hat sich diese Vorgehensweise durch kürzere Einarbeitungszeiten, einen geringeren Wartungsaufwand der Anwendungen sowie bessere Softwarequalität ausgezahlt, was nicht zuletzt auch die Kundenzufriedenheit erhöht.

Ich würde mich freuen, wenn ich mit meinem Beitrag zu den Lessons Learned einen Einblick ins Pair Programming geben konnte oder sogar einen Impuls, diese Technik in der Praxis auszuprobieren.

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

Alles rund ums Pair Programming


Avatar von Christopher Stock

Kommentare

2 Antworten zu „10 Lessons Learned für besseres Pair Programming“

  1. Nach der Einführung ins Pair Programming möchte ich Euch in meinem neuen Blogartikel meine persönlichen Erfahrungen… https://t.co/HarovDsJ0y

  2. Was tun, damit es mit dem Pair Programming klappt? Unser Christopher hat unsere persönlichen Lessons Learned zusamm… https://t.co/Lsjx27RPgF

Schreibe einen Kommentar

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


Für das Handling unseres Newsletters nutzen wir den Dienst HubSpot. Mehr Informationen, insbesondere auch zu Deinem Widerrufsrecht, kannst Du jederzeit unserer Datenschutzerklärung entnehmen.