Pair Programming met Visual Studio Live Share: waarom we hier fan van zijn

Blog

Door de COVID-lockdown werken bijna alle developers vanuit huis. Hoewel we veel communicatiemiddelen hebben om met elkaar in contact te blijven, ging het samen programmeren (“pair programming”) toch niet zo soepel als ik zou willen.

Voor niet-ingewijden: pair programming is de werkwijze in softwareontwikkeling waarbij twee ontwikkelaars achter een enkele computer aan een stuk code werken. We doen dit omdat we vaak betere oplossingen bedenken wanneer gezamenlijk verschillende opties bespreken en uitproberen. Door deze uitwisseling van ideeën verbeteren we niet alleen de kwaliteit van code, maar ook de interpersoonlijke dynamiek. Én we investeren we in betere kennisdeling.

Afgezien van pair programming, vragen professionele ontwikkelaars ook vaak anderen om feedback of een beetje ondersteuning als ze ergens mee bezig zijn waar ze minder bekend mee zijn. In een kantooromgeving zou je af en toe een collega vragen om over je schouder mee te kijken en te helpen een stukje code te analyseren waar je moeite mee hebt. Vaak kunnen collega’s dan de hiaten in je kennis opvullen of helpen om op een nieuwe manier over het probleem na te denken. Andere keren helpt alleen al het uitleggen van het probleem me om een stap terug te doen en het probleem anders te bekijken (ook bekend als Rubber Duck Debugging).

Als je bij elkaar op kantoor zit, werkt dit uitstekend. Op afstand was dit een uitdaging. De standaard communicatiemiddelen hebben allemaal hun voor- en nadelen:

  • E-mail
  • Chatten
  • Telefoon
  • Videobellen

E-mail is geweldig voor het verzenden van hele brieven waarin een bepaald probleem wordt beschreven. Het maakt het ook mogelijk om documenten bij te voegen; of het nu screenshots of stukjes code zijn. Discussies kunnen van een thread worden voorzien om gerelateerde communicatie bij te houden zodat je gemakkelijk kunt terugzoeken. Het grootste nadeel van e-mailen is echter dat het even kan duren voordat je antwoord krijgt: je bent afhankelijk van een antwoord van de ontvanger wanneer het hem of haar uitkomt. Ik heb bijvoorbeeld mijn e-mailclient niet de hele tijd open: ik check mijn mail maar twee of drie keer per dag, zodat ik me kan concentreren op het programmeren in Visual Studio. Een heel verhaal typen om je probleem uit te leggen kan soms ook lastig zijn, vooral wanneer de code voortdurend evolueert en de bijgevoegde code mogelijk niet eens werkt tegen de tijd dat de ontvanger er naar kijkt.

Als alternatief voor e-mail kunnen teamgenoten door te chatten via Slack, Microsoft Teams of vergelijkbare apps sneller verbinding met elkaar maken. De communicatie is direct en men kan op dezelfde manier documenten met elkaar delen. De toevoeging van aanwezigheidsindicatoren (groen = beschikbaar, geel = afwezig, rood = bezet) zoals in Microsoft Teams helpt de communicatie te vergemakkelijken zonder elkaar te veel te storen. Net als bij e-mail is het echter niet eenvoudig om je probleem volledig te communiceren, maar de onmiddellijke reactie kan helpen om het sneller te beperken.

Soms is het beter om gewoon te bellen. Met een eenvoudig telefoongesprek kun je vrijer praten en vaak is het ook sneller en efficiënter dan wanneer je alles moet uittypen Het nadeel is natuurlijk dat beide partijen niet hetzelfde referentiekader hebben: beide partijen zouden elkaar moeten vertellen waar de code of een paragraaf in een document te vinden is. Wij merken dat we meestal toevlucht nemen tot het delen van de documenten of screenshots via een chat of e-mail om tijdens het telefoongesprek te illustreren waar we het over hebben.

Gelukkig combineert videobellen zoals met Microsoft Teams veel van de voordelen van de bovenstaande vormen van communicatie. Men kan zijn computerscherm delen (en zelfs de controle over je scherm doorgeven aan de collega), een spraak- en videogesprek voeren en de nodige bestanden delen. Toch heeft ook deze vorm van communicatie zijn grenzen. Ten eerste leent de kwaliteit van de verbinding zich niet altijd voor een videokwaliteit die fatsoenlijk genoeg is om gedetailleerde tekst zoals code te verzenden. Een ander probleem dat men kan tegenkomen is dat wanneer een partij een hoge resolutie heeft zoals een 4K- of WQHD-scherm en deze deelt met iemand die op een HD 15” laptopscherm werkt de tekst ook onleesbaar wordt. Ten slotte, wanneer ontwikkelaars hun Visual Studio met beheerdersrechten draaien (bijvoorbeeld bij het debuggen van een door IIS gehoste oplossing), kan de andere partij de controle niet overnemen. Navigeren door de call-stack of het zetten van breakpoints of watches zijn dan moeilijker te coördineren.

Was er maar een betere manier…

Tools voor samenwerken op afstand bestonden natuurlijk al. Velen van ons zijn gewend geraakt aan Google Docs, Microsoft 365 en SharePoint. Meerdere mensen kunnen dan tegelijkertijd een document als een spreadsheet bewerken. Alleen de gegevens werden onderling gedeeld, hun schermindelingen zijn van henzelf.

En daar is de LiveShare-extensie van Microsoft voor Visual Studio

In 2019 bracht het Visual Studio Code-team een uitbreiding uit op de platformonafhankelijke IDE, waarmee ontwikkelaars hun ontwikkelervaring rechtstreeks via internet konden delen. Het werd al snel standaard geïnstalleerd in VS Code en als een optionele download voor gebruikers van Visual Studio voor Windows 2017. We gingen er meteen mee aan de slag, experimenteerden ermee en moedigden teamgenoten aan om het ook te gebruiken. De enige uitdaging was het overtuigen van deze teamgenoten om nóg een extensie voor Visual Studio te installeren. We waren dan ook blij dat bij de lancering van Visual Studio voor Windows 2019 de LiveShare-extensie standaard al meegeleverd werd.

De extensie heeft een aantal geweldige functies:

  • Live bewerken: Schrijf en bewerk code samen in realtime
  • Focus en volg: Vestig de aandacht op uw cursor of volg anderen wanneer zij navigeren
  • Geïntegreerde audiogesprekken: Communiceer met anderen via spraak vanuit de IDE
  • Groepsfoutopsporing: Stel breakpoints in en loop samen door de code
  • Gedeelde servers: Web-apps en databases bekijken zonder poorten bloot te stellen aan het internet
  • Gedeelde terminal: Voer commando’s en taken uit, waarbij de uitvoer naar teamleden wordt gestreamd
  • Gestreamde ervaring: De IDE-ervaring wordt gestreamd, genodigden hebben geen kopie van de code nodig

Toen Nederland in maart 2020 in lockdown ging en alle kantoren werden gesloten, heeft onze collega eindelijk van de gelegenheid gebruik gemaakt om zijn team te overtuigen om LiveShare te proberen. Het bleek een geweldige match te zijn. Het stelde hen in staat om effectiever te zijn in de communicatie: ze waren veel productiever!

Ze konden naar dezelfde code kijken, terwijl ze onze eigen schermresolutie of kleurenschema gebruikten, samen debuggen en de werking van de code inspecteren terwijl deze werd uitgevoerd.

Vooral in gevallen waarin onze collega vastzat op een stukje code en een collega nodig had om virtueel over zijn schouder mee te kijken, was de LiveShare-extensie een zegen. Hij kon zijn applicatie lokaal uitvoeren, een breakpoint instellen en bespreken wat de applicatie aan het doen was terwijl hij hem zag draaien. Zijn teamgenoot kon dan de “stack trace” manipuleren, een “watch” instellen, enz. om het probleem te diagnosticeren of te helpen nadenken over het probleem. Gesprekken die vroeger 30 minuten of langer duurden, duurden nu minder dan 10. Iedereen kon sneller terug naar de eigen werkzaamheden zonder hun respectievelijke Visual Studio-ontwikkelomgevingen te verlaten.

Veel gebruiksscenario’s

Het belangrijkste voordeel van het gebruik van Visual Studio LiveShare is voor ons dat de ontwikkelaars in hun belangrijkste tool kunnen blijven: je hoef Visual Studio nooit te verlaten. Als je het veel afleiding hebt, sluit je Microsoft Outlook en Teams af om je op code te concentreren.

Met LiveShare als extensie in zijn Visual Studio-omgeving kan onze collega gemakkelijk een collega uitnodigen om hem te helpen, of hij kan snel reageren als zij een vraag aan mij hebben.

LiveShare zorgt voor zo’n rijke samenwerkingservaring dat je het ook kunt gebruiken voor een verscheidenheid aan code-werkzaamheden:

  • Realtime pair programming op afstand: Gezamenlijk programmeren en/of code-analyse
  • Code reviews: Op afstand code lezen en bespreken
  • Technisch sollicitatiegesprek: Kijk hoe een kandidaat een technische taak voltooit in hun IDE en bespreek hun aanpak
  • Code-bootcamps: Presenteer voorbeeldoplossingen aan de deelnemers, navigeer door code en toon werkende applicaties
  • Technische workshops: Laat een workshopdocent virtueel over de schouder meekijken en cursisten verder op weg helpen

Zoals je misschien al geraden hebt, zijn wij fan van deze tool. Het heeft onze collega in staat gesteld om effectiever samen te werken met zijn teamgenoten en heeft ook geholpen om met de gedeelde kennis van de code van ons project te verbeteren.

Nu de extensie is ingebouwd in zowel Visual Studio Code als Visual Studio voor Windows 2019, is er geen beter moment dan nu om te zien hoe het je ontwikkelteam kan helpen om op afstand samen te werken! En mochten wij je kunnen helpen bij het inzetten van deze tool en/of het uitrollen ervan, dan horen we het natuurlijk graag. Onze .NET experts staan er klaar voor!

Deel deze pagina:

Heb je vragen over dit onderwerp of zou je één van onze experts willen inhuren voor een vergelijkbare opdracht?

Neem contact met ons op

Lees ook onze andere berichten

Heb je een .NET expert nodig?

Neem contact met ons op

Wil je weten waar wij goed in zijn?

Ontdek onze expertises
Cookies beheren