Tag: Multitasking

Il multitasking è la condizione in cui un individuo, similmente ai moderni computer, dovrebbe – e infatti questa possibilità appare abbastanza controversa a seconda delle ricerche – essere in grado di dedicarsi contemporaneamente a più attività.

  • Il Costo delle Distrazioni nella Programmazione

    Il Costo delle Distrazioni nella Programmazione

    Questo mese, su Ironistic.com, è comparso un articolo che mi ha fatto rodere dall’invidia perché, più per sfogo che per altro, da tempo ne avrei voluto scrivere io: The Cost of Distractions on Developers! di Tom Lydon. Posto 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 eccezione. È noto che le distrazioni siano tra i fattori che contribuiscono maggiormente ad una riduzione delle prestazioni degli sviluppatori

    Il tipo di lavoro degli Sviluppatori/Programmatori differisce dalla maggioranza di quelli esperibili in un ufficio: è il solo tipo di lavoro che, nonostante la sua prevalente non criticità – non si tratta né di medicina d’urgenza1 né di sostenere un attacco aereo alla guida di un velivolo! –, 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 solo 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, a iniziare dai venditori ed i manager, l’autore suggerisce – ed io non posso che condividere, sghignazzando per quanto è vero – di leggere: Programmers, Teach Non-Geeks The True Cost of Interruptions.

    — Erik Dietrich (@daedtech) 17 Gennaio 2014

    Persino il neurochirurgo ha dei tessuti da guardare, mentre il pilota dopo pochissimi minuti o è uscito vittorioso dal duello – e può inserire il pilota automatico – oppure si è eiettato – e dunque non guida più nulla – od infine è morto, semplicemente. Il vero 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 venir interrotto da quelle che io chiamo “richieste di interazione2 mentre sto progettando la sensazione, di primo acchito, è analoga all’avere udito uno specchio/vetro infrangersi, 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 ugualmente precario dialogo fra strutture cerebrali della memoria a lungo termine e di quella a breve termine, raggiunto attraverso minuti e minuti di crescente concentrazione, viene colto, appunto, in tutta la sua precarietà. Il trauma, benché temporaneo, ancorché non più grave dell’aver sentito una puntina del giradischi scivolare sul vinile – tuttavia della musica che ci stava coinvolgendo o semplicemente 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 et al., 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 (cd. “Interruption Science“) individua sovente fra i programmatori (et simila) il proprio campione 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 rilievi e 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 una patologica frequenza delle interruzioni è co-fattore tipico dello Stress Lavoro-Correlato (cfr. Basoglu et al., 2009; Fonner & Roloff, 2012) – mentre per gli altri tipi di lavori varrà verosimilmente 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. Oltretutto 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 media 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à in una giornata di lavoro tipo di un programmatore sia limitato a meno della sua metàquantomeno in un contesto co-localizzato; 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’interruzione più lunga (e.g. 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 — sono anni che combatto, da un lato coi miei clienti e dall’altro coi miei discenti e collaboratori, per far passare il duplice concetto, trito e ritrito fra chi si occupa di pianificazione di progetti informatici, per cui, tanto più tardi nello svolgimento ci si accorge di una carenza analitico-progettuale, tanto più ampie ne saranno le conseguenze, temporali e pertanto economiche, e che, quindi, vale assolutamente la pena prolungare l’analisi, anche se ad un osservatore ingenuo potrebbe sembrare una assenza di produzione  — 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 famigliare per qualsiasi programmatore, così come per qualsiasi scrittore, che le interruzioni verbali (con un contenuto verbale) provochino un disturbo superiore rispetto a quelle esclusivamente informative (i.e. il singolo “ciao” del collega od il breve trillo del cellulare all’arrivo di un messaggio), spesso derubricate a notifica neppure prima inter pares. Questo accade verosimilmente perché in entrambi i tipi di attività le prime, andando ad interessare lo stesso tipo di memoria, verbale (Siegmund et al., 2014), già occupata, causano un conflitto modale, e più precisamente una interferenza verbale (Semenza, 1983): il “progetto linguistico” – trattasi pur 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’è soltanto qualche verità in tale affermazione: è tutta vera e per la maggioranza dei programmatori, specie quelli impegnati nel realizzare qualcosa di (soggettivamente) complesso. In una siffatta situazione spesso la notte è il solo intervallo di tempo nel quale siano disponibili le ore di tranquillità necessarie a capitalizzare la concentrazione indispensabile ad affrontare l’attività. Soprattutto se questa è inerente più la risoluzione di un problema attraverso una ristrutturazione cognitiva (il cd. “Effetto Eureka“) che la mera esecuzione, algoritmica, di una sequenza di compiti.

    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ò minimizzare il tasso di interruzioni non programmate, connaturate alla situazione co-localizzata, senza il costo economico o psicosociale (e.g. le invidie dei colleghi) del conferimento di un locale isolato, un ufficio individuale, nella sede aziendale. Questo almeno fino a quando, per esempio, non ci sarà un qualche automatismoMicrosoft ha iniziato anni fa a pensare a qualcosa del genere… – in grado, magari, di contingentare tecnologicamente le interruzioni in base a delle rilevazioni biometriche dello “stato mentale” attuale 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 nel quale poter evitare superflue “richieste d’interazione” dirette –, concentrando negli 1-2 restanti giorni tutte le attività mondane e la programmazione di routine da svolgere, invece. in sede. Starà nella determinazione del programmatore, infine, filtrare opportunamente eventuali distrazioni provenienti da remoto (telefonate, messaggi istantanei, contatti in telepresenza, etc.), ovverosia dall’ufficio, così come spiegare ai propri congiunti, sperabilmente più ammansibili dei colleghi, il dramma delle interruzioni…

  • Time Tracking (individuale e di gruppo)

    Time Tracking (individuale e di gruppo)

    Nella mia (quota di) attività come formatore mi capita sfortunatamente di rado di insegnare Outlook, che reputo la migliore applicazione che Microsoft – come sempre acquisendola da altri.. – abbia inserito in Ms. Office: nonostante gli apprezzabili tentativi di Evolution Microsoft Outlook insiste ad essere il solo ed unico strumento della suite non sostituibile con alternative open (LibreOffice ed OpenOffice), neppure se preso standalone – se usato unitamente a Ms. Exchange diventa proprio una “cannonata“..!

    Ciò che gl’ιδιώται (la committenza, chi finanzia e in primis chi progetta i corsi) in buona fede trascurano pensando ad Outlook, motivo per cui i corsi sono rari e spesso e volentieri troppo superficiali e spicci,  è che questa applicazione non serve solamente a gestire la posta elettronica – altrimenti basterebbe Windows Mail (ex Outlook Express) od un qualunque altro client – ma a gestire talmente tante altre cosucce in ufficio che, se impiegata in maniera abbastanza consapevole, potrebbe determinare significative riduzioni delle tempistiche di attività (tempo per compito).

    Microsoft Outlook – Journal

    Microsoft Outlook – Journal

    Una di queste cosucce riguarda il tracciamento del tempo impiegato a svolgere una specifica attività (“Task), persino estemporanea e/o di breve durata (“Micro-Task“). Con Journal, infatti, chi usa Outlook può registrare i momenti di inizio e fine di una microattività semplicemente pigiando su dei pulsanti del tipo Start, Pause (e Stop), ottenendo la durata complessiva della stessa. Una funzionalità a dir poco banale, dunque..! Tanto banale che, come sovente capita, prelude a significativi benefici…

    Journal, infatti, oltre al tracciamento quantitativo, permette di fare tre fondamentali associazioni di tipo qualitativo:

    • La data dell’attività, corrispondente o meno ad una di quelle elencate nella Gestione Attività di Ms. Outlook e comunque utile per se nella rilevazione cronologica, anche manuale — ad esempio recuperare, anche a latere, tutte le email del periodo per effettuare un’ultima ricognizione —, di quanto lavorato;
    • La tipologia/natura dell’attività: il fatto che Outlook presenti fra le opzioni predefinite la “Phone Call” dovrebbe essere sufficientemente suggestivo del livello di dettaglio raggiungibile nel tracciamento;
    • Il cliente (“Company“)1 per il quale essa viene svolta, che, a sua volta, può essere pescato fra i Contatti.

    La conseguenza di queste associazioni è che, a fine mese – momento di preparare le fatture o semplicemente uno “Stato di Avanzamento Lavori” (SAL) –, sarà possibile riportare che, per lo specifico cliente, saranno state svolte, per esempio…

    • 11 ore e 42 minuti di telefonate;
    • 35 ore e 17 minuti di elaborazione documenti;
    • 7 ore e 59 minuti di riunioni…

    …per un totale di 54 ore e 58 minuti fatturabili, e così via, per ciascun cliente.

    Tenendo presente che le registrazioni possono essere salvate anche manualmente a posteriori è, dunque, possibile, avere traccia delle tempistiche raggiunte per tutte le attività. Queste, infine, possono essere usate direttamente da chi ha effettuato le registrazioni oppure passatecome allegato email in assenza di Ms. Exchange2 – a chiunque debba elaborare la relativa fatturazione.

    Si tratti, quindi, di un individuo – un lavoratore autonomo, un libero professionista ma pure il semplice subordinato – o di un gruppo di lavoro, in una situazione co-localizzata come in una di “lavoro distribuito” – o, banalmente, di un rapporto fra fornitore (esterno) e beneficiario di servizio – il tracciamento, al minimo dettaglio, sarà assicurato…

    Senonché Journal offre una ulteriore possibilità, coerente con l’intenzionale intregazione con le altre applicazioni di Ms. Office, ossia l’associazione con singoli documenti, così da tracciarne totalmente in automatico l’elaborazione: è sufficiente importare nella finestra della singola attività l’icona del relativo documento e, da quel momento in poi, sarà lo stesso Ms. Outlook a monitorarne costantemente il cd. Total Editing Time.3

    Insomma.. Un servizio completo, manuale, semi-assistito o completamente automatico per controllare la gestione economica non soltanto del proprio lavoro ma anche di quello altrui, ad esempio nel ruolo di project manager.

    Tanto che oserei dire che se Microsoft offrisse (gratuitamente) alle aziende una licenza di Ms. Exchange ogni TOT licenze di Ms. Outlook contrasterebbe significativamente le fughe verso applicazioni open.

    Mio progetto di interfaccia grafica per applicazione Web Based di Time Tracking (2005-2006)

    Mio progetto di interfaccia grafica per applicazione Web based di Time Tracking (2005-2006)

    Lo dimostra anche il fatto che dall’epoca – tali funzionalità di Ms. Outlook sono presenti da almeno una decade! – le soluzioni alternative, capaci di emulare il ruolo di Ms. Exchange nella condivisione, a livello organizzativo, del Time Tracking di Ms. Outlook sono andate accumulandosi, persino in funzionali quanto ancor più distribuite – a vantaggio della gestione del Telelavoro dei Team Virtualivarianti online.

    Una di queste è Toggl.com. Ecco il post scritto ieri da me per Blog.Pmi.it.

    Toggl, il Time Tracking per tutti

    Fra gli strumenti di Time Tracking, per tenere traccia del tempo speso su singoli task (e quindi anche su interi progetti), sicuramente uno dei più accessibili e versatili è quello offerto da Toggl.com, che si differenzia da altri servizi online (i.e. Beebole, FreshBooks, Harvest o myHours.com) per i pochi fronzoli con cui svolge, egregiamente, la sua funzione. Toggl.com è dedicato a gruppi di lavoro anche minuscoli – esiste persino un account gratuito per singoli professionisti, mentre per le soluzioni “pro” si parte dai 5 dollari al mese – gestiti da un amministratore, che può definire diversi Clienti e, per ciascun cliente, diversi Progetti; in ogni progetto, poi, possono essere definite diverse Attività  (Task) – discriminando fra fatturabili e non – che possono a loro volta essere attribuite a questo o quell’altro membro del team.

    La vera forza di Toggl.com, oltre alla semplicità , risiede nella sua estrema accessibilità : è possibile inserire i dati sull’avvio e chiusura di un’attività  – il funzionamento è uguale alle Voci Diario di MS Outlook, con uno “Start”, uno “Stop” ed un contatore – sia nell’interfaccia Web che, attraverso dei widget – sul desktop del computer (Win, Mac & Linux) o dello smartphone (iOS, Android), per poter fare Time Tracking anche scorrazzando qua e là.

    Nel sinottico delle rilevazioni, Toggl.com consente all’amministratore di avere costantemente sotto mano il polso della situazione, lasciandogli decidere con quale prospettiva osservare ciò che viene svolto dal team: per progetto, per cliente, per membro (del team) o, più semplicemente, per intervallo di tempo, personalizzabile al massimo; il tutto condito con una buona dose di grafici per ottenere il giusto colpo d’occhio.

  • Home Sweet Home..

    Pare che stiano volgendo ad “un” termine – chiunque sa bene che non si finisce mai davvero.. – i lavori di ristrutturazione della mia casa iniziati nell’estate del 2008. Tralasciando qualche piccolo intervento qua e la il solo vano che, vuoi per l’impegnativo 2008, vuoi per gli incasinati 2009-2010, è evidentemente ancora impreparato e disadorno è lo studio/ufficio. Il ritorno ad una situazione meno caotica e più produttiva, quindi, sarà preceduto dal ri-imbastimento di quello che fino a due anni fa era il mio vero centro operativo – va detto: da programmatore..

    Progetto nuovo ufficio domestico - Davide Cappelli

    Progetto nuovo ufficio domestico

    (altro…)

  • Imbastire una Workstation Domestica

    Una premessa: questa non vuole essere una guida buonista – fra le tante..! – in cui si spiega come ricavare in un’abitazione, sia essa un appartamento od una villa, uno spazio dove potere lavorare coniugando obblighi personali e professionali. Questa vuole essere una guida cattiva, prevalentemente tecnica, dalla quale trarre spunti per realizzare, ma senza svenarsi, una vera e propria Stazione di lavoro, affidabile e soprattutto versatile. (altro…)