Qualche anno fa, mentre stavo lavorando con un mio collega anche lui software developer, aprii una parentesi e gli feci una delle mie solite tirate sul Clean Code.
Lui mi ascoltò pazientemente e poi se ne uscì con una frase che a distanza di anni ancora mi tormenta:
“Vedi Andrea, in definitiva, dopo dieci anni di lavoro, ho capito che l’importante è avere le carte in regola.”.
Io rimasi scioccato ed incredulo che qualcuno potesse arrivare a fare una tale affermazione. Dopo qualche esitazione gli dissi gentilmente:
“Non pensi invece che se ci impegnassimo a realizzare software funzionante, avremmo già risolto l’ottanta percento dei nostri problemi e potremmo fare a meno di tante inutili scartoffie? “
Questo episodio mi fece riflettere parecchio. Presi consapevolezza che quel contesto organizzativo era talmente tossico che nel tempo era riuscito ad azzerare completamente il buonsenso di quella persona. La mentalità dell’artigiano, quella che caratterizza i bravi software developer, era stata sostituita con quella di un freddo burocrate.
Il lavoro che facciamo è maledettamente difficile: forniamo soluzioni a problemi. Per fare ciò dobbiamo capire il problema scomporlo in parti più piccole e crearne un modello digitale. Il nostro è un lavoro intellettuale altamente creativo, in cui la passione gioca un ruolo importante.
Questa complessità molte persone non la percepiscono.
I primi a non capirla spesso siamo noi stessi developer, che di consegunza non ci sappiamo raccontare. Spostandosi a livelli gerarchici superiori la situazione non può certo migliorare tanto che, e a causa di un combinato disposto di ignoranza e malafede, siamo etichettati genericamente con sdegno come: “tecnici”. Agli albori dell’informatica qualcuno ha pensato che se il taylorismo aveva funzionato per la catena di montaggio, avrebbe funzionato anche per il software facendoci diventare gli operai del digitale, ma evidentemente non è così.
Finché l’AI non ci sostituirà del tutto, le aziende avranno bisogno di esseri umani che svolgano questo lavoro.
Il punto è che gli esseri umani sono organismi delicati, da trattare con cura, altrimenti si va incontro ad una serie di effetti collaterali: funzionano male, smettono di funzionare, si rompono o cambiano azienda.
Ho sperimentato sulla mia pelle che, per produrre software di qualità decente, è necessario un buon equilibrio psicofisico. L’azienda perciò avrebbe tutto l’interesse a creare è mantenere un clima di lavoro non tossico. Il problema è che per creare e mantenere un ambiente di lavoro sereno e collaborativo serve molto impegno. Bisogna operare avendo come obiettivo la sostenibilità del lavoro. Invece l’unico obiettivo sui cui tutti sono allineati è il budget trimestrale. Questa impostazione spesso induce a scelte miopi e impedisce di mantenere il focus sul core business: il software che è il risultato della conoscenza di dominio e delle persone.
In nome del budget si fanno guerre sante in cui il fine giustifica i mezzi senza considerare i danni collaterali.
Così prendonono vita i famosi progetti “bagno di sangue”, che richiedono eroici sacrifici e che alla fine contano un gran numero di “morti” e “feriti” tra i soldati.
Un team di software developer è un insieme di persone creative, come tale costituisce un delicato ecosistema di rapporti interpersonali, il cui buon funzionamento è garantito più dalla psicologia della comunicazione che dalle procedure. Se i componenti di un team sono mediamente motivati e riescono a lavorare in un clima sereno, non è necessario fare micro management, probabilmente il team si auto organizza.
Quel mio collega poi ebbe l’opportunità di cambiare ruolo. L’ho incontrato recentemente e l’ho trovato in ottima forma, sereno e ottimista.
Il sistema evidentemente non lo ha riprogrammato completamente, ne sono felice. Gli ho accennato quell’epico scambio di battute, ma lui neanche se lo ricordava!
A questo punto, non mi resta che augurare buone scartoffie a tutti.