Benefici del Telelavoro

Il Costo delle Distrazioni..

A differenza di altri lavori quello del Programmatore richiede una concentrazione tale che solo l’isolamento raggiungibile con la remotizzazione potrebbe assicurare

Questo mese, su Ironistic.com, è comparso un articolo che mi ha fatto rodere dall’invidia perché, più per sfogo che per altro, da anni l’avrei voluto scrivere io: “The Cost of Distractions on De- velopers!” di Tom Lydon. Dato che la maggior parte del lavoro è già fatta oltre alla traduzione mi limiterò, quindi, ad aggiungere i miei commenti, tecnici e personali..

«Chiunque lavori in un ambiente od in ufficio multitasking ha a che fare con distrazioni quotidiane, e gli sviluppatori non fanno ec- cezione. È noto che le distrazioni siano tra i fattori che contribuisco- no maggiormente ad una riduzione delle prestazioni degli sviluppa- tori.»

Il tipo di lavoro degli Sviluppatori/Programmatori differisce dalla quasi totalità di quelli esperibili in un ufficio: è l’unico tipo di lavoro, a mio avviso, che, nonostante la sua non criticità – non si tratta né di neurochirurgia né di sostenere un attacco aereo alla guida di un aviogetto.. –, richiede un’attenzione davvero prolungata – dozzine di minuti, non minuti –, peraltro su niente di tangibile, bensì sulla correttezza del proprio “progetto mentale” di ciò che deve essere realizzato; la attività di mera scrittura del codice rappresenta solamente la successiva traduzione di quel progetto in qualcosa di eseguibile dal computer, tant’è che a quel punto abbondano i presidii che possono alleviare il labor del programmatore (interfacce grafiche, tool vari, librerie, etc..)..

Per comprendere al meglio come funziona il lavoro del programmatore paragonato a quelli dei suoi vicini (venditori e manager) l’autore suggerisce – e io non posso che condividere, sghignazzando per quanto è vero.. – di leggere: “Programmers, Teach Non-Geeks The True Cost of Interruptions“.

Persino il neurochirurgo ha un cervello da guardare, mentre il pilota dopo pochissimi minuti o è uscito vittorioso dallo scontro – e può inserire il pilota automatico – oppure si è eiettato – e dunque non guida più nulla – od infine è semplicemente morto. Il programmatore, invece, prima, mentre e dopo che ha cominciato a digitare, deve mantenere l’attenzione su qualcosa di intangibile e dunque ancor più complesso e sfuggente..

Differenti livelli di carico di memoria durante le attività di programmazione
in base all’analisi delle espressioni subvocali (Parnin, 2011)

Quando a me capita di venire interrotto da quelle che io chiamo “richieste di interazione” mentre sto progettando la sensazione, di primo acchito, è quella di sentire uno specchio che si infrange, per poi accorgermi che il delicatissimo castello di carte che avevo costruito nelle ultime decine di minuti è stato demolito da un flebile soffio di fiato. Sembrerà letterario ma è proprio così, e colleghi di tutto il mondo danno di eventi come questo descrizioni abbastanza sovrapponibili alla mia..

La Memoria di Lavoro, un tipo di memoria a brevissimo termine

Questo perché, neuropsicologicamente parlando, accade la medesima cosa: il ricco ma “precario” dialogo fra strutture cerebrali della memoria a lungo termine e di quella a breve termine raggiunto grazie a minuti e minuti di crescente concentrazione viene colto, appunto, in tutta la sua precarietà. Il trauma, ancorché temporaneo, ancorché non più grave del sentire una puntina del giradischi che scivola sul vinile – ma della musica che ci stava rilassando.. –, è assicurato.

Le interruzioni occorrenti durante i picchi di carico di memoria provocano i maggiori disturbi
in base alle ricerche effettuate con la pupillometria (Iqbal, 2004)

«Le distrazioni non solo ritardano il completamento delle attività ed aumentano il numero di bug – di errori, ndr – ma possono pure portare ad un aumento dello stress e dei livelli di frustrazione, che possono a loro volta portare ad ulteriori ritardi.. ed in alcuni casi al burnout.»

Tutt’altro che casualmente la ricerca scientifica sulle interruzioni (Interruption Science) individua spesso fra i programmatori (ed affini) il proprio soggetto di studio: per questi ultimi le conseguenze delle interruzioni e delle distrazioni appaiono da sempre come amplificate. E non c’è modo migliore di studiare un fenomeno del partire dai casi in cui questo si dimostra più potente per poi applicare le conoscenze acquisite relative ai suoi meccanismi alle situazioni meno borderline. Va da sé, quindi, che tutto questo discorso vale per i programmatori sempre – tant’è che la patologica frequenza delle interruzioni può portare al burnout – mentre per gli altri tipi di lavori vale tanto quanto sono esposti ad analoghe richieste cognitive.

«Il tempo medio perso è di 23 minuti per le interruzione più gravi, secondo il Wall Street Journal. Ol- tretutto i programmatori possono richiedere 10-15 minuti per ricominciare l’elaborazione del codice dopo la ripresa del lavoro a valle di un’interruzione. Per Game Developer Magazine un programmatore nella me- dia dispone verosimilmente soltanto di una singola ininterrotta sessione di due ore in un giorno».

L’ultima affermazione è quella operativamente più rilevante, in quanto se ne deduce che il vero tempo di qualità nella giornata di lavoro di un programmatore sia limitato a meno della sua metà; la parte restante, in quanto costellata di interruzioni, andrebbe considerata come marginalità rispetto alla prestazione principale richiesta. Sono, tuttavia, le prime due ad offrire una descrizione di quali siano gli effetti delle interruzioni sullo svolgimento di task cognitivamente complessi:

  • Ogni interruzione provoca una perdita di tempo di durata superiore all’interruzione stessa, il che significa pure che se il numero di interruzioni nell’arco della giornata lavorativa raggiunge una massa critica sufficiente la stessa giornata è da considerarsi persa – almeno relativamente alla prestazione originariamente prevista, in questo caso la programmazione..
  • Ciò in quanto ritornare semplicemente alla prestazione non è sufficiente: è necessario pure che vi sia il ritorno allo stato attentivo precedente rispetto all’evento all’origine dell’interruzione, il che richiede tanto tempo quanta è la complessità del compito da svolgere.
Rappresentazione grafica della Curva Attentiva in base ai dati del WSJ e del Game Developer Magazine

«Gli sviluppatori perdono più tempo a tornare al compito rispetto alla norma dei lavoratori, e tanto più a lungo sono stati lontani dal compito, maggiore è il tempo necessario per ritornarvi.»

Sempre per una questione di memoria se l’evento interruttivo eccede una certa durata – non si tratta più di una banale notifica (arrivo di un SMS o di un’email, lo squillo del telefono, etc.) ma di un evento più lungo (i.e. un colloquio, una riunione, etc.) –, anche il (normale ed automatico) tentativo di trattenere fra i pensieri – in una sorta di complesso reharsal – il progetto mentale fallisce e si rende necessario ricominciare tutto daccapo – tant’è che il post successivamente espone vari espedienti per organizzare dettagliatamente il lavoro così da limitare al minimo i danni di tali eventualità..

«La programmazione è più una forma mentis che un’abilità di scrittura. La mente va concentrata del tutto sul compito corrente, va pianificato e prefigurato il prodotto finale ed i risultati desiderati di ciascun metodo e funzione all’unisono con la scrittura del codice ed il testing».

Personalmente non condivido siffatta profonda distinzione tra programmazione ed abilità di scrittura. In entrambi i casi sussiste, infatti, una complessa fase prodromica, propedeutica di tipo ideativo ed il fatto, innegabile, che questa fase sia più impegnativa nella programmazione di certo non rende povera di complessità la progettazione di sequenze di proposizioni, magari assai articolate in subordinate, la costruzione di paragrafi logicamente sostenibili ed in genere la scrittura finalizzata ad un risultato, ad esempio divulgativo.

È altresì esperienza nota per qualunque programmatore, così come per qualsiasi scrittore, che le interruzioni verbali (con un contenuto verbale) provocano un disturbo superiore rispetto a quelle esclusivamente semantiche (i.e. il singolo “ciao” del collega od il breve trillo del cellulare all’arrivo di un messaggio). Ciò accade verosimilmente perché in entrambi i tipi di attività le prime, andando ad interessare lo stesso tipo di memoria (verbale) già occupata, causano un conflitto modale: il “progetto linguistico” – trattasi sempre, infatti, di lingue o linguaggi, con una propria struttura e terminologia.. – in uscita deve lasciare post al “prodotto linguisticoin entrata (da analizzare).

«Tutti ironizzano sul fatto che gli sviluppatori siano dei nottambuli, ma c’è qualche verità in questo. Nel corso degli anni di sviluppo, ho imparato a gestire le interruzioni per necessità. Nei miei primi anni ho trascorso molte tarde notti scrivendo codice, semplicemente perché era il miglior periodo del giorno senza interruzioni che potevo trovare.»

Non c’è solamente «qualche verità» in quest’affermazione: è tutta vera e per la maggior parte dei programmatori, specie quelli impegnati nel realizzare qualcosa di (soggettivamente) complesso. Per costoro spesso la notte è l’unico momento in cui siano disponibili le ore di tranquillità necessarie ad accumulare la concentrazione necessaria ad eseguire l’attività – soprattutto se questa è inerente più la risoluzione di un problema attraverso una ristrutturazione cognitiva che la mera esecuzione di un compito..

Ovviamente c’è un’alternativa al lavoro notturno, per i programmatori così come per tanti altri lavori intellettuali. La remotizzazione – in questo caso il vero e proprio isolamento – del lavoratore, ad esempio, può ridurre all’osso il tasso di interruzioni non programmate, connaturate alla situazione co-localizzata, senza il costo economico o sociale (invidie dei colleghi) dell’individuazione di un locale isolato, un ufficio individuale, nella sede aziendale. Questo almeno fintantoché, ad esempio, non ci sarà qualche automatismoMicrosoft ha cominiciato anni fa a pensare a qualcosa del genere.. – in grado, magari, di limitare tecnologicamente le interruzioni sulla base delle rilevazioni biometriche dello “stato mentale” del lavoratore..

Rappresentazione grafica degli effetti di diversi tipi di interruzione sull’attività

La prima – e più semplice.. – delle soluzioni adottabili è quella di una remotizzazione part-time (verticale), in cui al lavoratore-programmatore è concesso di lavorare più giorni a settimana fuori dall’ufficio – a casa od in qualunque altro luogo in cui poter evitare superflue “richieste d’interazione” dirette –, concentrando negli 1-2 restanti giorni tutte le attività mondane da svolgere in sede. Starà nella determinazione del programmatore, infine, il filtrare opportunamente le eventuali distrazioni provenienti da remoto (telefonate, messaggistica istantanea, contatti in telepresenza, etc.), ovverosia dall’ufficio, così come lo spiegare ai propri congiunti, di certo più ammansibili dei colleghi, il dramma delle interruzioni..