Condividi su:

Come migliorare l’efficienza e la produttività dell’AREA 51, di questi tempi…

In ORBYTA, in questo periodo di lavoro remoto del team di sviluppo, abbiamo recentemente introdotto una modalità di pair-programming per mezzo di strumenti di collaborazione real-time. I risultati ottenuti sono quelli di aver prodotto sessioni di programmazione più attente, una collaborazione più semplice e un migliore lavoro di squadra nel suo insieme. Nelle righe di questo articolo cercheremo di esporre le nostre considerazioni a riguardo e il bagaglio di esperienza che potremo portare con noi ad emergenza finita.

Live Share: la funzionalità che rende possibile la magia 

Alcuni strumenti integrati di sviluppo, come VS Code e Visual Studio .net 2019, forniscono estensioni per consentire la collaborazione di codice in tempo reale. La funzionalità in questione si chiama “Live Share”. Per mezzo di Live Share ci si può collegare ad una sessione di collaborazione e modificare gli stessi file in tempo reale, proprio come è possibile editare un documento di testo in maniera collaborativa con Google Docs.

Per mezzo di questa estensione è possibile partecipare al lavoro del collega, suggerire modifiche, intervenire, osservare il cursore, la selezione e tutto ciò che le altre persone stanno digitando.

Schermata di VS Code in Live Share
Schermata di VS Code in Live Share

Pair-programming in ufficio e in remoto

In tempi differenti, il team di sviluppo era solito effettuare sessioni di pair-programming in cui 2 sviluppatori potevano condividere una postazione di lavoro e si alternavano alla tastiera per effettuare task particolarmente complicati, refactoring, progettazione di componenti e revisione di codice.
Non potendo più usufruire del nostro ufficio, ci siamo trovati nella condizione di dover estendere questa pratica di lavoro anche lavorando da remoto.

In principio, come tutto il mondo, abbiamo fatto uso massivo di sessioni di condivisione schermo con i nostri canali di comunicazione, che vanno da Microsoft Teams, Hangouts, Cisco Webex, Skype per mezzo di call con condivisione schermo. Dopo i primi giorni in cui lo slancio generale era maggiore, questa modalità ha evidenziato alcune problematiche che ci hanno spinto a provare vie differenti.

Live Session in VS Code
Live Session in VS Code

Di seguito proveremo a riassumere alcuni degli aspetti positivi rilevati utilizzando Live Share in luogo di una semplice condivisione schermo.

1. Aumenta il coinvolgimento e aiuta a mantenere l’attenzione

Quando si fa pair-programming, di solito si finisce per avere una persona che scrive tutto il codice (il “driver”) e l’altra che discute delle scelte di implementazione, dando suggerimenti (il “navigatore”). Ma è difficile per questa persona rimanere concentrati dopo poche ore. Soprattutto dopo che l’attività è stata chiaramente definita e tutto ciò che resta da fare è scrivere il codice.
È ancora più difficile quando lavori in remoto, perché perdere la concentrazione durante un Hangouts o Teams è molto facile.

Live Session in Visual Studio .net 2019
Live Session in Visual Studio .net 2019

Quando il livello della comunicazione decade si è costretti ad interrompere la programmazione, dividere il lavoro o scambiarsi di ruolo o … lasciare addormentare la persona che non fa nulla. La cosa eccezionale della collaborazione live è che ciò non accade facilmente. Dato che state modificando entrambi lo stesso codice in tempo reale, è possibile accedere rapidamente al codice sorgente.

Durante una sessione di Live Share è anche possibile suddividere le attività, senza interrompere la programmazione in coppia, il che è più semplice e rende immediata la sincronizzazione del codice, non necessitando differenti push di codice. Ciò, infatti, evita conflitti sullo strumento di controllo della versione quando si lavora sulla stessa funzionalità. Il codice sorgente modificato risulta essere solo quello dell’utente che avvia la sessione di condivisione.

2. Migliora la comunicazione

In sessioni di condivisione schermo ci si ritrova quasi sempre a dettare il codice al collega, a provare a spiegare qualcosa senza riuscirci facilmente. Con la collaborazione live, non è necessario farlo: puoi semplicemente digitarlo, il che ti farà risparmiare innumerevoli “Non l’ho capito” o “Potresti inviarmelo in chat?”.

3. Permette collaborazione ed esplorazione

Di solito è difficile partecipare a una sessione di programmazione in coppia in corso: è necessario comprendere l’attività, riconoscere cosa è stato fatto, cosa è rimasto da fare e come vengono costruite le cose.

Quando si partecipa a una sessione di collaborazione live, d’altra parte, è possibile impiegare del tempo per esplorare e comprendere da soli, senza dover interrompere gli altri programmatori. Abbiamo trovato che ciò è particolarmente utile, perché è anche un buon modo per avere un’opinione esterna su qualcosa senza ottenere spiegazioni forse distorte. E se vuoi che i tuoi colleghi ti diano una presentazione, c’è una modalità presentatore che seguirà il cursore del presentatore. Un bel modo di mostrare la tua idea.

4. Rimani nel tuo ambiente di sviluppo preferito 

Quando lavori in coppia alla postazione di un collega sei costretto ad usare un ambiente di sviluppo, tema, snippets, estensioni, colori di sistema, tastiera e mouse a cui non sei abituato e che ti rallentano nel lavoro. Con Live Share puoi saltare direttamente all’attività senza dover decifrare la strana configurazione di Visual Studio o utilizzare il mouse verticale che non sai minimamente utilizzare.

5. Riduce le distanze e il senso di alienazione

Poter lavorare sullo stesso task o su funzionalità differenti in contemporanea, con uno dei due che scrive la parte di test automatici o effettua una verifica in tempo reale del tuo codice, permette ai componenti del team di sentirsi sempre parte del progetto, meno soli e alienati dal mondo esterno, a cui si era soliti appartenere. Lo sviluppo del codice di test in pair-programming consente, oltretutto, di verificare se entrambi hanno capito il compito allo stesso modo e hanno pensato agli stessi casi limite o alle stesse scelte progettuali. È anche un modo per attenuare il disagio che l’attuale processo di lavoro oggettivamente comporta.

Configurazione e condivisione

Cosa bisogna fare per provare Live Share? È possibile farlo per mezzo di Visual Studio 2019, senza dover installare estensioni o anche utilizzando VS Code e l’estensione Live Share.

VS Code

In VS Code sarà sufficiente installare l’estensione VS Code Live Share, aprire un progetto e cliccare sul link per condividere una sessione di codice.

Installazione di Live Share Extension per VS Code
Installazione di Live Share Extension per VS Code

Di seguito la schermata di benvenuto di Live Share con la descrizione di tutte le funzionalità.

Funzionalità di Live Share Extension per VS Code
Funzionalità di Live Share Extension per VS Code

Una volta generata la sessione, l’utente destinatario riceverà un link che potrà utilizzare per accedere anche lui alla sessione.

Schermata di condivisione link di sessione di Live Share
Schermata di condivisione link di sessione di Live Share

Oltre che condividere il codice, in VS Code, è possibile aprire un terminale condiviso, disponibile per tutti nella sessione. Questo è utile per lanciare comandi, eseguire test quando non si è host, perché non hai i file sorgente sul tuo computer.

In VS Code, puoi anche avviare una chat vocale da una sessione di collaborazione e hai una chat di testo. Quindi è superfluo utilizzare altre applicazioni per comunicare a voce.

E qualcosa rimane

In questa situazione globale in cui ci troviamo, per un motivo o per un altro, il numero, la frequenza delle chiamate, delle sessioni video è aumentato a dismisura. Non altrettanto questo sta influenzando positivamente la produttività dei team di sviluppo. Col passare dei giorni, poi delle settimane, quella sorta di slancio legato alla nuova modalità di lavoro da remoto si è senza dubbio affievolita. Sta nascendo, però, la consapevolezza che un modo nuovo di lavorare è necessario oggi, ma lo sarà ancor di più nelle fasi successive di questa nostra epoca.

Dobbiamo consolidare e possibilmente migliorare questa nuova modalità di fare gruppo, essere efficienti e produttivi, anche se solo fisicamente distanti. Restiamo uniti… anche in Live Share.

Daniele Sabetta

CTO of ORBYTA

Chief Technical Officer

#jointherevolution