Das Pair Programming, ist eine der agilen Softwareentwicklungspraktiken, die Kent Beck in seinem Buch Extreme Programming beschreibt.
Was ist Pair Programming?
Natürlich ist das Pair Programming nicht nur das Schreiben von Codes zwischen zwei Personen, da auch Strategien geplant und Lösungen aus verschiedenen Blickwinkeln entworfen und ausgeführt werden. Denn auch bei gleichem technischem Hintergrund finden verschiedene Entwickler oft unterschiedliche Herangehensweisen und Lösungsansätze für das gleiche Problem.
Das Paar zusammenbringen
Der Einstieg eines Entwicklers in ein Projekt, sei es am Anfang oder in fortgeschritteneren Phasen, ist eine kritische Zeit sowohl für die neuen Mitglieder als auch für das Projekt selbst. Das Onboarding kann auf mehreren Ebenen erfolgen, aber ich bin der festen Überzeugung, dass die vorteilhafteste Lösung mit der Bildung eines Entwickler-Paares beginnt.
Die Organisation eines Paares durch einen erfahrenen Entwickler erleichtert den notwendigen Wissenstransfer an das neue Paarmitglied. Er ist derjenige, der den besten Überblick des aktuellen Stands des Projekts hat, über die notwendigen Fachkenntnisse verfügt und darüber hinaus kann er dabei helfen, technische Hürden schneller aus dem Weg zu räumen: Hat das neue Paarmitglied die IDE richtig konfiguriert? Wie sieht es mit den Projekteinstellungen aus? Verfügt das Mitglied über alle Berechtigungen für den Zugriff auf Drittsysteme?
Von dem Moment an, an dem der neue Entwickler bereit ist mit der Programmierung zu beginnen, können beide Entwickler die nächste zu erledigende Aufgabe auswählen und in kurzen, unkomplizierten Besprechungen mögliche Lösungen austauschen. Der Neuling kann so alle Zweifel, die er eventuell hat, beseitigen und darüber hinaus kann er seinem Partner erläutern, wie er die Aufgabe aufgefasst hat und erhält ein direktes Feedback.
Falls ein Problem auftritt ist es für beide Parteien von Vorteil, eine Diskussion über verschiedene Lösungsansätze oder Strategien zur Erreichung der Lösung zu führen. Diese Frage wird sowohl vom beruflichen als auch vom kreativen Hintergrund beider Seiten beeinflusst, und um den Wert dieser Diskussionen zu erhöhen, ist es notwendig, ein kritik- und vorurteilsfreies Umfeld zu gewährleisten und so die Kommunikation zwischen beiden Paarmitgliedern zu fördern.
Gemeinsam der HelloWorld entgegentreten
Es gibt sehr unterschiedliche Methoden, um mit dem Code zu arbeiten, aber ich persönlich bevorzuge die Trennung der Rollen in Fahrer und Beifahrer.
- Der Fahrer ist derjenige mit der Maus und der Tastatur, der den Code schreibt und kommentiert, was er und der Beifahrer machen. Er wird dafür zuständig sein, kleine Probleme zu lösen, ohne sich auf das Gesamtproblem zu konzentrieren.
- Der Beifahrer ist dafür verantwortlich, den Live-Code zu überprüfen, alle möglichen Auswirkungen der Tätigkeiten des Fahrers auf die Gesamtlösung durchzudenken und sie für spätere Erörterungen aufzuschreiben. Aber der Beifahrer darf nicht passiv bleiben: Wenn er eine Abkürzung für die Richtung des Fahrers kennt, muss er dieses kommunizieren.
Wenn das Paar aus einem erfahrenen und einem weniger erfahrenen Entwickler besteht, wird empfohlen, dass der weniger Erfahrene die Rolle des Fahrers einnimmt. So kann er zeigen, dass er den Kontext des Projekts und die zwischen dem Paar vereinbarte Lösung verstanden hat, und sich letztendlich mit Leichtigkeit im Projekt zurechtfindet während er sich mit dem Code vertraut macht.
Der erfahrene Entwickler wird in der Lage sein, den Code live zu überprüfen, ohne sich durch Code-Diskussionstools durcharbeiten zu müssen. Auf diese Weise kann sehr bald ein homogener Programmierstil erreicht werden.
Auf lange Sicht gelangt man so zu einem Punkt, an dem jede Zeile Code zwangsläufig von mehreren Entwicklern überprüft wurde, wodurch ein sauberer, effizienter und ausgefeilter Codegewährleistet werden kann.
Tipps für ein effektives Pair Programming
Zeitmanagement ist beim Pair-Programming ein entscheidender Faktor. Angefangen wird mit der Planung des Tages und der Festlegung der gemeinsamen Arbeitszeit. Dieser Zeitplan kann und sollte nicht den ganzen Tag in Anspruch nehmen, da es sich um eine recht anspruchsvolle Technik auf intellektueller Ebene handelt, so dass ein Durchschnitt von 4 bis 6 Stunden mehr als genug ist, um sich zu treffen, einen Zeitplan aufzustellen, sich auszuruhen und sich auch um andere Aufgaben zu kümmern.
Es wird sehr empfohlen, die Rollen zwischen dem Paar auch zu wechseln, so dass der Beifahrer sich im Projekt aktiv fühlt und der Fahrer zu einer beobachtenden Perspektive zurückkehren kann. Diese Wechsel helfen auch in der zwischenmenschlichen Beziehung der beiden Entwickler, um zu verhindern, die Kontrolle der Tastatur ans sich zu reißen und in ein Mikromanagement zu geraten.
Das Umfeld ist sehr wichtig, sowohl auf technischer als auch auf persönlicher Ebene. Ein einziger Computer (vorzugsweise der eines Neulings) mit ein paar Bildschirmen und einem großen Tisch, auf dem eine Tastatur, eine Maus und gängige Schreibgeräte untergebracht werden können, ist mehr als genug. Es ist sinnvoll sich auf eine Schriftgröße, ein Bildschirm-Layout und sogar einen ausreichenden Kontrast zu einigen, falls der Partner besondere Bedürfnisse hat. Abschließend möchte ich freundlich daran erinnern, dass es wichtig ist eine angemessene Hygiene und gute Verhaltensweisen zu wahren, um so Konflikte und unangenehme Situationen für alle zu vermeiden.
Als Sahnehäubchen und als persönliche Empfehlung ist es wichtig, kleine Siege zwischen dem Paar zu feiern. Ein besonderes Frühstück bei der Übergabe eines Sprints, ein Spiel auf der Videokonsole oder der altbewährte Handschlag symbolisieren einen Abschluss, sodass sich das Paar auf die Suche nach der nächsten Herausforderung machen kann.
Gemeinsam, aber nicht Durcheinander
An diesem Punkt des Artikels haben Sie wahrscheinlich schon ein- oder zweimal gelacht und sich gefragt, ob es möglich ist, auf diese Weise zu arbeiten. Ich verstehe, dass es kompliziert ist, in einem so reduzierten Raum und an der gleichen Aufgabe wie eine andere Person zu arbeiten, die vielleicht ein anderes technisches Niveau, einen anderen persönlichen Hintergrund, einen anderen kreativen Standpunkt usw. hat… deshalb weise ich auch auf einige Praktiken hin, die zu vermeiden sind.
Vertrauen ist der Schlüssel in einer Partnerschaft, deshalb ist es ratsam, nichts zu verbergen. Es ist sinnvoll zu erläutern, warum man das Telefon oder die E-Mail überprüft (und man muss nicht auf private Details eingehen), aber wenn man das nicht tut, kann es auf mangelndes Interesse oder Engagement für das Projekt hindeuten, was schließlich zu Spannungen führt.
Die Definition der Rollen ist ganz klar: Der Fahrer leitet die Aktion, der Beifahrer kontrolliert und notiert. Es kommt sehr häufig vor, dass der Beifahrer die Führung übernimmt und dem Fahrer konkrete Anweisungen gibt, was zu tun ist oder nicht, dies führt dann zu einem schädlichen Mikromanagement. Genauso kann es sein, dass der Fahrer anfängt, sich zu verirren, wenn er auf einer viel höheren Abstraktionsebene denkt, und dabei die Aufgaben (und wahrscheinlich auch die Geduld) des Beifahrers in Anspruch nimmt, der feststellen wird, dass die Fristen nicht eingehalten werden.
Ich kann gar nicht genug auf die Limitierung der Arbeitszeiten des Paares hinweisen Mehr als 6 Stunden sind unpraktisch, wenn nicht gar unmöglich, da es häufig vorkommt, dass ein Partner des Paares an einem anderen Projekt beteiligt ist (insbesondere in Paaren von unerfahrenen/erfahrenen Entwicklern) und dann Aufgaben wie Besprechungen, Dokumentation oder Verwaltung übernehmen muss, was dazu führt, das Paar vorübergehend zu verlassen. Es ist ebenso einfach wie vorteilhaft, sich zu Beginn des Tages auf einen Zeitplan für das Pair Programming zu einigen.
Bonus track: Pair Programming in Zeiten von COVID-19
Pair programming anzuwenden bedeutet nicht, dass sich die beiden Partner am selben Ort befinden müssen, schon gar nicht in diesen Zeiten Pair Programming im home office ist möglich, aber es bringt tatsächlich eine Reihe zusätzlicher Anforderungen und Empfehlungen mit sich, die in Betracht gezogen werden sollten:
- Eine ausreichend stabile Internetverbindung ist ebenso selbstverständlich wie wichtig.
- Eine Lösung für die gemeinsame Bildschirmnutzung. Wenn diese über Fernsteuerungsmöglichkeiten verfügt, um so besser, auch wenn es nicht unbedingt erforderlich ist.
- Eine Umgebung, die frei von Hintergrundgeräuschen und förderlich für die Kommunikation ist. Ein ausreichend gutes Headset und ein Mikrofon sorgen für die nötige Ausstattung, um miteinander kommunizieren zu können.
- Da die Körpersprache wichtig ist, sind Videoanrufe sehr hilfreich. Es gibt Programme, bei denen man die Kamera gleichzeitig mit dem Bildschirm sehen kann, aber es können auch andere Programme und sogar andere Geräte verwendet werden.
- Tonnenweise Geduld. Selbst bei einer idealen Verbindung und perfekten Bedingungen kann es zu Problemen kommen, etwa wegen zeitverzögerter Eingaben oder Verständnisproblemen, die durch die konkrete Nutzung von Shortcuts, Makros, etc. entstehen können Dafür gibt es keine magische Lösung, aber es ist wichtig, die Kommunikation jederzeit aufrechtzuerhalten, um das auszusprechen, was man tun will, aber auch das, was man nicht weiß oder nicht versteht.