General 17.5.2021

Remote Pair Programming

Was ist Pair Programming?

Unsere Arbeit bei integer_net lebt von gegenseitiger Unterstützung und Kooperation, denn vier Augen sehen mehr als zwei. Durch das kontinuierliche Gespräch mit anderen Expert*innen entwickeln sich neue Ideen und Herangehensweisen, die einen Arbeitsprozess effizienter gestalten. Deshalb arbeiten wir besonders gerne im Team. Das Pair Programming ist hierfür besonders geeignet: Hierbei übernehmen zwei Entwickler*innen abwechselnd die schreibende oder die beobachtende Rolle. Während eine Person den Code schreibt, denkt die zweite über mögliche Probleme oder Verbesserungen nach. Dadurch fallen mögliche Fehler frühzeitig auf und Ideen können direkt diskutiert und umgesetzt werden.

Was ist Remote Pair Programming?

Doch im Home Office fallen die persönlichen Gespräche mit den Kolleg*innen im Büro weg, Pair Programming erscheint zunächst schwierig. Die Möglichkeiten, wie damit umgegangen werden kann, sind vielfältig. Beim Remote Pair Programming läuft dieser Arbeitsprozess online über zwei unterschiedliche Geräte ab. Das ist vor allem dann nützlich, wenn sich die Entwickler*innen an unterschiedlichen Orten aufhalten, wie es im IT-Bereich oft vorkommt. Hinzu kommt, dass gerade während der Pandemie die Gesundheit unserer Mitarbeiter*innen im Vordergrund steht. Auch deshalb ist das Remote Pair Programming ein wichtiger Teil unseres Arbeitsalltags geworden.

Herausforderungen des Remote Pair Programming

Für das Remote Pair Programming können beispielsweise Videokonferenztools oder auch speziell für Developer entwickelte Programme verwendet werden. Die naheliegende Lösung wird für viele sein, Video-Konferenz-Tools wie Zoom, Microsoft Teams, Google Hangouts oder Slack mit der Screensharing-Funktionen zu verwenden. Die Schwierigkeiten gestalten sich hier ähnlich wie im Büro: Es ist wichtig, dass die Rollen regelmäßig abgewechselt werden, da die beobachtende Rolle schnell dazu führen kann, dass die Konzentration sinkt.

Darüber hinaus muss man die Kollegin oder den Kollegen entweder unterbrechen, wenn ein Fehler auftaucht oder sich Notizen machen, um später die betreffenden Stellen überarbeiten zu können. Viele Programme verfügen inzwischen auch über die Möglichkeit, mit der Maus oder einem Stift, Stellen auf dem Screen des anderen zu markieren. Durch die gleichzeitige Bearbeitung und Betrachtung des Codes wird die Zeit sinnvoll genutzt und man kann synchron arbeiten.

Remote Pair Programming Tools bieten eine andere Herangehensweise: Wer sich gerade in der beobachtenden Rolle befindet, bekommt auch Zugriff auf den Code der anderen Person. Die Tools unterscheiden sich unter anderem darin, welche Funktionen die beobachtenden Kolleg*innen zur Verfügung haben.

Welche Remote Pair Programming Tools gibt es?

Eins vorweg: Die Tools, die wir ausprobiert haben und benutzen, sind alle gut und nützlich. Welche man letzten Endes nutzt, hängt ganz von den eigenen Präferenzen ab. Möchte man die andere Person als Video sehen können? Oder reicht eine rein auditive Kommunikation? Der Markt hält sicherlich für alle eine passende Lösung bereit.

Um die Auswahl zu erleichtern, haben wir einige Informationen zu denjenigen Tools zusammengefasst, mit denen unsere Mitarbeitenden in der Vergangenheit Erfahrungen gesammelt haben.

Chat Clients - Slack, Teams, ...

Meist wird ohnehin unternehmensweit ein Chat-Client genutzt - die meisten populären Workspace-Apps bieten eine Bildschirmübertragung an, sodass die lokale Entwicklungsumgebung den Kollegen gezeigt werden kann. Fragen und Herangehensweisen können dabei über die integrierte Audioübertragung erörtert werden, auch die Video-Funktion steht dabei zur Verfügung.
Die Bildschirmübertragung kann jedoch nur von einer Person erfolgen, die Teilnehmenden des Calls haben - wenn überhaupt - nur rudimentäre Interaktionen wie eine Markier-Funktion zur Verfügung. Code Snippets werden, wenn erforderlich, über die parallele Chat-Funktion geteilt, und können nicht durch die Kollegen im Call direkt eingefügt werden. Für einfachere Sachverhalte können diese nicht auf Pair Programming spezialisierten Apps dennoch oft bereits einen adäquaten Lösungsansatz darstellen.

Vorteile:

  • Integrierter Sprach-, Video- und Text-Chat
  • Aufmerksamkeit liegt nur bei Inhalten der teilenden Person
  • Es werden nur eigene Änderungen vorgenommen --> einfache Nachvollziehbarkeit

Nachteile:

  • Host und Teilnehmende sehen immer dasselbe
  • Nur rudimentäre Interaktionsmöglichkeiten für Teilnehmende

 

CodeTogether

CodeTogether ist für uns eine interessante Alternative zum Screensharing und ist für Eclipse, IntelliJ oder VS Code erhältlich. Bei CodeTogether gibt man nur die Entwicklungsumgebung frei. Wir haben CodeTogether über den Cloud-SaaS Plan getestet und dabei PhpStorm verwendet. Dabei sollte beachtet werden, dass eingeladene Peers über den Browser nicht das komplette PhpStorm Feature Set zur Verfügung haben und Optionen wie die Refactoring-Funktionen fehlen. Um mitzuarbeiten sind die verfügbaren Features aber durchaus ausreichend.

Der Host kann über "Start Sharing" und "Invite Peers" die gewünschte Ansicht mit seinen Kolleg*innen teilen. Praktisch ist, dass die Teilnehmer*innen hierfür kein Plugin benötigen, sondern nur den Link, da sie die IDE (Integrated Development Environment) direkt im Browser ansehen. Hierüber erfolgt anschließend auch die Code Completion. Die Veränderungen lassen sich für alle live mitverfolgen. Die einzigen Voraussetzungen sind hier ein schneller Rechner und eine gute Internetverbindung.

Ursprünglich war CodeTogether nicht dazu gedacht, dass mehrere Teilnehmer*innen Veränderungen an einer Datei gleichzeitig durchführen, allerdings ist diese Vorgehensweise möglich. Außerdem kann man unabhängig voneinander an verschiedenen Dateien innerhalb eines Projekts arbeiten und parallel die vorgenommenen Veränderungen beobachten. Wichtig ist hier, dass klar kommuniziert wird, wer woran genau arbeiten soll. Für die Zusammenarbeit gibt es zwei Menüpunkte, die ausgewählt werden können: Zum einen kann über "Follow Host" festgelegt werden, ob man dem Host folgen und zum Beispiel zu der Datei springen möchte, die er öffnet, oder ob man es vorzieht, frei im Code zu navigieren.  Zum anderen bestimmt man über "Control and Code", ob man bestimmte Dateien öffnen möchte, während der Host mitfolgt. Das Programm kann auch zum reinen Zuschauen genutzt werden.

Eine vergleichbare Alternative zu CodeTogether ist GitDuck. Die Funktionsweise ist sehr ähnlich und wir wissen von Kollegen in anderen Agenturen, die dieses Tool gerne nutzen. Wir haben es allerdings bis jetzt noch nicht ausprobiert.

Vorteile:

  • Im Code arbeiten
  • Der teilenden Person folgen
  • Die teilende Person führen
  • Host und Teilnehmende arbeiten an unterschiedlichen Dateien
  • Kein Plugin nötig, da es direkt im Browser läuft

Nachteile:

  • Zuschauende haben nicht den vollen Funktionsumfang
  • keine Refactoring-Funktionen

 

Code With Me

Das Besondere bei Code With Me ist, dass dieses Tool von der Firma hinter der PhpStorm IDE entwickelt wurde: JetBrains. Es ist auf diese IDE zugeschnitten und verfügt über die meisten Features. Aus diesem Grund kann es allerdings nicht mit anderen Entwicklungsumgebungen zusammenarbeiten. Anders als Code Together erhalten man als Teilnehmende keine Browser-Anwendung, sondern eine virtuelle PhpStorm Instanz. Genau wie bei Code Together kann man hier im Code navigieren und arbeiten oder dem anderen folgen. Es sind auch hier noch nicht alle Funktionen, wie zum Beispiel Dialoge, für die Teilnehmer*innen verfügbar. Dennoch kann man bereits viele Features nutzen, die für uns im Arbeitsalltag überaus nützlich sind, wie zum Beispiel das Terminal und die Tests.

Basierend auf unseren Erfahrungen empfehlen wir, dass die Entwicklerin oder der Entwickler in der Schreiberfunktion auch die Host-Rolle übernimmt, da man in dieser Rolle den vollen Funktionsumfang der IDE zur Verfügung hat. Bis jetzt hat uns dieses Remote Pair Programming Tool am besten gefallen. Produktives Arbeiten ist gut möglich, da es flüssig läuft und sich die Bearbeitung am natürlichsten anfühlt. Unsere Anforderungen sind damit abgedeckt.

Vorteile:

  • Im Code navigieren
  • Im Code arbeiten
  • Der teilenden Person folgen
  • Host und Teilnehmende arbeiten an unterschiedlichen Dateien
  • Tests
  • Virtuelle PhpStorm Instanz
  • Videokonferenz

Nachteile:

  • Zuschauende haben nicht den vollen Funktionsumfang
  • nur für JetBrains IDEs

Fazit

Mit dem gestiegenen Bedarf an Tools für Remote Coding erlebt dieser Markt gerade einen Aufschwung und neue Lösungen werden angeboten. Code With Me ist beispielsweise erst seit April 2021 offiziell veröffentlicht. Zusammenfassend können wir sagen, dass alle von uns getesteten Programme eine gute Option und verschiedene hilfreiche Tools auf dem Markt verfügbar sind. Entscheidend sind hier die eigenen Präferenzen und Mittel. Wer bereits in ein Videokonferenz-Tool investiert hat und es vorzieht, dass niemand gleichzeitig den Code verändert, ist mit dieser Option möglicherweise am zufriedensten.

Was sind eure Erfahrungen? Welche Tools habt ihr bereits ausprobiert und welche Tipps fallen euch ein, die ihr anderen Entwickler*innen auf den Weg geben möchtet?