Trovare lavoro come programmatore senza esperienza

La prima ricerca di una posizione lavorativa come sviluppatore può troncare da subito ogni entusiasmo. Non si sa da dove iniziare tanto nella scrittura del curriculum, quanto nella richiesta di contatto con le aziende di servizi informatici. Il curriculum stesso è scarno, perché a parte la formazione scolastica e universitaria e qualche esperienza lavorativa per mantenersi gli studi, non c’è proprio altro da aggiungere. Pure il linguaggio di programmazione e i framework che meglio si conoscono, sembrano avere ben poco lavoro da offrire senza almeno averci sviluppato un progetto di medie dimensioni.

In questo articolo voglio spiegarti passo passo come uscire da questo circolo vizioso (tipico comunque di un po’ tutti i lavori). In gergo anglofono ha una locuzione precisa: “no job – no experience – no job loop“.

A chi si rivolge il presente articolo

Se hai fatto un percorso di studi standard ad hoc per lavorare nell’informatica (quindi hai un diploma tecnico oppure una laurea triennale e/o magistrale in informatica o ingegneria informatica); se hai sempre programmato per passione; se ti sei specializzato in uno specifico stack di sviluppo (un linguaggio di programmazione, la sua libreria standard, un framework per lo sviluppo di un certo tipo di applicazioni e un database – oltre al sistema operativo e altri tool a supporto); se infine hai partecipato allo sviluppo di qualche progetto software ma non hai mai pensato di monetizzarlo in qualche modo (sia rilasciandone la licenza a pagamento, sia fornendolo come servizio); in tutti questi casi questo articolo fa al caso tuo.

Se invece sei proprio alle prime armi, dovresti prima cominciare da qui. Tuttavia questo articolo potrebbe interessarti, quindi leggilo pure e, se non capisci qualcosa, torna a ripassarlo tra qualche tempo.

Perché un’azienda dovrebbe assumere uno sviluppatore senza esperienza

Molte software house, a dispetto di quel che credi, sono interessate ad assumere una risorsa senza curriculum (a patto però che abbia un minimo di formazione). Questo vale soprattutto per persone giovani che abbiano appena finito il percorso di studi e ciò per una serie di motivi:

  • innanzitutto far crescere la risorsa con l’azienda: uno sviluppatore che comincia da zero a formarsi sui suoi prodotti specifici e ad acquisire competenze nel settore a cui l’azienda stessa si rivolge, garantisce una serie di vantaggi in termini di continuità nel portare avanti le deadline di sviluppo. Inoltre porta innovazione ed energie fresche nel team e, soprattutto, dà maggiori probabilità di stabilità del business. Questo, ovviamente, in condizioni di management ottimale (altrimenti dopo qualche tempo, il programmatore cerca altri lidi, causando tutto il contrario di quello che si sperava di ottenere inserendolo nell’organico)
  • le aziende hanno una serie di agevolazioni economiche e fiscali (periodo di stage retribuito senza contratto, periodo più o meno lungo di apprendistato con minor costo del lavoro, altri sgravi d’imposta ecc.)
  • un giovane developer che cresce con l’azienda dà maggiori garanzie di sentire come sua la mission aziendale, di credere negli obiettivi e nei progetti proposti e, di conseguenza, di riversare nella compagnia tutto il suo entusiasmo e la sua creatività. Questo a patto che, come contropartita, ci siano prospettive di carriera e in, generale, soddisfazione sul lavoro. Altrimenti le conseguenze sono quelle al punto 1.
  • esistono formule contrattuali che prevedono un termine del rapporto di lavoro e un periodo di prova nel quale in qualunque momento una delle due parti può rescindere il contratto senza preavviso. Questo dà all’azienda la possibilità di investire tempo e denaro su di te in quantità ridotte per valutare le tue capacità e a te di testare subito il campo di gioco senza lo stress del periodo di preavviso e dell’abbandono di un contratto a tempo indeterminato.

Per cui se sei impaziente, spamma il tuo curriculum un po’ ovunque e inizia subito il tuo periodo di prova alla prima occasione. Tuttavia ti consiglio di seguire il percorso che esporrò nei prossimi paragrafi, dato che, secondo la mia esperienza, potrebbe prepararti meglio, sia tecnicamente che psicologicamente, alla realtà lavorativa della produzione di software, che, non dimentichiamolo, può catapultarti da un giorno all’altro in un ambiente ipercompetitivo e stressante (ovviamente in base alla realtà in cui ti imbatti). Inoltre, i consigli che darò tra poco, risultano molto utili a chi non è più tanto giovane e non ha possibilità di essere preso per uno stage o con contratto di apprendistato.

Fare esperienza come sviluppatore

Per dimostrare di avere già una certa esperienza come programmatore, bisogna fare esperienza. Ti sembra una tautologia? Lo è, ma l’unico modo per rompere il loop “no job – no experience – no job” è inserire un bel break in un punto del ciclo, no? Nel paragrafo precedente ti ho spiegato come farlo buttandoti a capofitto nella ricerca di uno stage o di un contratto a tempo determinato o a progetto. Qui ti spiegherò in che modo puoi accumulare esperienza per arricchire un po’ il tuo curriculum.

Scrivi programmi per qualunque problema

La tua vocazione è sviluppare software e lo sviluppo software ha tra i suoi obiettivi risolvere problemi, automatizzare compiti ripetitivi e noiosi e aumentare la produttività. Ogni volta che esegui qualche attività, rifletti se potresti gestirla con un software e sviluppalo, anche se esiste già sul mercato (un esempio banale lo trovi qui). Iniziare un progetto da zero e seguirlo in tutte le sue fasi è un’esperienza completamente diversa rispetto a risolvere gli esercizi di un libro di fondamenti di programmazione o rispetto a fare qualche script o progetto di esempio per imparare l’ultimo framework javascript alla moda. Comincerai ad avere un’idea della progettazione e dell’analisi richiesta, del ciclo di vita e dei test necessari perché il programma funzioni. Puoi chiedere anche a parenti ed amici se hanno qualche necessità in particolare che tu potresti soddisfare con un software ad hoc. Se il prodotto è buono, potresti anche richiedere un giusto compenso (in caso contrario avrai fatto esperienza senza far arrabbiare clienti ben più importanti, dato che all’inizio è inevitabile che tu commetta errori anche madornali). Potresti in seguito farlo crescere e proporlo sul mercato; rispetto a competitor più blasonati, il tuo software potrebbe essere preferito perché offre solo un sotto insieme di funzionalità rispetto agli altri, risultando quindi più semplice da imparare e da usare per chi non ha tempo ne soldi da spendere in prodotti molto complessi.

Partecipa a un progetto open source

Ricordo quando cercavo disperatamente consigli per diventare sviluppatore. Divoravo tutti gli articoli che la serp di google mi portava dinanzi agli occhi. Un giorno mi imbattei nel famoso how to di E. S. Raymonds, “How to become a hacker“, che a un certo punto recitava:

I can’t give complete instructions on how to learn to program here — it’s a complex skill. But I can tell you that books and courses won’t do it — many, maybe most of the best hackers are self-taught. You can learn language features — bits of knowledge — from books, but the mind-set that makes that knowledge into living skill can be learned only by practice and apprenticeship. What will do it is (a) reading code and (b) writing code.

Leggere codice, scrivere codice, nient’altro. E per farlo il modo più rapido è andare alla ricerca di codice scritto da chi ha più esperienza di noi in qualche repository pubblico. Ovviamente la ricerca andrà fatta per il linguaggio e il framework che meglio conosci, perché dovrai dare il tuo contributo. I progetti ben fatti hanno a corredo le linee guida per partecipare (scrivendo documentazione, correggendo bug, proponendo migliorie e nuove feature). Spiegherò in un prossimo articolo come valutare un progetto per iniziare.

Ovviamente, a differenza dei progetti sviluppati per qualcuno, qui non guadagnerai nulla, ma a tua volta, gratuitamente avrai a disposizione come caso di studio il lavoro di un team di esperti a cui contribuiscono sviluppatori da tutte le parti del mondo. En passant, potresti accorgerti di come la conoscenza si trasmette e progredisce rapidamente quando è libera. Potrebbe diventare una vocazione. E ne potrebbe nascere una proposta di lavoro all’estero (o un’azienda estera potrebbe pagarti per lavorare da remoto nel tuo comune di residenza, come è successo allo sviluppatore di redis)

Crea un repository git

Una volta accumulato tutto il codice scritto da te, non ti resta che renderlo pubblico, in modo da poterlo inserire in primo piano nella sezione “Esperienze” del tuo curriculum e da farlo esaminare da recruiter, manager e addetti alla selezione del personale. Ciò ti permetterà anche di farti conoscere dai colleghi, qualcuno dei quali potrebbe fare il tuo nome all’azienda per cui lavora per prenotare un colloquio conoscitivo.

I portali on line che uso abitualmente sono bitbucket e github. Questo ad esempio è il mio repository github pubblico (un po’ scarno a dir la verità, ma sto riprendendo a nutrirlo). Per cui, scegline uno (github è più adatto ai repository pubblici e ai progetti open source, bitbucket invece è spesso utilizzato per progetti commerciali), segui le istruzioni per creare un account e carica subito i tuoi sorgenti.

Segui le comunità di sviluppatori

Qualunque sia lo stack in cui ti sei specializzato, troverai sicuramente una folta e attiva comunità di sviluppatori che organizza eventi, conferenze on line, corsi ecc. Spesso ci si trova dal vivo, un ottima occasione per tessere una rete di amicizie e conoscenze nel mestiere; potresti trovare anche qui progetti da seguire o interessanti proposte di lavoro, oppure potresti inserirti in un team di freelance. Quindi, cerca la community che fa al caso tuo, associati e, soprattutto, aggiungi l’apposita voce nel curriculum! Ad esempio, nella sezione del sito italiano ufficiale di python c’è una pagina dedicata che rimanda a gruppi sui social. Da questi gruppi puoi muoverti per cercare informazioni su gruppi più locali vicini alla città in cui vivi.

Preparati ad una prova

Molte aziende, dopo il primo colloquio conoscitivo, sottopongono a una prova i candidati. A volte chiedono espressamente lo sviluppo di un progetto in cui si devono dimostrare determinate abilità (ad esempio lo sviluppo di unit test) oppure creano una serie di quiz di logica e/o sullo stack di sviluppo che a loro interessa. A volte tutte e tre queste cose insieme. Cerca di arrivare sempre preparato a questo tipo di prove. Spesso le aziende che le propongono sono serie, ben organizzate e hanno una buona reputazione anche presso i dipendenti e tu non vuoi certo lasciarti sfuggire un’occasione del genere!

Apri un blog

Un modo per fare una sorta di inbound marketing per aspiranti sviluppatori è quello di aprire un blog tecnico da aggiornare con articoli che siano utili ad altri sviluppatori. Tutto quello che ti capita di risolvere per i tuoi progetti è materia utile per un articolo. Dovrai un minimo curare l’aspetto seo per andare in alto tra i risultati di ricerca di google, tuttavia, anche senza essere in prima pagina, il link del tuo sito nella sezione di informazioni personali e di contatto del tuo curriculum, farà sicuramente un’impressione molto positiva.

Per creare un tuo sito web hai due possibilità: usare un hosting gratuito o acquistarne uno con dominio a corredo. La seconda strada è quella più consigliata dato che gli hosting gratuiti tendono a offrirti un dominio di terzo livello, che può risultare svantaggiato nella serp.

Questo blog ad esempio, è stato creato con keliweb (con cui mi sto trovando molto bene quanto a prestazioni, funzionalità e assistenza).

Il link che ho appena suggerito è un url di affiliazione; se acquisti il servizio tramite quell’indirizzo, contribuisci a sostenere questo sito web.

Ti sconsiglio invece, almeno in questo periodo iniziale di ricerca di lavoro, di aprire un profilo linkedin. Spiegherò un un altro articolo perché è un errore che può metterti fuori strada; qui ti anticipo che spesso i recruiter cercano nel mucchio senza guardare le competenze (o senza capirle), facendoti perdere molto tempo in colloqui telefonici che non portano poi al colloquio con l’azienda (per ovvi motivi, non hai i requisiti richiesti dall’azienda, ma il recruiter ci prova lo stesso).

Conclusioni

In questo articolo ho spiegato quali sono secondo me i passi da compiere per intraprendere le prime esperienze nel mondo dello sviluppo software e arrivare a proporsi alle aziende con un curriculum solido e la preparazione necessaria a superare eventuali test a cui gli addetti alla selezione del personale vorranno sottoporci. Ho mostrato due alternative, cercare subito un’azienda che sia disponibile a un periodo di prova, oppure creare i proprio progetti, contribuire al software open source e frequentare comunità di sviluppatori, per poter essere più forti anche in sede di contrattazione delle condizioni di assunzione. Ho spiegato anche perché uno sviluppatore dovrebbe avere un blog personale dedicato alla programmazione e ho accennato al perché inizialmente non bisognerebbe avere un profilo linkedin (solo inizialmente, per gli sviluppatori con esperienza invece è un ottimo biglietto da visita). Nei prossimi articoli entrerò più nel dettaglio di tutti i vari punti appena esposti.