Viaggio nella terra dei bias. E non vale solo per gli ingegneri del software

scritto da il 24 Febbraio 2023

Post di Salvatore Cordiano, Engineering Manager presso Facile.it e corsista EMBA Ticinensis – 

Siamo esseri umani. Nella vita di tutti i giorni, ci troviamo spesso a confrontarci con bias cognitivi di cui non ci rendiamo conto. Il fatto stesso di non rendersi conto dei bias è stato definito come “il bias dentro il bias”[1], anche noto come blind spot bias.

I bias affliggono tutti gli esseri umani, ma in questo articolo scopriremo alcuni dei bias più diffusi[2] tra i software engineer (SWE), attraverso un breve viaggio nella quotidianità lavorativa di uno sviluppatore. Nelle storie che seguono ogni riferimento a persone esistenti o a fatti realmente accaduti è puramente casuale.

Prima di proseguire, proviamo a chiarire bene che cos’è un bias. Partiamo da un esempio.

Ti è mai capitato di avere una forte convinzione su un argomento e utilizzare Google per cercare articoli o video a supporto della tua tesi? Se la risposta è sì, allora sei stato vittima del confirmation bias.

bias

Il confirmation bias rappresentato da Kristofer Straub (chainsawsuit.com)

Prima di definire il confirmation bias, facciamo un passo indietro per capire bene che cos’è un bias.

Bias è l’abbreviazione di cognitive bias o pregiudizio cognitivo. Questa espressione fu coniata all’inizio degli anni ‘70 da Amos Tversky e Daniel Kahneman per indicare “modelli sistematici di risposta delle persone ai problemi di giudizio e di decisione presumibilmente errati”[3]. In altre parole, un bias cognitivo è una scorciatoia usata dal nostro cervello per risparmiare energia e valutare fatti e avvenimenti delle realtà. Generalmente queste scorciatoie funzionano bene e ci consentono di interpretare la realtà nel modo corretto, ma in alcuni casi ci portano a degli errori di valutazione che chiamiamo bias cognitivi. Se considerassimo “gli esseri umani degli algoritmi biologici che processano informazioni per costruirsi un modello di realtà con il minore sforzo cognitivo possibile”[4], allora i bias cognitivi non sarebbero altro che i bug di questi algoritmi.

Nel caso del confirmation bias o bias di conferma, le persone muovendosi nell’ambito delimitato delle proprie convinzioni ed esperienze, selezionano le informazioni che supportano le proprie opinioni, ignorando quelle contrarie. Questo significa che accettiamo un’informazione non in base alla sua bontà, ma in base a quanto essa si modella ai nostri pregiudizi. Il confirmation bias è uno dei più diffusi bias cognitivi tra i SWE.

Adesso siamo pronti per iniziare il nostro viaggio!

La giornata lavorativa di un SWE si alterna prevalentemente tra momenti di deep work dedicati a learning & coding e la partecipazione ai meeting di team [5]. Nelle aziende che fanno uso di framework agili come Scrum, i meeting non sono altro che le cosiddette cerimonie, momenti chiave in cui il team si incontra per aggiornarsi, pianificare, coordinarsi e condividere quanto fatto.

In entrambi i momenti un SWE si può trovare di fronte a un bias cognitivo. L’obiettivo di questo articolo è quello d’imparare a riconoscere i bias più comuni per starne alla larga.

Protagonista della nostro viaggio è Riccardo, un software engineer d’esperienza.

Nel corso dell’articolo saranno citate cerimonie e pratiche famose tra gli addetti ai lavori, esse saranno illustrate in modo superficiale e non troppo preciso (i colleghi mi perdoneranno), al fine di consentire al lettore la comprensione del contesto e dei ragionamenti.

Lo stand-up meeting: il primo bias in azione

Sono le 9.30 di mattina e la giornata lavorativa di Riccardo inizia con lo stand-up meeting. E’ il momento in cui tutto il team si ritrova in piedi, davanti alla lavagna che riporta le attività di sviluppo in corso, per raccontare cosa ha fatto ieri, cosa ha intenzione di fare oggi e se ci sono dei potenziali ostacoli e criticità.

«Dopo due giorni di lavoro, ieri ho terminato la mia attività sulla fatturazione e oggi mi occuperò di richiedere la code review. Se tutto è ok, procederò subito dopo al go-live» afferma Riccardo. Riccardo è visibilmente contento di avere completato la propria attività. La sua euforia è, però, interrotta dal collega Davide che gli chiede: «Anche io ieri ho lavorato su un’attività relativa alla fatturazione, potresti spiegare meglio di cosa ti sei occupato? Avere qualche informazione in più aiuta me a capire gli impatti del tuo lavoro sul mio, ma aiuta anche gli altri a capire di più su come sta evolvendo il prodotto». Il racconto termina qui, non è necessario proseguire oltre.

Abbiamo visto il primo bias in azione: stiamo parlando del curse of knowledge bias o bias della maledizione della conoscenza. Questo bias è diffuso tra chi fa formazione e soprattutto tra gli esperti in una determinata materia, consiste nel raccontare le cose dando per scontato che l’interlocutore abbia un alto livello di conoscenza della materia stessa. In sostanza una volta che acquisiamo una conoscenza, ci viene estremamente difficile spiegare le cose ignorando quella stessa conoscenza. Per combattere questo bias potremmo seguire il consiglio del compianto Piero Angela: “Parla sempre mettendoti nella posizione di chi ascolta e non partire da dove sei tu”.

La code review

La giornata prosegue con la code review. La code review, a volte anche chiamata peer review, è il momento in cui al termine dello sviluppo di una software feature (o più in generale di un software), il codice sorgente prodotto da un developer viene esaminato da un altro sviluppatore, in modo da individuare i problemi e migliorare la qualità del software.

A occuparsi della code review di Riccardo è la collega Elena. Elena revisiona con attenzione il codice sorgente prodotto e al termine del suo compito scrive il seguente commento: «Green light per il tuo sviluppo, a condizione che tu renda coerente la creazione della fattura al resto della codebase. L’approccio che hai proposto è potenzialmente migliore, ma abbiamo sempre seguito un pattern diverso nel progetto per creare le fatture». Il racconto si interrompe.

Ecco un nuovo bias cognitivo in azione: stiamo parlando dello status quo bias o pregiudizio dello status quo. Questo bias consiste nel preferire la situazione attuale piuttosto che scegliere altre opzioni sconosciute. E’ la naturale predisposizione dell’essere umano a diffidare da ciò che non conosciamo per preferire ciò che è parte della nostra esperienza. Il noto adagio: “Chi lascia la strada vecchia per la nuova sa quel che lascia non sa quel che trova”, riassume brevemente quanto detto.

Il refinement meeting

Il refinement è un meeting in cui il team si riunisce per passare in rassegna le attività da mettere in cantiere nel prossimo futuro. Lo scopo del meeting è quello di definire in modo completo i requisiti di ogni attività, identificare l’ordine di esecuzione e stimare la dimensione delle attività.

Riccardo e il suo team lavorano su un e-commerce. Al refinement devono analizzare l’attività d’introduzione del concetto di sconti sui prodotti, che molto presto sarà necessaria al business per lanciare una campagna promozionale. Dopo avere raffinato le specifiche e avere decomposto l’attività in parti più piccole, è il momento di stimarne l’ordine di grandezza. A Riccardo non è del tutto chiara la meccanica della funzionalità di sconto, ma è arrivato il momento di stimare.

Prima di procedere alla stima, Ilario che è il team leader, prende la parola per dire: «L’attività sembra complessa, ma in realtà è più semplice di quanto si possa pensare. Ci vorranno tre giornate per implementare gli sconti». A questo punto il team si prende qualche minuto per riflettere e ragionare. Ciascun componente del team scrive la propria stima su un post-it. Non ci crederete: il 100% del team stimerà tre giorni/uomo per sviluppare la funzionalità degli sconti. Il racconto si conclude qui.

L’apoteosi del bias cognitivo

In quest’ultimo racconto assistiamo all’apoteosi dei bias cognitivi. Infatti possiamo individuare i seguenti bias tutti insieme: optimistic bias, overconfidence effect, planning fallacy, anchoring effect e authority bias.

L’optimistic bias o bias dell’ottimismo è la tendenza dell’essere umano a essere ottimista e percepire il futuro roseo, anche in tempi di crisi.

L’overconfidence effect o effetto di eccesso di fiducia è la tendenza a sovrastimare le proprie capacità e godere di un’eccessiva fiducia nei propri confronti e delle proprie abilità.

La planning fallacy o l’errore di pianificazione è la tendenza a sottostimare i rischi e l’effort richiesto per portare a termine un’attività.

L’atteggiamento di Ilario alla stima dell’attività è stato ottimistico, fiducioso delle proprie capacità e non considera alcun rischio.

L’anchoring effect o effetto di ancoraggio è la tendenza a fare eccessivo affidamento su un’informazione iniziale che funge da àncora quando prendiamo le decisioni. Nel nostro racconto, il primo bit d’informazione che riceviamo sono le “tre giornate” ipotizzate da Ilario nel suo intervento, esse influenzano la stima di tutto il team.

Infine, l’authority bias o il pregiudizio dell’autorità, cioè la tendenza ad attribuire maggiore accuratezza all’opinione di una figura autoritaria ed essere influenzati da essa. Ilario è il team leader e quindi il team ritiene che la stima esposta è sicuramente corretta.

Il go-live

La giornata volge al termine. Riccardo ha rivisto il proprio codice apportando i suggerimenti che Elena gli ha trasferito durante la code review. E’ ora di portare online la propria attività.

Finalmente l’attività è conclusa. Ma proprio quando la giornata sembrava essere terminata al meglio, ecco che il collega Mario scrive a Riccardo: «Dopo che la tua feature è andata online, abbiamo iniziato a riscontrare un numero crescente di errori sull’applicativo. Inoltre le metriche A, B e C stanno crescendo a vista d’occhio».

Con la giusta calma e sangue freddo Riccardo inizia a guardare il dettaglio degli errori e il resto delle metriche applicative. Si accorge che è vero quanto segnalato da Mario, ma al tempo stesso nota che subito dopo che il suo codice è andato online, c’è stato un malfunzionamento del database principale. La vera causa di quanto riscontrato dal collega Mario è l’outage del database.

Anche in questa parte del racconto sono presenti i bias cognitivi. Uno è il confirmation bias di cui abbiamo discusso all’inizio di questo articolo e che ritroviamo nel riferimento alle metriche segnalate da Mario a supporto della sua tesi.

L’altro è jumping to conclusion bias, fa parte della logical fallacy, è la tendenza degli esseri umani a saltare prematuramente alle conclusioni sulla base d’informazioni insufficienti.

La giusta consapevolezza per evitare la trappola dei bias

Con la conclusione dell’estenuante giornata del nostro SWE Riccardo, si conclude anche il nostro viaggio all’interno della terra dei bias, durante il quale abbiamo incontrato ben nove tra i più diffusi pregiudizi cognitivi tra i software engineer.

A oggi sono stati censiti più di 175 bias cognitivi su Wikipedia, suddivisi dagli studiosi in differenti categorie. Conoscerli tutti è impossibile, ma fare bias awareness è fondamentale per non finire facilmente in trappola, sia tu un software engineer o “semplicemente” uno human being.

NOTE

[1] The Bias Within The Bias (Scientific American)

[2] Cognitive Biases in Software Engineering: A Systematic Mapping Stydy

[3] Encyclopedia of Human Behaviour: Cognitive Bias

[4] Lezioni di “Personal Branding and Value Strategy” – Matteo Flora – Master EMBA Ticinensis – Università di Pavia – Anno accademico 2022/23

[5] Day in the Life of a Software Engineer