sabato 7 dicembre 2013

Dieci Piccoli Bug

Non amo scrivere molto del mio mestiere. Questo blog è un luogo di evasione e riflessioni trasversali. Spesso passo da qua cercando proprio di staccare dalle 40 ore settimanali che mi vedono concentrato in astruse righe di codice. Il mio lavoro, inoltre, è di difficile comprensione per chi non abbia mai avuto a che farci e quindi ho sempre il timore di parlare di cose note ai colleghi e incomprensibili per chi non abbia un minimo di cultura informatica. Oggi però voglio provare a descrivere le fantastiche avventure che possono celarsi dietro ad un Bug.



Cos'è il bug? Per i programmatori partenopei potrebbe essere l'apostrofo invisibile fra le parole chitemuort. Per chi non ha idea della continua frustrazione che deve provare l'operaio del terzo millennio (il programmatore), proverò a descrivere uno degli elementi più sadomasochistici del mio lavoro.

Capita raramente, per vari motivi (alcuni descritti in questo mio post dell'anno scorso), di scrivere un software perfetto, privo di errori. Per questo si passa più tempo a fare test che a scrivere codice. Mentre tutti gli errori grossolani sono subito evidenti, i bug a cui mi riferisco in questo post sono quelli che si nascondono (a volte anche per anni) dietro una particolare combinazione di concause.
Capita così, per esempio, che l'inserimento dei dati su una pagina di un sito internet su cui stai lavorando funzioni benissimo sul tuo PC e su quello dei tuoi colleghi ma, una volta pubblicato nel server di collaudo, vada in errore. 
Si parte così alla ricerca del bug. La ricerca può durare minuti, ore o anche giorni. La conseguenza finale (la pagina web che va in errore) è spesso l'ultima delle conseguenze di una serie di reazioni a catena che si innescano fra le varie istruzioni del codice: questo comporta una ricerca non banale.
Il bug ci fa così diventare uno e trino: carnefici, vittime ed eroi. Dobbiamo infatti risolvere velocemente l'intricato enigma che noi stessi abbiamo generato involontariamente, sottraendo tempo al lavoro rimanente.
C'è da dire che a volte ci ritroviamo anche a correggere software scritto da altri colleghi, ma in questi casi, come il gruppo di lavoro di House, ci si unisce e si fa brainstorming. Per questo si diventa tutti vittime, carnefici ed eroi. Si ipotizzano svariate teorie, si fanno prove, controprove e si cerca di arrivare alla causa: l'origine del male. Ma, proprio come in una serie-tv procedurale, quando ci sembra di essere vicini alla soluzione ci si ritrova con un buco nell'acqua. Il bug sembra quasi che ti derida, in questo nascondino virtuale in cui la logica sembra essere andata in ferie. Ad un certo punto tutto sembra essere stato ipotizzato, ogni controllo essere stato fatto. E poi non rimase nessuno, come il titolo del bellissimo romanzo di Agatha Christie (tradotto tristemente in "Dieci Piccoli Indiani"). Spesso, proprio in quel momento vedi la luce in fondo al tunnel (sperando che non sia un treno che ci venga contro, come dice un mio collega) e trovi l'indizio che ti porta sulla giusta strada. Percorrendo a ritroso tutti i passaggi arrivi così a scoprire il colpevole!
La soddisfazione che si prova in questi casi è quasi orgasmica: veloce ma intensa. Si prova un piacere aggiuntivo se poi scopri che il problema è dovuto ad una causa esterna al tuo software.
Un lavoro strano il nostro, forse un po' masochista, forse un po' operaio, forse un po' da matti.
Un lavoro che può dare però tante piccole soddisfazioni.