Il duro lavoro dello sviluppatore…

Spesso mi ritrovo a parlare con amici e conoscenti che fanno lavori molto diversi dal mio, in genere la discussione finisce sempre con un “ah bello, beato te che lavori con i computer”. Ora chiaramente non voglio assolutamente dire che fare lo sviluppatore sia un lavoro malvagio, ne voglio sminuire nessun altro lavoro. Tuttavia ci sono alcune cose che generalmente le persone non comprendono del nostro lavoro.

Fare lo sviluppatore (ed essere un buon programmatore) richiede tanto sforzo e sacrificio. Spesso si trascura che, così come in altri lavori, i veri “esperti” hanno alle spalle una vita di sacrifici e tanti momenti di sconforto. Spesso più che uscire a bere una birra con gli amici si studia, si fa tardi davanti al computer dietro le insidie del codice e spessissimo bisogna aggiornarsi per comprendere le novità che ormai praticamente giornalmente escono e cambiano in un battibaleno le carte in tavola!

Così dopo qualche giorno a rimuginarci ho pensato quali, secondo me, sono le caratteristiche che un bravo programmatore deve avere. Ho pensato un po’ anche ad un acronimo figo da coniare per l’occasione e il risultato è C.S.P.N. (un acronimo da schifo, diciamolo)

C di Costanza! Per riassumere velocemente il concetto uso una storiella: Ogni mattina all’alba un programmatore nel mondo si sveglia e sa che se non correrà più veloce di release dei nuovi framework/librerie/linguaggi/etc morirà di obsolescenza. Ogni mattina all’alba framework/librerie/linguaggi/etc si svegliano e sanno che se non correranno più veloce dei programmatori moriranno (inutilizzati in un angolino del web).

La costanza di guardare oltre quello che già si sa, di non smettere di apprendere, di leggere le novità (e di provarle), la curiosità di scoprire cose e la voglia di scrivere codice “migliore”. Non per niente spesso nel codice, nei miei “TODO” metto la dicitura “CPFM?” che in soldoni significa “Come Posso Farlo Meglio?”

S di Sacrificio! Per imparare cose nuove e migliorarsi spesso bisogna rinunciare a qualcosa, il tempo in ufficio non basta mai per portare avanti i propri “task” e sperimentare abbastanza le novità. Senza una visione abbastanza “completa” del mondo è difficile capire quale framework/libreria/linguaggio usare per una determinata esigenza.

Spesso vedo in giro persone (scusatemi) con i paraocchi. “Questa libreria è la migliore” oppure “il linguaggio X è il più performante” o meglio “questo framework fa schifo”. In generale credo che un buon programmatore non dovrebbe disprezzare nulla (o quasi) e invece valutare la cosa migliore per il problema concreto. Ovviamente come ci insegna il saggio maestro Yoda “Soltanto un Sith vive di assoluti” (magari vi piace il lato oscuro della forza, posso pure capirlo, ma almeno evitate gli assoluti!).

P di Pazienza! Chiaramente un po’ come si intuisce sopra diventare bravi richiede tempo, bisogna studiare un botto, capire come le cose funzionano e capire quando, come e cosa è meglio utilizzare, in funzione del problema specifico e delle esigenze di quel determinato momento (senza tralasciare aspetti come l’evoluzione del progetto a 360 gradi).

Inoltre spesso le cose più semplici del mondo ci fanno impazzire, un problema all’apparenza “semplicissimo” richiede tempi disumani per essere risolto. Ho avuto il piacere (e la sfortuna) di conoscere programmatori invecchiati dietro bug o situazioni che sembrano “una sciocchezza, 2 minuti ed è ok”.

Startup Weekend Catania 2017

N di Network! Circa 13 anni fa, durante il mio primo lavoro in ufficio (come sviluppatore), ricordo che avevo un problema (non scendo in dettagli tecnici) dovevo convertire delle cose da “A” a “B” solo che quando lo facevo non funzionava. Allora armato di Pazienza (ricordate la P?!) mi sono messo a fare mille prove e casualmente ho scoperto che se facevo da “A” a “X” e poi da “X” a “B” allora la conversione funzionava alla grande. Non sarebbe stato un grosso problema se la cosa era da fare una volta al giorno, purtroppo mi capitava di doverla fare un numero incalcolabile di volte (non nego che alcune volte ho seriamente pensato di incendiare il mio computer dell’epoca e darmi alla scrittura poetica).

Così un giorno mi ritrovo durante un hackathon ad utilizzare il mio “infallibile” modo “A”-”X”-”B” dietro di me passa un ragazzo che mi guarda e fa:”ma non sarebbe più semplice andare su questo menu nascosto qui, attivare questa opzione?” Magia, funzionava alla grande, minuti/ore/giorni spesi per nulla (la voglia di incendiare il pc era diventata voglia di dare fuoco a tutto l’isolato, ho resistito tranquilli!). Così ho imparato una grande lezione, se stai a casa nel tuo angolino, nessuno verrà mai ad aiutarti o insegnarti qualcosa, imparare qualcosa leggendo un libro o provando è mille (milioni) di volte più lento di sentirla da qualcuno che già la sa.

Andare ad un evento e ascoltare cosa la gente ha da dire, conoscere le persone e interessarsi alla loro vita e alle esperienze in futuro può essere incredibilmente d’aiuto. Chiaramente la gigantesca macchina dell’altruismo funziona solo se prendi qualcosa e poi sei disposto a dare qualcosa, anche poco, indietro.

Costanza, Sacrificio, Pazienza e Network sono secondo me le 4 caratteristiche che trasformano un normale programmatore in un supereroe del codice! :)

Ciao e alla prossima!