16. Oktober 2020

Remote Pair Programming

David Gontrum

Im Beitrag Leanovate Best Practices: Pairing oder warum zwei nicht einer zu viel sind, haben wir bereits erklärt, was es mit Pair- und Mob Programming auf sich hat, weshalb diese Praktiken so effektiv sind und wie ihr das Ganze in der Praxis am Besten umsetzt.

Zur Erinnerung: Essentiell ist dabei die Kooperation! Wie reagieren Driver und Navigator aufeinander? Wann greift man ein und wann ist die richtige Zeit zum Diskutieren? Mit etwas Übung könnt auch ihr das Verhalten eures Partners oder eurer Partnerin deuten und entsprechend reagieren.

Doch Corona hat die Situation verändert: Wir sitzen nicht mehr dicht nebeneinander und teilen uns eine Tastatur. Oftmals befinden wir uns beim Programmieren nicht mal mehr im selben Büro, geschweige denn vor dem selben Rechner. Mein Kollege sitzt sogar am anderen Ende der Stadt. Und dennoch können wir gemeinsam Code schreiben!

Hier möchte ich von den Erfahrungen berichten, die ich mit Pair Programming aus dem Homeoffice bereits machen konnte.

Tools

Befindet man sich am gleichen Ort, kann man schnell mit dem Pair Programming loslegen: wir brauchen einen Bildschirm, einen Rechner und eine Tastatur. Entwickelt man im Mob, ist zusätzlich ein großer Bildschirm hilfreich, damit alle gleichzeitig das Geschehen überblicken können.

Möchte man remote kooperieren, sind folgende Tools essenziell:

Videokonferenz-Tools

Wichtig ist hierbei vor allem, dass der Bildschirminhalt (in einer guten Qualität!) geteilt werden kann, dass man das Gesicht des Partners oder der Partnerin wahrnehmen kann und dass ohne große Komplikationen miteinander gesprochen werden kann (kennt ihr das, wenn sich die Kollegin plötzlich wie ein Roboter anhört?).

Wir benutzen oft Google Meet oder Zoom für unsere Sessions (hier auch ein wertvoller Artikel meines Kollegen Daniel zur Homeoffice-Ausstattung). Es gibt allerdings auch Tools, welche speziell für Pair Programming im Remote-Modus entwickelt wurden. Tuple beispielsweise ermöglicht das problemlose Übergeben der Maus- und Tastatursteuerung, benötigt sehr wenig Rechenleistung und wirbt mit einer sehr guten Übertragungsqualität für Audio und Video.

Repository

Für das Remote Pairing ist es hilfreich, noch öfter als sonst in euer Repository zu committen und zu pushen. Gerade dann, wenn ihr den "Ping Pong"-Pairing-Stil (siehe auch den Absatz “Gute Praktiken funktionieren weiterhin”) nutzt, ist es empfehlenswert, nach jedem Schritt euren Code einzuchecken und den Partner oder die Partnerin den aktuellen Stand auschecken zu lassen, um lokal auf seinem oder ihrem Rechner weiterarbeiten zu können. Habt keine Angst vor den Roundtrips: Die Schritte werden schnell zur Gewohnheit und sind nebenbei gesagt sowieso gute Praxis.

Wünschenswert: zwei Bildschirme

Oft steht beim Remote Pairing nur eines im Vordergrund: die IDE, die wahlweise lokal läuft oder gerade vom Partner oder der Partnerin übertragen wird. Wenn überhaupt, wird das Gesicht des Partners oder der Partnerin nur in einem kleinen Fenster am rechten Bildschirmrand angezeigt und ab und zu verschoben, weil es gerade im Weg ist.

Habt ihr einen zweiten Bildschirm zur Verfügung, probiert doch mal aus, das Gesicht des Partners in voller Größe auf den anderen Bildschirm zu legen. Ihr könnt so viel besser nachvollziehen, ob der Gegenüber gerade in Gedanken ist und vielleicht nicht durch eine laut geäußerte Idee unterbrochen werden sollte oder ob gegebenenfalls eine Hilfestellung angebracht wäre. Manchmal lässt sich sogar deuten, ob der Partner oder die Partnerin gerade erschöpft ist und man kann selbst anbieten, das Ruder zu übernehmen.

Habt ihr keinen zweiten Monitor zuhause, fragt doch mal bei eurem Arbeitgeber oder eurer Arbeitgeberin nach, ob ihr euch einen Monitor aus dem Büro für das Arbeiten von zuhause ausleihen könnt.

Vorsicht vor Tooling-Overkill

Für die Remote-Situation gibt es mittlerweile sehr viele praktische Tools: Code-Editoren, die im Browser laufen und von mehreren Personen gleichzeitig benutzt werden können (codeshare) und Plugins für IDEs, die selbiges ermöglichen (Floobits, Live Share).

Viele dieser Tools funktionieren bereits sehr gut und einige werden kontinuierlich verbessert. Und ganz sicher haben sie auch ihre Daseinsberechtigung – zum Beispiel lassen sich die erwähnten Roundtrips aus dem Punkt "Repository" umgehen – ich rate aber zum sehr aufmerksamen Nutzen: manchmal passiert es, dass eine Person nur schnell etwas am Code verbessern möchte und die andere Person dabei nicht unterbrechen möchte. Dabei geht aber zum einen Aufmerksamkeit für den Kollegen oder die Kollegin verloren, und zum anderen auch die Gelegenheit, etwas zu lernen und zu diskutieren (beides Punkte, die man sich ja aus der Kooperation erhofft).

Verlässt man sich allzu sehr auf die Tools, tendiert man außerdem dazu, die gute Gelegenheit zu versäumen, bei jedem Wechsel den Code einzuchecken.

Mein Ratschlag: verzichtet zunächst auf solche Tools, gewöhnt euch an die Kooperation miteinander und führt die Tools ein, sobald ihr fit mit dem Remote Pairing seid und Verwendung für die Tools findet.

Grundlegendes

Was für die Kooperation im gleichen Büro gilt, gilt in verstärkter Weise auch für die Remote-Situation: achtet auf euren Partner oder eure Partnerin: gebt verstärktes Feedback und fordert es häufiger ein. Kommt ihr ins Straucheln, kann es beispielsweise eine gute Technik sein, den Anfang eines Satzes zu formulieren und dessen Ende offen zu lassen (“Ich ergänze also diese Methode, indem ich…”, “Statt das Flag als Parameter zu übergeben, nutzt Du also lieber…”). Die Chance, dass euer Partner oder eure Partnerin den Satz vervollständigt und ihr somit einen Fortschritt erzielt, ist relativ hoch. Ebenso können bestärkende Formulierungen helfen, auch wenn sie sich zunächst etwas befremdlich anfühlen: “Lass uns das so machen!”, “Ja, das hört sich gut an.”, oder “Du kannst es ja mal ausprobieren.”. Ziel ist es, den Kontakt zu halten und da ihr euch nicht physikalisch seht und dadurch spürt, wie der andere tickt, muss all das bei der remote-Zusammenarbeit durch sprachliche Äußerungen kompensiert werden. Fühlt sich komisch an, ist aber wahnsinnig nützlich.

Wenn ihr nämlich sonst nebeneinander sitzt, nehmt ihr unterbewusst nonverbale Signale eures Partners oder eurer Partnerin wahr. Viele Signale bleiben aber nun auf dem langen Weg der Datenautobahn auf der Stecke: ein Scherz wird gegebenenfalls als unterschwellige Kritik interpretiert, Ironie oder Sarkasmus sind ohne ein Augenzwinkern vielleicht nicht klar erkennbar. Introvertierte Menschen können weniger sichtbar sein und extrovertierte Menschen nehmen möglicherweise mehr Platz ein. Für Interessierte: Amy Cuddy hat 2012 eine hilfreiche Einführung in das Thema der nonverbalen Kommunikation gegeben. Eine Aufzeichnung findet ihr hier.

Macht man sich diese Effekte bewusst, kann Remote Pairing auch eine echte Chance sein: eine introvertierte Person schreckt vielleicht nicht mehr davor zurück, sich mitzuteilen, weil er oder sie keine Angst davor hat, andere Menschen im Büro durch seine oder ihre Äußerungen abzulenken. Extrovertierte Menschen können im Umkehrschluss lernen, besser auf ihre Kolleginnen und Kollegen zu achten. Softskills wie aktives Zuhören, Rücksichtnahme und Aufmerksamkeit werden somit gefördert.

Gute Praktiken funktionieren weiterhin

Seid ihr bereits darin geübt, testgetrieben im Pair zu entwickeln, ist das für euch von Vorteil. Eine "Ping Pong"-Session lässt sich ausgezeichnet auf ein Remote Setting übertragen:

  1. Person #1 schreibt einen Test, der fehlschlägt
  2. Person #2 schreibt den Code, der den Test grün macht (und macht gegebenenfalls ein Refactoring für bestehenden Code)
  3. Person #2 schreibt den nächsten fehlschlagenden Test
  4. Person #1 schreibt den Code, der den Test grün macht

Mithilfe dieses Prinzips bleibt niemand zu lange in einer Rolle und tendiert dazu, abzuschweifen. Nach jedem Wechsel darf eine kurze oder längere Pause eingelegt werden. Das ist auch nötig: die erhöhten Anforderungen an die Aufmerksamkeit machen sich bemerkbar, sind den Anwesenden jedoch nicht immer sofort bewusst. Kurze Pausen helfen dabei zu merken, ob man erschöpft ist und unter Umständen eine längere Pause angebracht wäre.

Übung macht die Remote-Pairing-Champions

Ihr programmiert schon längere Zeit gemeinsam im Pair oder im Mob? Dann stellt euch die Remote Situation gar nicht vor so viele große Hindernisse. Seid ihr mit dieser Arbeitsweise allerdings noch nicht so vertraut, hilft es, regelmäßig in einer dafür vorgesehenen Umgebung zu üben.

Bei Leanovate finden regelmäßig Coding Dojos statt, in welchen die Fähigkeiten angeeignet und verfestigt werden können. Mit kleinen, in sich geschlossenen Aufgaben, die (analog zu den Übungsformen im Karate) als Katas bezeichnet werden, üben wir die Kooperation mithilfe von Remote Ping Pong und testgetriebener Entwicklung (TDD). Das hilft uns dabei, konkrete Probleme in echten Projekten gut und effektiv im Pair oder Mob anzugehen.

Diese Übungen existieren nicht nur für programmierbezogene Themen. Zuletzt haben wir beispielsweise ein Elephant-Carpaccio durchgeführt, um gemeinsam zu üben, wie große Probleme in kleine Teile zerlegt werden können. 

Für derlei Sessions bieten sich Online-Whiteboards wie Miro oder Mural an. Außerdem nutzen wir für diese Zwecke gern Breakout Rooms, die einige Videokonferenz-Tools anbieten. Dabei können Kleingruppen zufällig zusammengewürfelt werden, um über einen definierten Zeitraum Aufgaben in einem gesonderten virtuellen Raum zu bearbeiten und die Ergebnisse wieder in die Gesamtgruppe zurückzutragen.

Fazit

Corona und die damit einhergehende Remote-Situation hat uns vor neue Herausforderungen gestellt. Dieser Herausforderung stellt ihr euch am Besten, indem ihr noch bewusster als zuvor miteinander interagiert: achtet auf Feedback, teilt euch selbst mit, behaltet den Partner oder die Partnerin im Auge und passt aufeinander auf.

Greift weiterhin auf gute Praktiken wie TDD zurück und nutzt euer Repository. Lernt und übt gemeinsam in kleinen in sich geschlossenen Übungen und setzt erst dann auf Tools und/oder Software-Lösungen, wenn ihr diese wirklich benötigt.

Viel Spaß beim Remote Pairing 🙂

 

David Gontrum
Software Craftsmanship | Agile | Kotlin

Rufen Sie uns an: 030 – 555 74 70 0

Made with 
in Berlin. 
© leanovate 2020
hearttagtwitterfacebooklinkedinxing