Diventare un Programmatore

E così, vuoi fare il programmatore, eh?

Beh, che dire? È sicuramente una strada percorsa da molti, al giorno d’oggi, e – senza dubbio – una che permette di crearsi una discreta moneybase anche partendo dal basso, e senza grandissime esperienze pregresse.

“Vorrei fare il programmatore, ma non so da dove cominciare”

Questa è una frase che, nella mia vita e nel corso della mia carriera avrò sentito almeno una decina di volte.

Il mondo dello sviluppo software è indubbiamente affascinante, in modo particolare per chi, come la generazione nata negli anni ’90, ha visto il mondo cambiare sotto i propri occhi, trasformarsi velocemente da un mondo – per così dire – analogico a uno digitale. È proprio questa la generazione che più ha assimilato concetti che hanno reso per loro semplicissimo approcciarsi al mondo dello sviluppo in modo forse più facile rispetto ai nativi digitali.

A qualsiasi categoria umana tu appartenga, è importante capire che non è mai tardi per diventare uno sviluppatore. È un po’ come imparare a portare la macchina, o imparare a disegnare. Non deve necessariamente essere il tuo lavoro, e non serve che tu sia un ingegnere informatico per toglierti qualche bella soddisfazione. L’importante è – come sempre – fare il primo passo. Il primo approccio, si sa, è il più difficile: ci si ritrova davanti a un mondo di alternative, tutte egualmente promettenti, e tutte – indiscutibilmente – sbagliate.

È tutto sbagliato

Perchè, mi chiederete voi, tutte le alternative sono sbagliate? Ma soprattutto… De che stamo a parlà??

Partiamo dal principio: tutti vi vogliono vendere corsi per “imparare a sviluppare in *che ne so* JavaScript, o Python, o *Dio non voglia* Java”. Li vedete ovunque, da Udemy a Boolean, da Talent Garden a Infobasic. Molto probabilmente, cercherò di vendervene uno anch’io, che mi pare brutto restare fuori dal mercato.

Ma la realtà è che – se davvero il tuo interesse è quello di sviluppare software, la prima domanda che dovresti porti non è come si fa? ma per cosa voglio usare questa skill?

Imparare a sviluppare, in sè e per sè è facilissimo, ci vuole una settimana, due. Se non ci credete, vi venderò un corso di due settimane per dimostrarvelo!

Questo sono io che vi vendo un corso per programmare

Scherzi a parte, il punto – in realtà – è proprio questo: imparare a sviluppare per fare cosa? Ne volete fare una carriera? Volete sviluppare il vostro primo, piccolo indiegame per fare i coatti con gli amici e, magari, mettervi in tasca qualche migliaio di euro prima di essere assunti da Bethesda? Cercate un modo per arrotondare facendo siti web meglio di ammiocuggino? Volete solo studiare sviluppo per accrescere la vostra cultura (qualsiasi cosa significhi)?

Rispondere a queste domande, anche se pare banale, è il primo step per capire da dove cominciare. Per un motivo molto semplice: il punto di partenza è diverso. Facciamo una breve analisi.

Lavorare come sviluppatore dipendente

Di solito avrete un Asus o un ThinkPad

La maggior parte di voi, sicuramente, immaginerà uno sviluppatore proprio come l’immagine che ho messo all’inizio dell’articolo. Non come la gif (magari). E, c’è da dire, non avete tutti i torti. Se la vostra intenzione è quella di fare lo sviluppatore di professione, inteso come uno che lavora per una software house, al 90% il lavoro che andrete a fare sarà proprio quello di stare davanti a una scrivania per circa 6/8 ore al giorno a scrivere codice. Che è ‘na figata, credetemi. Ma non fa per tutti.

Il lavoro di sviluppatore è un’ottima professione, ben pagata, molto ricercata, che richiede sostanzialmente zero fatica fisica (se ancora conta qualcosa nel 2024), e – a parità di stipendio – richiede infinitamente meno studi e meno investimento di qualsiasi altro lavoro d’ufficio che io conosca. Non è strano che uno sviluppatore junior appena assunto guadagni intorno ai 1500€ al mese (e, purtroppo, in Italia è tanto). E questo è a salire. Perchè poi lavorando uno si specializza su determinate tecnologie, e se proprio l’azienda per la quale lavora non gli dà un aumento, sicuramente ne troverà un’altra che gli offrirà di più.

È un lavoro relativamente duro a livello intellettuale, ma (a buon bisogno) chi si cimenta nella programmazione di solito è abbastanza sveglio, come sono sicuro che siate tutti voi.

In cosa consiste il lavoro di sviluppatore interno

Dando per scontato che nessuno di voi stia leggendo questo articolo volendo diventare project manager al primo impiego, la stragrande maggioranza del lavoro che svolgereste sarebbe il debugging. Capire per quale ragione il software non funziona. Prima di questo c’è lo studio, cercare di capire come fare a ottenere il risultato desiderato ma, credetemi, quando avrete capito come fare, quali librerie usare, quali API consumare eccetera… Sarà tutto debugging. Perchè non funzionerà un cazzo. Improvvisamente, dopo sei ore di testa spaccata sulla tastiera, risolverete il problema (succede sempre) in dieci minuti.

Dona una certa soddisfazione risolvere un problema, quindi – oltre ad essere ben remunerato – questo lavoro è anche abbastanza soddisfacente.

Come Junior, sarete affiancati sempre a qualcuno con più esperienza di voi, che – se sarete fortunati – diventerà una sorta di vostro mentore. È davvero una bella professione, con i suoi difetti, ma sempre bella.

Inoltre, il COVID ha insegnato al mondo che per fare alcuni lavori non c’è bisogno di andare fisicamente in ufficio, quindi – in Italia – circa il 2% delle software house ha capito che si può lavorare da casa (le altre no, ma siamo in Italia, si capirà tra una ventina d’anni, quando i nomadi digitali saranno ormai demodée).

Come diventare sviluppatore dipendente

Facile, facendosi assumere!

Non sto scherzando, è letteralmente così! Ok, dai, scherzo. Non tanto, però.

Cazzate a parte, per farsi assumere ci sono varie vie. La prima, come sempre, è il passaparola. Avete un amico che lavora in una software house? Chiedetegli di sentire qualcuno delle risorse umane per farvi fare un colloquio. Non conoscete nessuno in questo mondo (siete sicuri di vivere nel 2024?)? Cominciate a mandare curricula. Ci vorrà un po’, ma qualcuno a cui serve un junior si trova sempre. Non sapete scrivere un curriculum? Fatevelo scrivere da qualcuno. Ora, per giungere alla parte più importante, la formazione, parliamone.

Formazione

Per lavorare da dipendente, la formazione è fondamentale. Ovviamente io – che ho un’azienda di informatica – scarto quasi automaticamente tutti i candidati che non hanno esperienze pregresse rilevanti, a meno che il curriculum non mi colpisca per qualche altro motivo (una volta ho assunto uno perchè ha fatto il meccanico e secondo me le formae mentis sono molto simili).

Diciamo che, da curriculum, è meglio avere corsi di formazione più avanzati dei classici bootcamp da 4 week-end, e in generale (non chiedetemi perchè, che non lo so) Boolean è visto discretamente male. Udemy non rilascia certificati. Di corsi di formazione ce ne sono a bizzeffe praticamente ovunque, e di solito sono anche abbastanza costosi (ma manco troppo, parliamo di cifre nell’ordine dei 2000€).

Un altro punto molto importante è la vostra età. Purtroppo viviamo nel mondo e bisogna adattarsi. Se avete meno di 36 anni è tutto molto più facile. Se state ancora a scuola, iscrivetevi a informatica o ingegneria informatica. Non è un requisito obbligatorio (ancora, ma sempre più aziende lo stanno ponendo come tale), ma – naturalmente – studiare con un criterio, seguendo un metodo tradizionale e conclamato è più semplice e più efficace che fare gli autodidatti. Giuro.

Se avete una ventina d’anni (ma anche trenta) un bel corso di formazione è il top. Alcuni offrono anche stage in azienda dopo il corso (e questi sono oro colato, perchè approcciarvi al lavoro vero vi darà sul serio una spinta atomica).

A quest’età potreste – ipoteticamente – imparare come volete, ma io vi consiglio il corso, è più facile e sicuro. Potreste anche iscrivervi all’università ma tenete in considerazione che sono tre anni minimo. Ne vale la pena ma non tutti se lo possono permettere.

Studiate anche a casa! Studiate anche a casa!! Studiate anche a casa!!!

Qualsiasi sia la vostra scelta, STUDIATE ANCHE A CASA! Fate progetti personali. Imparate Git (questo è fondamentale). Sviluppate il vostro primo sito web in PHP (ne parlano tutti male ma è ancora richiestissimo). Usate il vostro vecchio portatile per fare un bel server domestico con Node.js. Compratevi un Raspberry Pi e fateci una stazione meteo che vi manda email quando piove. Qualsiasi cosa. Fate progetti da caricare su github e sul vostro curriculum. Ricordatevi le versioni dei vari software che usate. Ma, soprattutto, quando arriverete al colloquio (e ci arriverete) crediate in voi stessi. Siate onesti e rilassati, non sarà il primo colloquio che farete e nemmeno l’ultimo, se non vi assumono non fa niente, c’è sempre il prossimo.

Detto questo, a parità di condizioni, è meglio scegliere corsi di formazione certificati e in linguaggi più generali (che è un altro modo per dire vecchi) come C#, Java, PHP, Python, .Net, in ordine.

Lavorare come Freelancer

Questa strada è un po’ più difficile, devo dire, ma è quella che ho intrapreso io. Vi concede una buona indipendenza economica sin da subito, e vi permette di farvi le ossa su qualche lavoretto un po’ più semplice. È una vita durissima, la P.IVA – in Italia – è un girone dell’Inferno dantesco, ma se credete di avere una buona propensione al rischio o un discreto senso degli affari, potrebbe essere la strada che fa per voi. Ricordate solo una cosa: non vi fermate a quello che vi serve. Studiate sempre di più. Nuove tecnologie, nuove integrazioni, approfondite tutto. Tutto. È questa la parte più difficile di questa via. Quando vedrete i primi 2k di sitarello fatto con wordpress, crederete che sia tutto finito e vi adagerete sugli allori. Non fatelo, sarebbe il peggior errore delle vostre vite.

In linea di massima, è cento volte meglio fare il dipendente, ma molti preferiscono questa via.

In cosa consiste il lavoro di un Freelancer

Nella stragrande maggioranza dei casi, da freelancer vi converrà lavorare come web-designers / web-developers. È facile da imparare e nel vostro vicinato c’è sicuramente qualcuno che ha bisogno di un sito web. Ci farete abbastanza soldi da pagarvi una formazione decente.

Naturalmente, parlando di attività libero-professionali, quella di sviluppatore è soggetta a una serie di preconcetti sociali e personali di cui non vi libererete mai. Sarete sempre il regazzetto che fa qualche lavoretto per portare a cena la pischella. Non credeteci. Uno sviluppatore indipendente, se ben formato, può essere tanto professionale quanto uno dipendente. Solo che sarà dieci volte più difficile, perchè non avrete nessuno che vi insegni davvero. Non avrete nessuno con cui confrontarvi e col quale risolvere i problemi insieme.

La maggior parte del vostro tempo passerà tra capire come funziona wordpress e imparare la OOP. Se imparerete anche il paradigma MVC starete a cavallo.

Una volta che vi sarete fatti le ossa con lo sviluppo web semplice, potrete passare a cose più avanzate, app mobile e sistemi integrati.

Come diventare un Freelancer

Facile, aprite una P.IVA.

Costa meno di 100€ e potrete farci quello che vorrete. Potrete finalmente pagare le tasse (non vedevate l’ora eh?). Le tasse sono la cosa più brutta del mondo, e vi toglieranno circa il 50% di quello che incasserete. Ricordatevi di mettere a pizzo i soldi per pagarle, che l’Agenzia delle Entrate non scherza, l’Agenzia delle Entrate vi fa il culo. Brutto. Vorrei sottolineare questo concetto di più, ma non è possibile. Date retta. Non fate incazzare lo Stato.

Una volta aperta una P.IVA, fatevi i vostri bei profili social. FB, IG, Threads (credo?), LinkedIn, YouTube. Tutto. È difficile trovare clienti, e l’unico vantaggio che avete voi è che non pagate l’IVA. Potrete fare prezzi del 22% più convenienti degli altri.

Attenzione, però, che è un attimo farsi un pessimo nome. Prendete solo progetti che siete sicuri di riuscire a portare a termine con dignità. Non perfetti, non se l’aspetta nessuno, ma almeno buoni.

Diciamo che per Diventare un freelancer non è che ci sia molto da fare, dovrete solo trovare clienti, di base.

Formazione

Anche qui, la parte più importante. E, in questo caso, anche la più difficile.

Eh già, perchè da liberi professionisti, non avrete un percorso scritto nella roccia del Business Plan del vostro COO. Dovrete aprirvi la strada a colpi di maraccio, imparando tutto quello che potrete per dare ai vostri clienti il servizio migliore possibile.

Naturalmente, tutto quello che ho detto sopra vale sempre, meglio l’università, poi i corsi di formazione, poi i bootcamp più piccoli. Sopra avevo detto che l’ordine era C++, Java, PHP e Python, giusto? Beh ecco, da freelancer il migliore è sicuramente PHP, perchè ci potrete iniziare la carriera con i siti web semplici e veloci da fare. PHP, HTML, JavaScript, CSS (la famosa Stack), purtroppo .Net e un pizzico di Python sono i linguaggi su cui focalizzarvi di più. Poi capirete che un linguaggio vale l’altro, ma al momento di cominciare, questi sono i più semplici e i più usati per il web development. Imparate bene come funzionano i database relazionali (MySQL, PostgreSQL eccetera) che sono fondamentali.

Fatevi qualche corso su delle piattaforme online (io uso Udemy ma sono tutte uguali), possibilmente sullo sviluppo di wordpress o di un’altra CMS (ma wordpress noterete che è meglio per l’inizio). Una volta che avrete una buona familiarità con il PHP, cominciate ad approfondire Python e create il vostro primo sito web con Django. Uno qualsiasi va bene, vi sconsiglio un e-commerce, che presenta un po’ di difficoltà all’inizio, ma magari qualcosa di più semplice, come il sito di un bar, di una libreria o roba simile, insomma.

A questo punto, cominciate con le cose un po’ più complesse. Architettura cloud, studiate AWS, studiate Azure. Vi serviranno poco, ma vi pagheranno cifre senza senso per cose relativamente semplici.

Imparate a usare per benino Photoshop, Illustrator, After Effects e Premiere. Può sembrare sciocco, ma siete indipendenti. Non avrete un “reparto grafico” alle spalle, dovrete fare tutto voi. Imparate a parlare e a scrivere bene. I Social sono fondamentali. È un servizio in più che potrete vendere ai vostri clienti per un ritorno mensile non trascurabile. Quando avrete una decina di clienti che vi danno 100€ al mese per gestire i loro social, avrete una rendita stabile e potrete cominciare a lavorare su progetti più seri, o magari pensare di assumere qualcuno per un progetto più grande.

Quando avrete una solida customer base, sarà il momento di diventare dei fighi a motore. Tenetevi tutti i lavori più semplici, ma cominciate anche a cercare qualcosa più di nicchia. POS, ADE, CRM. Cominciate a sviluppare per il gusto di farlo, e vendete i vostri prodotti sul mercato (è molto meglio che cercare clienti individuali). Sviluppate qualche plugin di WordPress o di Magento, integrate il vostro software con le API di OpenBanking o dell’Agenzia delle Entrate, cominciate a produrre oggetti che funzionano con sensoristica (basta un Raspberry Pi, oggi. Dieci anni fa era un incubo), compratevi una stampante 3d e sviluppate i vostri primi prototipi di hardware integrato al vostro software.

È difficilissimo, ma è il massimo se riuscirete ad avere una stabilità economica. Però state attenti: se non la troverete in tempi ragionevoli, andate a lavorare per qualcuno, è sempre meglio che morire di fame.

Imparare a programmare per il gusto di farlo

Bella la vita eh?

Beh, che dire, questa è ovviamente la strada più bella e più divertente.

Di base, imparerete una skill per cultura o per hobby. Fico. Un hobby un po’ complicato, ma fico.

Iniziate con Python, che è il più approcciabile dai neofiti. Non avete il vincolo economico, quindi prendetevi il vostro tempo, fatevi qualche progetto fico, costruite un robot, createvi un assistente virtuale che sostituisca il vostro Alexa o Google Nest (se ancora li producono).

Cominciate a studiare come sviluppare videogiochi. Magari non vi interessa, ma vi farà familiarizzare con concetti molto importanti della programmazione, poi magari lo installerete sul cellulare di vostro nipote che ci giocherà tre minuti prima di passare a clash of clans.

Ma non vi fermate a Python. Se per voi è una passione, vi consiglio di approfondire cose un po’ più niche, studiatevi Assembly x86, studiatevi Basic, C++, elettronica. Cercate di capire come funzionano i circuiti, fatevi un bell’Arduino (non il re, il prodotto), e cominciate a dedicarvi a un progetto di un po’ più lungo respiro, tanto non vi corre dietro nessuno.

Alcune delle più grandi innovazioni sono nate proprio così, è la cosa più bella.