domenica 14 ottobre 2012

Le cinque fasi dell'elaborazione del lutto informatico

Il mio è un lavoro particolare, bellissimo e frustrante allo stesso tempo. Proiettato nel futuro ma ancorato alle tipiche incomprensioni che hanno segnato la storia: io faccio il programmatore.

Una volta programmare era una delle tante cose che sapeva fare un "Informatico". I veri pionieri di  questo lavoro erano dei factotum: dal microchip alla ricerca, dal software all'hardware. Col passare degli anni, anche questa disciplina è stata frammentata e burocratizzata, rendendo così il programmatore l'operaio del terzo millennio, alle prese con la sola creazione di software.

Queste armate Brancaleone dell'informatica si ritrovano spesso a dover affrontare il duro compito di creare un programma le cui funzionalità sono definite in un documento (più o meno dettagliato), avendo a disposizione il minor tempo possibile. Anche se non siete del mestiere, provate a immaginare la difficoltà di creare in fretta un software che sostituisca un lavoro fino a quel momento cartaceo o poco più, senza aver mai saputo nulla di quel lavoro. I clienti sono i più disparati e, di conseguenza, ci si ritrova in ogni progetto a dover imparare qualcosa di nuovo: da come viene amministrata l'energia a come viene gestito un lavoro ministeriale e così via. Questo è il bello del mio lavoro: conoscere tanti lavori. Purtroppo però il più delle volte, l'analisi (la fase iniziale di un progetto in cui gli analisti capiscono cosa il cliente vuole che si realizzi) è fatta male, di fretta e da altre società. I programmatori si ritrovano così a realizzare un software per un cliente senza mai parlare col cliente stesso. Un po' come correre con un polso legato alla caviglia.
Questo modo di lavorare comporta, nella maggior parte dei casi, la non perfetta realizzazione al primo tentativo di ciò che il cliente vuole (tenete presente che spesso neanche il cliente ha un'idea precisa di cosa voglia prima di vederselo di fronte). Questo implica che ad un certo punto il programmatore si accorga che ciò che sta realizzando sarà, in un certo qual modo, un fallimento. 

Quando ci si rende conto di questo, si attraversano le cinque fasi dell'elaborazione del lutto informatico.

1) Negazione o Rifiuto: in questa fase non si vuole credere che il progetto stia prendendo una direzione sbagliata. Non si dà retta al collega che fa notare l'evidenza. Tipiche le frasi: "Ma come è possibile che l'analisi sia sbagliata?", "Ma è possibile che il cliente voglia veramente questo?", "Non ci posso credere!".

2) Rabbia: in questa fase il programmatore vorrebbe azzannare la tastiera e qualsiasi collega gli capiti sotto tiro, soprattutto il collega che (secondo lui) è responsabile principale del fallimento. Si rischia di rovinare rapporti,  a volte anche amichevoli, e ci si guarda in cagnesco. Tipiche la frase: "Perché proprio a me?!"

3) Contrattazione o Patteggiamento: in questa fase si cerca di capire quanto del lavoro fatto sia da buttare nel cesso e quanto sia effettivamente quello che il cliente voleva. Si cerca quindi di correggere il tiro, sperando di avvicinarsi il più possibile al vero obiettivo. Tipiche le frasi: "Se rifacciamo questa parte, forse al cliente non farà troppo schifo", "Impostiamo per bene le prime funzionalità, almeno inizia con qualcosa di corretto".

4) Depressione: in questa fase si capisce che ormai il software in questa sua prima versione è spacciato, inutile ogni tentativo di refactoring. Ci si rende conto che l'obiettivo è distante o, peggio, ancora ignoto e si deve quindi arrivare alla consegna, pronti a ricevere le critiche e le eventuali richieste di modifica. Tipiche le frasi: "Questo software non finirà mai", "Questo software non funzionerà mai!".

5) Accettazione: quando si arriva all'ultima fase ci si mette l'anima in pace e si capisce che ormai quello che si sta realizzando sarà un parente lontano di ciò che il cliente si aspettava. Se si è stati bravi, il codice è pronto però a essere corretto velocemente, una volta ricevute le giuste indicazioni.  Tipiche le frasi: "Andiamo avanti così, inutile lottare ancora", "L'analisi fa schifo, non è colpa nostra".

Una volta superate queste cinque fasi, il programmatore è pronto a iniziare un nuovo progetto e riprendere il ciclo dall'inizio.