Come Pensiamo? Come "Debuggiamo"?
Il racconto di cinque bachi software piuttosto “coloriti”, è stato il mio peggior fiasco editoriale ottenuto fin'ora. C'è stato però un lato positivo. Scrivendo il testo mi sono imbattuto in un problema: narrare come ne siamo venuti a capo.
Nella letteratura “letteraria” si descrivono vari processi interiori, ma la ricerca del “baco” è piuttosto rara. Un esempio è il romanzo “La chiave a stella” di Primo Levi, nel capitolo “Acciughe”. Lo stesso Primo Levi si ripete in un racconto de “Il sistema periodico”. Nei gialli, dove l'investigatore dovrebbe macinare pensieri e congetture per svelare la coltre che momentaneamente cela il criminale, questa descrizione accade raramente: forse un pochino in Maigret, sebbene Simenon ne descriva più i gesti che i pensieri. Nero Wolfe pensa, è vero, ma poi spiattella il risultato delle sue elucubrazioni, tutto d'un colpo: non si vede il processo. Notevole è il caso di Miss Marple, personaggio di Agatha Christie, che classifica i casi in “pattern” già noti: è un'ipotesi di lavoro interessante, ma le storie sono costruite in modo molto “finto” e sembra che scopra i colpevoli per colpi di fortuna.
Ebbene, io abitualmente sono un tipo abbastanza introspettivo, ma è stato interessante auto-analizzare i processi mentali che portano alla scoperta di un baco. Ovviamente se uno cerca un baco in un codice scritto da lui stesso, ripeterà gli stessi processi mentali che l'hanno portato al baco e lo troverà facilmente solo quando si tratta di una svista marchiana.
Ad un certo punto affermo che le ipotesi vengono in mente e questo “venir in mente” è quasi una blasfemia per gli ingegneri scientisti positivisti ... insomma una roba che ha più a che fare con lo sciamanesimo che con la società tecnologica. Eppure, l'esperienza dice che ragionando in modo analitico, dicotomico, step-by-step... si scoprono solo errori facili da scoprire. Invece, quando ci si stacca “vengono in mente” ipotesi creative che in alcuni casi portano alla soluzione dei problemi. I peggiori bachi si scoprono in bagno!
Auspicavo che un giorno le neuroscienze avrebbero spiegato questo fenomeno.
Ma cosa dicono le neuroscienze in proposito? Non ho la cultura necessaria per affrontare certi tomi e mi sono letto un testo molto semplice e divulgativo: "How We Decide" di Jonah Leher
Mi ha confortato su alcuni punti:
Il nostro cervello è diviso in molte aree, ognuna con delle sue caratteristiche peculiari: per poter “prendere decisioni” devono intervenire e “confrontarsi” tra loro più aree, e quindi diversi “modi” per processare le informazioni che richiedono una risposta. L'inibizione o l'eccessiva predominanza di un'area a volte conduce a gravi errori. Questo conforta la metodologia del “pair programming” e di altre tecniche che fanno leva sulla diversità dei punti di vista per la sicurezza e robustezza dei sistemi.
Il pensiero razionale funziona bene solo per problemi con gestiscono “poche” variabili. Quanto numericamente corrisponda questo poche, varia: alcuni scienziati propongono quattro, altri arrivano fino ad otto. I problemi complessi hanno bisogno dell'intervento di processi mentali più complessi e collaborativi tra le diverse aree del cervello.
I casi che il testo illustrava riguardavano per lo più chi operava nell'aviazione, i giocatori e gli scommettitori. Non c'erano esempi sugli sviluppatori del software, putroppo!
Penso che sarebbe opportuno che le metodologie di debugging tenessero conto di come effettivamente fuonziona la mente, invece di essere in molti casi delle descrizioni ingegneristiche “chiare, semplici e sbagliate”.
Concludo con una domanda: ci sono studi psicologici in tale senso? Qualche università, centro studi.. ha fatto ricerche sulla mente dei softwaristi? C'è qualche interesse a farlo ? (sempre ammesso che avere software debuggato sia, per qualcuno, interessante).
PMP®, ISO 19011 e ISO 27001 Lead Auditor, Tech Advisor, helping organisations embracing the digital transformation
7 anniTrovo molto interessati queste tue considerazioni in merito alle -intuizioni- che si hanno quando ci si stacca dal problema per un attimo, andando in bagno oppure, come mi è capitato, facendo una breve passeggiata. Quando mi dedicai al 100% alla programmazione (tempi che un po' rimpiango, periodi quasi zen) questi episodi furono molto frequenti. Perfino la tradizione popolare suggerisce di allontanarsi dal problema per trovarne la soluzione; mi ricordo mia madre che mi suggeriva di "lasciar lì il problema per un po'": funzionava! Anche io non ho trovato nulla ancora nelle neuroscienze che spieghi questo meccanismo, tu sei riuscito in questi mesi?