digatus Pair Programming
15.07.2021 | Jan Uhrig | 7 min Lesezeit
merken
Stern Icon
Stern Icon
Briefumschlag Iconper E-Mail erinnern X Icon
Ladekreisel
Bitte geben Sie eine E-Mail Adresse ein!
Das Datum darf nicht in der Vergangenheit liegen!
Stern Icondiesen Artikel merken
Stern Icondieser Artikel ist auf der Merkliste

Mit Pair Programming die Zusammenarbeit und Codequalität verbessern

-

Pair Programming bedeutet im Wesentlichen, dass zwei Personen in der Softwareentwicklung gemeinsam Code auf einem Computer schreiben. Es ist eine sehr kollaborative Arbeitsweise, die viel Kommunikation erfordert. Denn während zwei Entwickler gemeinsam an einer Aufgabe arbeiten, schreiben sie nicht nur Code, sondern planen und besprechen ihre Arbeit. Sie klären unterwegs Ideen, diskutieren Ansätze und kommen so zu besseren Lösungen.

Welche Arten von Pair Programming gibt es?

-

Driver and Navigator

Bei dieser Variante der Paarprogrammierung übernehmen die beiden Entwickler die Rollen des Drivers und des Navigators.
Wie der Name bereits vermuten lässt, ist der Driver die Person am Steuer, in unserem Fall also an der Tastatur. Er konzentriert sich vorrangig darauf das kleine, unmittelbare Ziel zu erreichen und ignoriert im ersten Moment größere Probleme. Ein Fahrer sollte während seiner Arbeit kontinuierlich kommunizieren was er tut und warum er es tut, um größtmögliche Transparenz zu schaffen und den Navigator immer aktiv einzubinden.
Während der Driver tippt, befindet sich der Navigator in der Beobachterposition. Er überprüft fortlaufend den Code, macht Verbesserungsvorschläge und teilt seine Gedanken dazu. Aufgabe des Navigators ist es, das große Ganze im Blick zu behalten und darauf hinzuarbeiten. Er hat ein Augenmerk auf die größeren Problemstellungen und Fehler, macht sich Notizen zu möglichen Hindernissen und überlegt sich die nächsten Schritte.
Die Idee dieser Rollenaufteilung besteht darin, zwei verschiedene Perspektiven auf den Code zu erhalten. Die Denkweise des Drivers soll eher taktisch geprägt sein, indem er vor allem über die Details der vorhandenen Codezeilen nachdenkt. Der Navigator kann und soll in seiner beobachtenden Rolle strategischer denken. Er hat das große Ganze im Blick und muss das Pair Programming dementsprechend lenken.

Ping Pong

Diese Technik wird hauptsächlich in der agilen Entwicklungsmethode Test-Driven Development (kurz TDD) verwendet. Im Gegensatz zur Variante „Driver and Navigator“ haben hierbei beide Entwickler eine aktive Rolle in der Programmierung. Um den Code auf ein bestimmtes Verhalten hin zu überprüfen, schreiben und implementieren die Entwickler abwechselnd Tests:

  • “Ping”: Entwickler A schreibt einen fehlschlagenden Test
  • “Pong”: Entwickler B schreibt die Implementierung so, dass sie den Test besteht
  • Entwickler B startet dann den nächsten “Ping”, also den nächsten fehlschlagenden Test

Auf jeden “Pong” kann auch ein gemeinsames Refactoring des Codes folgen, bevor die beiden mit dem nächsten Test fortfahren. Auf diese Weise folgen die Entwickler dem Ansatz “Rot – Grün – Refactor”: Sie schreiben einen nicht bestandenen Test (rot), sie lassen ihn mit den minimal notwendigen Mitteln bestehen (grün) und optimieren ihn dann entsprechend. Dieses Hin und Her zwischen Testen und Coden sowie den beiden Entwicklern fördert eine testorientierte Softwareentwicklung und erhöht die Codequalität.

Strong-Style Pairing

Diese Art der Paarprogrammierung dient vor allem dem Austausch von Wissen und Erfahrung. Als Navigator agiert hierbei in der Regel die Person, die über viel Erfahrung mit dem Setup oder der zugrunde liegenden Aufgabe verfügt. In dieser Konstellation kann der Driver unerfahrener oder sogar ein Anfänger sein (mit der Sprache, dem Tool, der Codebasis, etc.). Der erfahrene Entwickler gibt seine Expertise weiter und führt den Anfänger durch das gemeinsame Projekt.
Ein wichtiger Aspekt dabei ist, dass der Driver dem Navigator vertraut, jedoch bei Unklarheiten immer nachhakt, warum jene Aufgabe so gelöst werden soll. Somit kann der Navigator gründlich erklären, welche Intention er mit seinem Lösungsansatz verfolgt und eventuell dem Driver eine bessere Herangehensweise für ähnliche Probleme mitgeben.

Welche Technologie nutzen wir für die Paarprogrammierung?

-

Mit Kollaborationssoftware wie Microsoft Teams ist es heutzutage ein Leichtes, agile Methoden, wie z.B. Pair Programming anzuwenden. Entwickler können an jedem Ort der Welt arbeiten. Es braucht lediglich einen Anruf und die Bildschirmfreigabe des Drivers um loszulegen. Auch wenn der Navigator vielleicht mal eingreifen muss, um seine Lösung visuell darzustellen oder einfach um die Rollen zu tauschen, eine Anfrage für die Freigabe der Maus und Tastatur ist via Microsoft Teams mit nur ein paar Klicks erledigt.

Analog vs. Digital

-

Jeder holt sich noch einen Kaffee, einer rollt mit dem Stuhl zum anderen und der macht etwas Platz für ihn. Bildschirm, Tastatur und Maus werden kollegial geteilt. So sah Pair Programming bisher aus.
Die neue Situation versetzte uns ins Home-Office. Nun war das digitale Pair Programming geboren: Jeder holt sich einen Kaffee und einer teilt seinen Bildschirm. Tastatur und Maus behält jeder bei sich.
Die Unterschiede sind also gar nicht so groß. Das Wesentliche, also das gemeinsame Programmieren, funktioniert unverändert gut. Per Zugriffsfreigabe kann auch der Zuschauer mitprogrammieren. Wird das Wissen eines Dritten benötigt, wird dieser kurzerhand mit ins Meeting eingeladen.
Vorteile der digitalen Variante sind das Arbeiten an der eigenen, gewohnten Hardware, die bessere Sicht auf den Bildschirm und jeder sitzt bequem an seinem Platz. Auch die Ortsgebundenheit entfällt. Der analoge Austausch ist dagegen persönlicher und technische Kommunikationsprobleme bleiben aus.
Beide Formen des Pair Programmings haben also ihre Berechtigung und die digitale Zusammenarbeit funktioniert besser als vielleicht erwartet.

Codequalität und Lerneffekt

-

Professionelle Softwareentwicklung erfordert das Vier-Augen-Prinzip. Programmierer A entwickelt ein neues Feature, Programmierer B prüft dieses nochmals im Code Review. Eventuelle Fehler oder ungünstiger Code werden nachträglich korrigiert und erst dann erfolgt die Freigabe und das Mergen ins eigentliche Projekt.
Das Pair Programming verknüpft beide Prozesse und ermöglicht schon während der Entwicklung eine bessere Codequalität. Auch die nachträgliche Korrektur entfällt somit.
Bei den nahezu unendlich erscheinenden Möglichkeiten heutiger Technologien und Innovationen, gehört es zum Alltag eines Entwicklers kontinuierlich dazuzulernen. Pair Programming ermöglicht es sowohl Wissen weiterzugeben als auch neue Programmiersprachen und Konventionen zu erlernen. Im Gegensatz zum Code Review gibt es Feedback nicht nur auf das fertige Produkt, sondern man hat den Tutor bereits beim Coden mit am Tisch. Tutor und Student, Student und Tutor, jeder lernt von jedem.

Mögliche Nachteile von Pair Programming

-

Höhere Kosten

Wenn zwei Personen an einer einzigen Task arbeiten, kann das wie eine Verschwendung wertvoller Ressourcen erscheinen. Tatsächlich ist es wahr, dass Pair Programming ein Projekt nicht in der Hälfte der Zeit abschließen kann.

Dennoch wird der größere Overhead, den die Paarprogrammierung verursacht, typischerweise durch den höherwertigen Code und ein effizienteres, effektiveres Endergebnis ausgeglichen. Die Kosten sind im Voraus höher, können sich jedoch über die gesamte Projektlaufzeit amortisieren, da weniger Zeit mit der Pflege der Codebasis verbracht werden muss.

Nachhaltigkeit

Pair Programming ist normalerweise nicht nachhaltig genug, um die ganze Zeit ausgeübt zu werden. Mit dieser Herangehensweise kleinere Probleme anzugehen, lohnt sich meist nicht und manche Entwickler sind auch eher Einzelgänger, die während dem Programmieren ihre Ruhe brauchen. Daher sollte man sich gezielte Aufgaben heraussuchen, bei denen der Einsatz von Pair Programming sinnvoll erscheint.

Die Vorteile von Pair Programming

-

Verbesserung der Zusammenarbeit und Kommunikation

Im Allgemeinen hat jeder Entwickler seine eigene Herangehensweise, um ein Problem zu lösen. In der Paarprogrammierung muss man mit seinem Partner kommunizieren und sich mit ihm abstimmen, wie das vorliegende Problem angemessen angegangen wird. Diese Interaktion eröffnet meist mehr Alternativen, da eine Einzelperson in der Regel dazu neigt, der ersten Lösung zu folgen, die ihr in den Sinn kommt. Während der intensiven Zusammenarbeit im Pair Programming wird die beste Lösung evaluiert und eventuell auftretende Probleme können bereits im Voraus berücksichtigt oder gar geklärt werden.

Kontinuierliche Code Review

Tatsächlich ist Pair Programming eine Art kontinuierliche Codeüberprüfung und Problemidentifikation, die nahezu im Minutentakt erfolgt. Einige Fehler wie zum Beispiel Syntaxfehler oder semantische Fehler sowie unüberlegte Lösungen und Clean-Code-Regeln können während dieses Prozesses effektiver angesprochen und behoben werden als in einer Situation, in der ein einzelner Entwickler diesen Herausforderungen ohne jegliche Unterstützung begegnen möchte.

Verbesserung der Problemlösungsfähigkeiten

Wenn man als Entwickler seinem Pair Programming Partner ein Problem erklärt, wird er grundsätzlich einige Fragen zu dem Problem stellen und mit hoher Wahrscheinlichkeit die Beweggründe hinterfragen. Durch die genaue Beschreibung und Begründung des eigenen Lösungsansatzes erhält nicht nur der Partner ein tieferes Verständnis für das Problem und seine Lösung, sondern auch man selbst. Dadurch kommt es häufig vor, dass während der Erläuterung unbewusst Probleme und mögliche Lösungswege aufgedeckt werden.

Fazit

-

Pair Programming kann zwar nicht auf Dauer für alle Probleme in der Softwareentwicklung eingesetzt werden und bindet mehr Ressourcen als sonst üblich, dafür amortisiert es sich aber meist im Projektverlauf. Findet man einen sinnvollen Anwendungsfall, so überwiegen die Vorteile der Paarprogrammierung deutlich, da durch das kontinuierliche, gegenseitige Code Review die Codequalität erhöht wird. Darüber hinaus begünstigt der konstante Austausch die Entstehung neuer, alternativer Lösungswege und Herangehensweisen und fördert zudem die Zusammenarbeit, Kommunikation sowie den Erfahrungsaustausch zwischen den beiden Entwicklern. Da auch der Wechsel von analog zu digital für das Pair Programming gut funktioniert, dank Technologien wie Microsoft Teams, lautet unsere Empfehlung: probiert es doch einfach mal aus!

Autor Profilbild

Jan Uhrig

-