Race tussen remote pair programming tools

Pair programming is in deze tijd van thuiswerken bij veel teams naar de achtergrond verdwenen. Zonde, het is leerzaam en verbetert de kwaliteit van de code. Gelukkig zijn er tools waarmee je op afstand samen kunt coderen. In dit artikel volgen we een wedstrijd tussen een aantal van deze tools; de ‘Tour de Remote Pair Programming’. Deze race kijkt naar verschillende aspecten: de omgeving waarin men werkt, de verschillende opties, de toegang tot een sessie en de gebruiksvriendelijkheid.

Auteur: Kaya Weers

“Scroll nog iets naar beneden. Nee, nu ben je net te ver.” Herkenbaar? Schermdelen is niet ideaal voor pair programmen. De interactiemogelijkheden zijn vrij minimaal en het kan zwaar zijn voor het netwerk met een onscherp beeld als resultaat. In de Tour de Remote Pair Programming ontdek je tools die je laten meewerken in plaats van meekijken.

De teams

In deze race is plaats voor vier teams. Andere teams zijn afgevallen omdat ze over minder functionaliteit beschikken of omdat ze slechts voor één OS of IDE geschikt zijn. De teams verbeteren zich continu, wellicht rijden er over een paar maanden andere teams aan kop.

Team Code with Me

Code with Me [1] is een plugin voor IntelliJ (en alle andere JetBrains IDE’s), ontwikkeld door JetBrains. Degene die zijn of haar code wil delen, nodigt deelnemers uit met een link. Deelnemers downloaden de IntelliJ Client, die nagenoeg hetzelfde oogt en werkt als IntelliJ (afbeelding 1). Ze komen terecht in het project en de git branch van de host. Iedereen kan code aanpassen, files bekijken en stukken code markeren.

Afbeelding 1

Team Screen

Screen [2] is een applicatie voor desktop, mobile en web. De host moet de applicatie downloaden, de deelnemers kunnen volstaan met een browser. Het is vanuit de browser niet mogelijk om te wisselen van presentator. Screen lijkt het meest op traditioneel schermdelen. De host deelt het scherm en geeft de deelnemers mede-controle over de muis en het toetsenbord. Daarnaast kan er getekend worden op het scherm en is het mogelijk om te videobellen (afbeelding 2).

Afbeelding 2

Team CodeTogether

CodeTogether [3] is een plugin die je kunt gebruiken in Eclipse, Visual Studio Code en JetBrains IDE’s. De host start een sessie vanuit zijn of haar IDE. Anderen kunnen vanuit hun eigen IDE deelnemen aan het project dat de host opent (afbeelding 3). Iedereen kan meewerken aan de code, bestanden in het project openen en tekst markeren.

Afbeelding 3

Team GitLive

Tot slot is er GitLive [4]; een plugin, beschikbaar voor JetBrains IDE’s en Visual Studio Code. De makers omschrijven GitLive als een samenwerkingsplatform voor developers. Je logt in met een versiebeheersysteem en ziet een lijst van teamgenoten. Het toont in welke files ze werken, welke aanpassingen ze hebben gedaan en aan welk ticket ze bezig zijn (afbeelding 4). Daarnaast kun je iemand uitnodigen om te gaan pair programmen.

Afbeelding 4

Etappe 1: Omgeving voor deelnemers 

Deze etappe focust op de omgeving waarin de deelnemers van de pair programming sessie werken. De host werkt altijd vanuit de eigen IDE, voor deelnemers verschilt dit per tool.

In het geval van CodeTogether en GitLive werken deelnemers in hun eigen IDE. CodeTogether biedt ook de optie om vanuit een browser deel te nemen. Voor Code with Me-deelnemers wordt de IntelliJ Client gedownload, ongeacht of ze IntelliJ op hun laptop hebben staan. In Screen werken deelnemers mee op de machine van de host en dus ook in diens IDE.

CodeTogether wint deze etappe omdat het mogelijk is om zowel in de eigen IDE als in een browser te werken.

Etappe 2: Toegang tot sessie

Deze etappe kijkt naar hoe men aan een sessie deelneemt en of de toegang tot de sessie beperkt kan worden.

 Hoe kom je in de sessie? In het geval van Screen, Code with Me en CodeTogether (afbeelding 5) stuurt de host een uitnodigingslink. GitLive is een uitzondering; je logt in en selecteert vervolgens de teamgenoot met wie je samen wilt werken. Je kunt niet pair programmen met iemand die geen toegang heeft tot de repository.

Afbeelding 5

Op het gebied van het beperken van de toegang, hebben de teams van CodeTogether en Screen nog wat stappen te maken. Iedereen met de link kan deelnemen en het is niet mogelijk mensen te weigeren of uit de sessie te zetten. Bij Screen is de impact hiervan het grootst, aangezien deelnemers toegang hebben tot je gehele machine!

Code With Me heeft het geavanceerder aangepakt; de host moet elke deelnemer accepteren en heeft de mogelijkheid iemand uit de sessie te zetten. In GitLive moet de host het accepteren als een teamgenoot wil pair programmen (afbeelding 6).

Afbeelding 6

Deze spannende etappe kent geen winnaar; GitLive en Code with Me finishten tegelijk. GitLive wint op het gebied van beperking van de toegang. Code with Me is echter eenvoudiger te gebruiken omdat je mensen kunt uitnodigen die niet je teamgenoot zijn.

Etappe 3: Pair programming opties

In deze pittige etappe ontdekken we welke tool de beste mogelijkheden biedt om zo efficiënt mogelijk samen te programmeren.

CodeTogether en Code With Me lopen gelijk op; ze bieden zowel de optie om ‘echt’ te pair programmen (één toetsenbord en één muis) als de optie om los van elkaar aanpassingen te maken (afbeelding 7). Code With Me is echter uitgebreider in de mogelijkheden voor de deelnemers: de terminal gebruiken, tests runnen en de applicatie starten. In CodeTogether is dit enkel weggelegd voor de host en kunnen deelnemers ook niet meekijken als de host een van deze acties uitvoert. Jammer, want dat kan erg waardevol zijn; denk bijvoorbeeld aan samen debuggen.

Afbeelding 7

GitLive zit anders in elkaar; je schakelt namelijk niet volledig over naar de code van de host. Naast de mogelijkheid om in de code van de host te werken of mee te kijken, kun je in je eigen git branch aanpassingen maken (afbeelding 8). Alle deelnemers kunnen de tests runnen, maar je ziet dit niet van elkaar. In het geval van debuggen is het wel mogelijk om de cursor te laten volgen, waardoor je mee door de code kunt navigeren.

Afbeelding 8

Bij Screen kan je als deelnemer nagenoeg hetzelfde als de host. Er kan één persoon tegelijk typen of iets selecteren. Screen bootst daarmee het beste de ‘pre 2020-realiteit’ na, waarbij je samen achter één laptop zit.

Ondanks dat Screen de beste imitatie is van offline pair programming, komt het als laatste over finish. Het is zonde om de kans niet te benutten om samen coderen efficiënter te maken, door de deelnemers parallel aan de host te laten werken.

Code with Me wint de eindsprint van GitLive dankzij de mogelijkheid om samen te debuggen.

Etappe 4: Gebruiksvriendelijkheid

De laatste etappe betreft gebruiksvriendelijkheid; is de tool prettig in gebruik en welke extra’s biedt het?

De gemiddelde developer wil zo min mogelijk typen; code completion to the rescue! Bij Code With Me, GitLive en Screen werkt dat perfect. CodeTogether kan daar nog in verbeteren, aangezien code completion alleen werkt bij methods.

Wat bieden de tools nog meer om het leven makkelijker te maken? In het geval van Screen heb je geen aparte applicatie nodig voor videobellen, dat is namelijk geïntegreerd. Daarnaast is het heel makkelijk om van host te wisselen.

GitLive richt zich duidelijk op meer dan enkel pair programming. Ook als je niet samen in een sessie zit, kun je de aanpassingen van je teamgenoten volgen. Daarnaast is het mogelijk om changes van een ander te cherry-picken (afbeelding 9), krijg je een melding bij een conflicterende change en is er integratie met tools als Slack en Jira. Tot slot kun je het delen van je aanpassingen uit zetten, als het Big Brother-gevoel je te veel wordt.

De vele mogelijkheden naast het pair programmen maken GitLive een terechte winnaar van deze etappe.

Afbeelding 9

Eindklassement

Met de vierde etappe kwam er een einde aan de Tour de Remote Pair Programming. De winnaar is GitLive! De plugin werkt prettig en heeft veel extra opties voor teams die op de hoogte willen blijven van elkaars werk. Een nadeel van GitLive is dat enkel personen kunnen deelnemen die toegang hebben tot het project. In veel gevallen zal dit geen probleem zijn, aangezien pair programmen vaak gebeurt met direct collega’s. Loop je hier wel tegenaan? Dan is Code with Me een betere optie.

Er zijn ook nog twee truien te vergeven. De ‘meer dan coderen’-trui gaat naar Screen. Als je niet enkel in een IDE wilt samenwerken, maar ook in een teksteditor of in de browser, dan is Screen de beste optie. Code with Me is de winnaar van de ‘samen debuggen’-trui. Je kunt écht samen debuggen doordat iedereen breakpoints kan zetten, de console kan inzien en toegang heeft tot alle debug-opties.

Uiteindelijk verschilt het per persoon aan welke tool je de voorkeur geeft. Momenteel zijn de tools gratis, maar indien dit verandert kan het je keuze beïnvloeden. Ook de ondersteuning vanuit de werkgever kan een rol spelen. Het belangrijkste is dát je een tool gebruikt die pair programming ondersteunt, zodat we ook in deze tijd blijven samenwerken en van elkaar blijven leren!

 

REFERENTIES

[1] https://www.jetbrains.com/help/idea/code-with-me.html

[2] https://screen.so/#/home

[3] https://www.codetogether.com

[4] https://git.live

 

Kaya Weers, metro, Calco, portret, amsterdam, 15-05-2017, femmy, weijs

BIO

Kaya Weers is software developer bij Ordina en heeft een voorliefde voor de vraag “Waarom?”.