La frammentazione del lavoro nello sviluppo software con i dati d’interazione

Lo sapevi che dopo un’interruzione, per gli sviluppatori è più difficile portare a termine le attività interrotte?

I software developers trascorrono una parte considerevole del loro tempo lavorativo nell’ambiente di sviluppo integrato (IDE) e nelle applicazioni che supportano lo sviluppo (ad esempio, Skype, Microsoft Teams) per discutere con i colleghi e nel browser per consultare la documentazione o i siti web di domande e risposte (ad esempio, Stack Overflow).
Tuttavia, non tutte le applicazioni utilizzate durante l’orario di lavoro sono legate al lavoro, infatti gli sviluppatori possono consultare anche altre applicazioni (ad esempio, le app di messaggistica) e siti web (ad esempio, i social network) che possono causare interruzioni e quindi una perdita di concentrazione.

Secondo alcuni studi, esistono due tipi fondamentali di interruzioni:

  • Interruzioni esterne, cioè quelle che derivano da eventi nell’ambiente, come lo squillo del telefono, l’ingresso di un collega in ufficio o un avviso di posta elettronica.
    Interruzioni interne, cioè quelle in cui si interrompe un’attività di propria volontà.

Queste interruzioni possono verificarsi frequentemente, causando una perdita di concentrazione che influisce negativamente sulla produttività. Questo fenomeno è chiamato frammentazione del lavoro e, con la crescente adozione dei social media e delle applicazioni di messaggistica, sta diventando molto comune nello spazio di lavoro. Possiamo pensare alla frammentazione del lavoro come a un’interruzione dell’attività lavorativa continua. Se il lavoro è molto frammentato, gli sviluppatori dedicano meno tempo a un compito e la frammentazione comporta un maggior numero di interruzioni.

Nella pubblicazione “An empirical study of work fragmentation in software evolution tasks” l’autore ha osservato che la frammentazione del lavoro è correlata a una minore produttività. Hanno considerato il tempo trascorso fuori dall’IDE come un’interruzione del flusso di lavoro di sviluppo e hanno notato che quando gli sviluppatori sono fuori dall’IDE e poi tornano a scrivere codice, hanno bisogno di un po’ di tempo per riprendere il loro lavoro (circa 25 minuti in media). Inoltre, dopo l’interruzione, gli sviluppatori trovano più difficile portare a termine le attività interrotte, che alla fine richiedono più tempo per essere completate.

Possiamo scomporre le attività dell’IDE nelle seguenti categorie distinte:

  • Comprensione è l’attività in cui lo sviluppatore ispeziona il codice per comprendere il programma;
  • Modifica è l’attività in cui lo sviluppatore passa il tempo a modificare il codice sorgente;
  • Navigazione è il tempo speso per navigare tra le entità del software come classi, metodi e pacchetti;
  • Interazione con l’interfaccia utente (User Interface Interaction) è l’attività esplicitamente dedicata a smanettare con l’interfaccia utente dell’IDE.

Sono stati presentati diversi studi sull’estrazione dei dati di interazione, ma solo pochi di essi caratterizzano il tempo trascorso al di fuori dell’IDE. Tuttavia, poiché il lavoro degli sviluppatori potrebbe non essere svolto esclusivamente nell’IDE, c’era la necessità di tracciare e caratterizzare le attività che avvengono al di fuori di esso per capire se sono legate al lavoro e quindi produttive o se non sono legate al lavoro e quindi potrebbero rappresentare delle interruzioni.
L’obiettivo dello studio condotto per l’USI (Università della Svizzera italiana) è duplice: Primo, costruire un approccio che integri la registrazione dei dati di interazione IDE con le attività svolte al di fuori dell’IDE. In secondo luogo, fornire una piattaforma di analisi che gli sviluppatori possano utilizzare per capire come trascorrono il loro tempo e migliorare la loro produttività ragionando sulle loro abitudini di lavoro.
Come fonte per i dati di interazione all’interno dell’IDE è stato utilizzato ed esteso Tako, un plugin IDE che raccoglie, aggrega e visualizza i dati di interazione per Visual Studio Code (VSC). Per caratterizzare e classificare il tempo trascorso al di fuori dell’IDE, è stato implementato un approccio per registrare l’utilizzo delle applicazioni nel tempo, cioè quale applicazione è in primo piano in un determinato momento, così come i siti web visitati. Per tenere traccia dell’applicazione in primo piano, è stato costruito uno strumento che monitora queste informazioni a livello di sistema operativo. Sono stati registrati anche gli eventi relativi all’apertura e alla chiusura delle applicazioni o al cambio dell’applicazione in primo piano.

Per registrare le visite ai siti web è stata realizzata un’estensione del browser in grado di tracciare la cronologia di navigazione dello sviluppatore. Il plugin estrae informazioni sull’URL, il timestamp in cui si è verificato l’evento, il titolo della pagina e se la pagina è stata aperta, chiusa o modificata al timestamp specificato.
Al giorno d’oggi la privacy sul lavoro è importante. La mancanza di privacy nell’ambiente di lavoro di un dipendente può ostacolare il senso di autonomia di un lavoratore, diminuendo il controllo sul suo ambiente di lavoro e causando un calo della sua produttività. Per questi motivi, nel corso dello studio si è deciso di preservare la privacy non condividendo i dati raccolti e quindi conservandoli a livello locale.
Infine, è stata proposta una piattaforma di analisi dei dati di interazione registrati all’interno e all’esterno dell’IDE, che consente allo sviluppatore di analizzare le proprie sessioni per mezzo di visualizzazioni interattive dei dati. Si è deciso di utilizzare la visualizzazione dei dati perché consente la comprensione e l’esplorazione dei dati, permettendo all’utente di confermare le ipotesi, individuare i modelli e i valori anomali.

La piattaforma di analisi dei dati fornisce due funzioni principali:

  • Global digest che aiuta gli sviluppatori a riflettere su come trascorrono il loro tempo durante la settimana, fornisce informazioni generali su tutte le sessioni raccolte e può essere utilizzato per capire quali applicazioni e siti web hanno un impatto maggiore sulle interruzioni;
  • Single session digest che consente agli sviluppatori di riflettere sulla loro produttività in una singola sessione registrata, ad esempio analizzando le applicazioni e i siti web più utilizzati, osservando la sequenza dettagliata delle azioni eseguite all’interno e all’esterno dell’IDE e i passaggi più frequenti (passaggio da un’applicazione all’altra).
global digest evaluation
Img 1: Digest globale che mostra una rappresentazione visiva di circa 1 giorno e 19 ore di dati registrati.

timeline long interruption

Img 2: Esempio di visualizzazione di una singola sessione (timeline) che mostra l’impatto di lunghe interruzioni. Possiamo notare che l’interruzione causata da un’app di messaggistica (Whatsapp) ha causato una perdita di concentrazione. Se osserviamo i dati registrati dall’IDE, possiamo notare che l’interruzione ha avuto un impatto sul rapporto di modifica (linee rosa).

chord focused

Img 3: Esempio di visualizzazione di una singola sessione (chord diagram) che mostra una sessione focalizzata. In effetti, possiamo notare che i passaggi da un’applicazione produttiva a un’applicazione che potrebbe creare un’interruzione sono quasi assenti.

Come valutazione qualitativa di questo approccio è stato dimostrato, attraverso una serie di sessioni reali di sviluppatori, come FERAX possa aiutarli a capire come spendono il loro tempo durante il lavoro e a dare allo sviluppatore una coscienza sulle abitudini di lavoro non ottimali. Dopo aver analizzato i dati registrati con gli sviluppatori, sono state identificate alcune sessioni che mostrano l’impatto delle interruzioni (ad esempio, i social network) sul flusso di lavoro e altre sessioni che sono più produttive.