Come diventare uno sviluppatore?

Spesso su alcuni gruppi online che seguo o durante qualche talk in giro per l’Italia un sacco di ragazzi chiedono cose tipo ”Come si fa a diventare sviluppatore? Devo fare qualche corso per certificare le mie competenze? Meglio la laurea oppure basta la scuola superiore?”. Come sempre direi che sono domande generiche e che senza un contesto preciso difficilmente possono avere una risposta universale. Come sempre voglio raccontarvi un pezzo della mia storia (per prenderla alla larga) partendo dalla premessa che al mondo (ma anche in Italia) ci sono un sacco di sviluppatori formidabili, molto più bravi e talentuosi di me.

Non basta saper premere tasti a caso molto velocemente…

Siccome la storia è lunga (e tortuosa) questa volta parto dalla risposta. Essere un bravo sviluppatore richiede tante cose, molte sono riassunte in quello che io chiamo C.S.P.N. (puoi leggere “Il duro lavoro dello sviluppatore” qui) inutile dire che se vuoi diventare veramente (ma veramente) bravo nel tuo lavoro una cosa che non può mancarti è il bagaglio teorico (che è veramente tanta ma tanta roba). 
Per acquisire la teoria, inutile dirlo, ci sono varie strade. L’università è sicuramente una buona strada (oltre a darti accesso ad alcune posizioni in aziende che (salvo piccole eccezioni) richiedono un laurea (alcune volte anche specialistica). Ci sono anche corsi professionalizzanti seri (quindi non il primo che trovi) e anche formarsi come autodidatta può aiutare.

Sui gruppi online se chiedete “laurea si o no?” create un flame incredibile tra chi vi dice “senza laurea non vai da nessuna parte”, chi invece afferma “se vuoi solo programmare vai a lavorare” e chi come me (pochi in verità) che dicono “non è importante l’università o il titolo (nella maggior parte dei contesti), ma la formazione che l’università ti dà”, questo non significa che non puoi prenderti un bel librone di algoritmi (ad esempio) e iniziare a studiare da solo, non significa che senza laurea ti limiterai a scrivere codice pessimo, in generale tutto dipende da te.
Sia chiaro, studiare a memoria giusto perchè prenderò un bel 18 all’esame, non guardarsi attorno, non fare nulla (oltre al dovuto per le materie) e non essere curiosi porteranno te ad essere un laureato con estreme difficoltà nel trovare un buon lavoro in questo settore.

Quando un giorno affronterai un colloquio serio non serve che porti nessun super attestato, le aziende serie (e ne abbiamo molte anche in Italia) basano la selezione (salvo, come detto, rari casi) su quello che il candidato sa fare. Bada bene, non basta scriverlo sul curriculum, devi dimostrare che sei competente. Ci sono test tecnici e altre “diavolerie” per vedere se sei un tizio seriamente preparato oppure se sei un “gonfiatore seriale di CV”

Ma veniamo a noi, cos’è successo di così terribile nella mia infanzia per portarmi ad annunciare pubblicamente “da grande farò lo sviluppatore” (a differenza degli altri 22 o 23 calciatori e rock star della classe?). Questa volta nessun ragno radioattivo e neanche particolari tremiti nella forza

Amstrad CPC 464 del 1984 — Monitor tra 2 e 16 colori — Memoria 64K e CPU a 4MHz

Quando avevo più o meno 12 anni mamma porta a casa un vecchio Amstrad CPC 464 (non ricordo proprio perchè), era bellissimo e visto che fin da piccolo mi piaceva “smanettare” con robe piene di lucine e suoni strani ho deciso di metterlo in camera sulla scrivania per “farci cose”. Inizialmente ho usato le due cassette (bada bene cassettine quelle audio da walkman) piene di giochi. Si, fu la mia prima console, molto e molto prima che cose tipo PlayStation fossero disponibili sul mercato. Dopo qualche settimana annoiato dai soliti giochini e cercando meglio nel pacco ho trovato un bellissimo manuale di BASIC per esempi, in una lingua sconosciuta (oggi immagino Inglese).

Non chiedetemi come e perché ma ad un certo punto ho iniziato amorevolmente a copiare gli esempi del manuale che alla fine facevano “cose” e in seguito dopo mille tentativi e pomeriggi interi riuscivo anche a manipolarli per fare cose leggermente diverse. Capiamoci, se mi chiedete BASIC non ho assolutamente idea di come funzioni ne tantomeno all’epoca avevo idea di come funzionasse, semplicemente mi limitavo a provare e fare cose. Poco dopo arrivò la prima console, poi la seconda e poi la PlayStation e diciamo che per qualche anno smisi di fare cose su quel fronte.

Tanto tempo fa in una galassia lontana lontana un giovane Mich alle prese con qualcosa di informaticoso.

A 15 anni un pò per curiosità, un pò perchè frequentavo postacci come IRC (tramite mIRC e client simili) ho ripreso un pò a smanettare con il codice, qualcosina in c# anche lì capendone poco e non avendo quasi nessun tipo di supporto “scolastico”. Non frequentavo una scuola tecnica dove la programmazione fosse contemplata. Però prova questo e prova quello ho iniziato a fare i primi siti per amici (senza pretese), genitori degli amici, amici degli amici degli amici.

Quasi subito ho capito che potevo continuare a scrivere codice a caso non capendo perché le cose succedevano oppure potevo iniziare a capire come funzionava quel mondo studiando, decisi che era il caso di studiare (forse l’unica volta in cui l’ho fatto veramente volentieri). All’epoca ero ancora fortemente convinto che cambiare le immagini delle pagine HTML sostituendo il file jpg, chiamandolo allo stesso modo e dandogli più o meno le stesse dimensioni fosse una buona idea…

Così ho iniziato a studiare, poi mi sono iscritto a Informatica dove ho iniziato a comprendere cosa c’era alla base e pian piano scoprendo questo e scoprendo quello penso di averne fatta abbastanza di strada.

Bene ma cosa significa esattamente studiare?
Anche questa è una domanda troppo generica, direi che conoscere le basi dell’informatica, le basi sugli algoritmi e le strutture dati, design pattern, metodologie di sviluppo e un bel pò di ingegneria del software sia proprio la base, poi dipende moltissimo da quello che vuoi fare. Oggi fare lo sviluppatore può significare mille (milioni di) cose diverse e tutto dipende da cosa vuoi fare ed eventualmente in cosa vuoi specializzarti. Un consiglio generico però è quello di essere curiosi e non fermarsi mai al “funziona, figo!” ma arrivare abbondantemente al “perchè così funziona? come posso farlo meglio?”.

Il talento può essere sicuramente una dote innata, ma senza sacrificio, esercizio e voglia di migliorarsi anche il più talentuoso non arriverà da nessuna parte. Se non nasci con il talento ma sfrutti la disciplina per migliorarti con tanti sacrifici i risultati non tarderanno ad arrivare. Di questo stanne certo! :)