Remote Pair Programming in Zeiten von Corona

Wie lässt sich Remote Pair Programming in Zeiten von Corona umsetzen, wenn alle Mitarbeiter remote arbeiten? Unsere Erfahrungen bisher zeigen: das geht sehr gut!

Wir zeigen, welche Möglichkeiten zur Verfügung stehen, wie wir sie einsetzen können, was funktioniert und was nicht funktioniert.

Was hat sich geändert?

Die Mitarbeiter verändern ihre Arbeitsgewohnheiten auf Basis der Vorgaben des Unternehmens oder auf Grund persönlicher Situationen, sodass z.B.

  • das Home-Office genutzt wird (von vollständig über partiell bis gar nicht)

  • die Arbeitszeit sich reduziert (von Kurzarbeit 0% über Teilzeitmodelle in Kurzarbeit bis hin zu normaler Arbeitszeit wie vorher)

  • das technische Setup nicht ideal ist (zu Hause ist kein Laptop vorhanden, kein externer Monitor, kein Arbeitszimmer, kein Headset)

Diese Änderungen ergeben einige technische und organisatorische Herausforderungen, denen sich Teams, die zusammen arbeiten heute stellen müssen.

Pair Programming verstehen

Pair Programming ist eine Methode, bei der zwei Softwareentwickler am selben Arbeitsplatz gemeinsam an einem Stück Code arbeiten.

„Write all production programs with two people sitting at one machine.“

Kent Beck

Aber Pair Programming ist mehr als das. Die Adoption von Pair Programming ist nach wie vor schlecht. Das liegt unter anderem daran, dass der klassische Driver und Navigator Stil folgende Rollenverteilung vorgibt:

Der Driver bedient die Tastatur und die Maus, um den Code zu schreiben. Der Fokus des Drivers ist es, ein kleines Ziel zu verfolgen und zu erledigen. Ablenkung durch andere Probleme sollten vermieden werden. Dabei kommentiert der Driver sein Vorgehen.

Der Navigator ist der Beobachter der Situation. Er überprüft die Ergebnisse des Drivers während der Erstellung und gibt Tipps und Verbesserungsvorschläge. Der Navigator schaut auf die größeren Probleme im Code und hat einen Blick auf den weiteren Fahrplan.

Die Vorteile sind:

  • dir passieren weniger Bugs

  • deine Motivation steigt durch die enge Zusammenarbeit

  • du schreibst weniger Code, was zu geringerer Komplexität führt

  • deine Kommunikation im Team verbessert sich

  • deine Integration ins Team verbessert sich

  • du profitierst vom Wissen des Anderen durch intensiven Austausch

Pair Programming hat trotz der klaren Vorteile einen schlechten Ruf. Die Adoption stockt oft, Teams probieren es aus, es funktioniert nicht sofort und dann wird es aufgegeben. Unsere Beobachtungen decken sich damit. Pair Programming entfaltet sein Potential über einen längeren Zeitraum und ist keine kurzfristige Lösung für Probleme.

Das Remote Pair Programming Setup

Der Einsatz von Pair Programming kann durch fehlende Überzeugung schwer fallen oder gar scheitern. Da reichen schon wenige kritische Stimmen im Team. Was aber, wenn wir die Corona-Zeit nutzen und sie als eine Chance begreifen, um Dinge umzusetzen, die vorher nicht möglich erschienen?

Finden von synchronen Zeiten

Eine der größten Herausforderungen für Pair Programming ist die größere Asynchronität vieler Arbeitsabläufe. Pair Programming braucht synchrone Zeit, da Problemlösung, Ideensammlung, Entwicklung und Testen gleichzeitig passieren.

In anderen Worten: Ich kann mich einem 3h Problem 3 Wochen lang widmen (Stück für Stück) oder 3 Stunden im Flow sein und das Problem lösen. Oft ist die 2. Variante die effizientere, aber auch eine, die ein vorwiegend synchrones teambasiertes Arbeiten erfordert.

Und genau das ist eine der größeren Herausforderungen. Durch die größere Individualität ist es schwerer geworden synchrone Zeitfenster zu finden. Man braucht sie aber unbedingt, um überhaupt anfangen zu können.

Tools, die hier helfen sind zum Beispiel der Kalender oder Tools wie Doodle, wenn man mit Unternehmen arbeitet, die keinen Zugriff auf den eigenen Kalender haben.

Technik: Einfache Software-Tools

Durch die große Diversität muss die Tool-Auswahl oft den kleinsten gemeinsamen Nenner finden.

Ganz generell lässt sich jedes Screen Sharing Tool benutzen, das eine Möglichkeit hat, den Bildschirm für den anderen zu teilen und dies ggfs. auch umzudrehen. Tools die wir bereits verwendet haben sind:

  • TeamViewer

  • Skype

  • Microsoft Teams

  • Google Meet

In unseren Projekten setzen wir derzeit verstärkt Microsoft Teams ein. Genau wie Google Meet bietet es zum einen eine sehr niedrige Barriere (alle Devices, Kollaboration innerhalb und außerhalb der Firma möglich, einfache Bedienung). Zum anderen bietet es die Möglichkeit einer automatischen Aufzeichnung, die es sehr einfach macht, längere Sessions aufzunehmen und den Beteiligten zur Verfügung zu stellen. Diese Videos werden automatisch transkribiert, sodass man auch im Text nach interessanten Stellen suchen kann, die im Nachgang noch mal angeschaut werden müssen.

Technik: Advanced Tools

Tools wie Microsoft Visual Studio Live Share bieten darüber hinaus integrierte Lösungen, die es erlauben Code, Video und Audio in einer Oberfläche zu integrieren. So lässt sich Pair Programming ohne Kompromisse umsetzen. Folgende Vorteile entstehen dadurch:

  • Kooperatives Arbeiten am Code in Echtzeit

  • Direktes Editieren am Code möglich

  • Unkompliziertes Tauschen der Driver und Navigator Rollen

  • Individuell gestaltetes Set-Up bleibt erhalten, auch während des Sharing-Prozesses

Dadurch, dass man sich nicht auf eine Umgebung einigen muss und jeder seine eigenen Einstellungen und Shortcuts beibehalten kann, kann es leichter sein, den Einstieg in die inhaltliche Arbeit am Code zu finden.

Technik: Die Hardware

Neben der Software gibt es einige Basics, ohne die Remote Pair Programming kaum möglich ist. Dazu gehört zunächst eine stabile Internetverbindung auf beiden Seiten, damit eine flüssige Kommunikation und Bildschirmübertragung grundsätzlich möglich sind.

Da die Kommunikation ein entscheidender Faktor beim Pair Programming ist, ist das Tragen eines Headsets von Vorteil. Es sollte nah am Mund getragen werden, um störende Hintergrundgeräusche zu vermeiden und eine gute Audio-Qualität zu gewährleisten.

Es bietet sich außerdem an, einen zweiten Bildschirm zu benutzen, damit beide stets den Blick auf den geteilten Screen werfen können, gleichzeitig aber den zweiten Bildschirm für den Chat oder weitere Recherche zur Verfügung haben.

Die Grenzen von Remote Pair Programming

Mit einem guten Setup können Pair Programming Sessions als Remote Session gut funktionieren. Jedoch gibt es Einschränkungen, da die persönliche Ebene und direkte face-to-face Kommunikation größtenteils wegfallen. Auch nonverbale Kommunikation ist nicht oder über Videoübertragungen nur eingeschränkt möglich. Das erfordert ein besonderes Maß an Empathie.

Bei einem einfachen Set-Up können noch weitere Probleme auftreten. Ist es nicht möglich, die Driver - Navigator Rollen zu tauschen, passiert es schnell, dass einer der Beteiligten in die passive Zuschauerrolle gedrängt wird und der Driver zu schnell vorausgeht. Das widerspricht dem eigentlichen Sinn von Pair Programming und sollte vermieden werden.

Auch der Austausch von Code Snippets kann bei einfachen Tools problematisch sein. Der Navigator muss dann seine Code-Ideen sprachlich so verständlich machen, dass der Driver sie umsetzen kann. Das ist umständlich und kann für beide Seiten Nerven kosten.

Bei einfachen Screen-Sharing Tools entsteht zudem Konfliktpotenzial, da man sich auf ein Setup einigen muss.

Fazit

Pair Programming kann viele Vorteile bieten, wenn man sich genug Zeit nimmt, es richtig umzusetzen. Auf die Wahl der passenden Tools kommt es an, jedoch muss man hierbei individuelle Bedürfnisse beachten und kann keine Patentlösung erwarten (je nach Kontext, Unternehmen). Auch mit einfachen Software-Tools ist Pair Programming möglich, Kompromisse sind hier aber nicht auszuschließen.

Es gibt zudem viele Faktoren, die die Zusammenarbeit beeinflussen: Hardware, Software, persönliche Beziehungen usw. Es ist nötig, sich gut aufeinander einstellen und eine feedbackorientierte, konstruktive Kommunikation zuzulassen.