diff --git a/docs/it/percorsi-di-formazione-alternativi.md b/docs/it/percorsi-di-formazione-alternativi.md new file mode 100644 index 00000000..128a7c8e --- /dev/null +++ b/docs/it/percorsi-di-formazione-alternativi.md @@ -0,0 +1,175 @@ +--- +layout: default +title: Percorsi di formazione alternativi +nav_order: 17 +--- + + +# Percorsi di formazione alternativi +{: .no_toc } + +- TOC +{:toc} + + + +## Premessa + +Questo capitolo nasce con l'intento di fornire una panoramica generale sui percorsi di formazione alternativi in ambito dev, partendo dall'assunzione che chi legge si stia ponendo la domanda: _"Come posso diventare developer?"_, ma soprattutto: _"Posso farlo anche senza diplomarmi o laurearmi in informatica?"_. Iniziamo con il dire che la risposta a quest'ultima domanda è: **sì**. + +## Introduzione + +Quando si muovono i primi passi, quelli dettati dalla curiosità e dalla voglia di intraprendere un nuovo percorso formativo/lavorativo, ci si imbatte sin da subito con il mondo della **formazione**. + +Basta una semplice ricerca su Google, del tipo: _"Come diventare developer?"_ + +Da lì in avanti i vari canali social, da Instagram a TikTok, dai video promozionali di YouTube alle inserzioni su Facebook, inizieranno a proporre differenti percorsi formativi, principalmente incentrati sulla figura professionale nota come _Fullstack Developer_. + +Ma cosa c'è dietro questa fantomatica figura e come mai è così ricercata dal mercato tanto da essere sulla bocca della maggior parte dei percorsi formativi? + +Chi ricopre il ruolo di _Fullstack Developer_, teoricamente, conosce uno o più linguaggi di programmazione _frontend_ e _backend_. +Qui si apre uno scenario enorme che cercheremo di ridurre molto semplicemente come segue. +Stiamo parlando di **formazione** in ambito **programmazione**, quindi di quali strade si possono percorrere per imparare a programmare, e dunque entrare nel mondo dello sviluppo software. +Quindi chi scrive codice crea il programma. +Il programma è tendenzialmente composto da una parte grafica ed una parte logica. + +Prendiamo l'esempio dell'ambito più semplice (in termini di comprensione) nel settore tech: il web. +Un programma sul web è un _sito web_, il quale è composto da una parte grafica, che permette all'utente di interagire, ed una parte logica, che a sua volta interpreta le azioni dell'utente. + +Un tempo, fortunatamente ormai lontano, tutto questo veniva svolto da un'unica figura: il _Web Master_. +Poi siamo passati ad avere 2 figure: _Web Designer_ (la figura che si occupava di realizzare l'interfaccia grafica, detta anche UI/UX) e _Web Developer_ (che traduceva in codice ciò che veniva designato dalla prima figura). +Oggi la situazione è differente, e per fare un sito web servono almeno 3 figure: _Designer_, _Frontend Developer_ e _Backend Developer_. + +Tutto ciò ovviamente oggi ha un costo nettamente superiore in ottica aziendale, per questo motivo il mercato necessita di _Fullstack Developer_ che siano in grado di tradurre le componenti prodotte dal _Designer_ e agganciare le logiche funzionali del progetto. + +Per comprendere meglio la differenza tra _Frontend Developer_ e _Backend Developer_ bisogna però scendere maggiormente nei dettagli. + +Chi ricopre il ruolo di _Frontend Developer_ dovrà programmare tutta la parte "visiva" del progetto. Quindi appunto tradurrà in codice tutto ciò che è stato progettato nel _design_. +Chi invece ricopre il ruolo di _Backend Developer_ dovrà realizzare tutta la parte logica e funzionale "dietro le quinte" del progetto. +Possiamo dire che è una spiegazione un po' approssimativa ma per ora dovrebbe bastare. + +Quindi, per sommi capi, la figura del/la _Fullstack Developer_ è la fusione tra _Frontend Developer_ e _Backend Developer_. + +Chi lavora nel settore è ben consapevole che ad oggi, con l'evoluzione dei linguaggi di programmazione, risulta **difficilissimo** conoscere e padroneggiare in maniera corretta ed approfondita entrambi gli aspetti (_frontend_ e _backend_), mentre i percorsi di formazione mirano piuttosto a fornire un'infarinatura generale di entrambi gli aspetti per permettere poi a chi vuole diventare _developer_ di scegliere in autonomia quale strada seguire. + +_Con il termine "Fullstack" intendiamo una figura che però non ha necessariamente competenze sistemistiche, di infrastruttura, di UI/UX e tutte quelle nuance che al giorno d'oggi sono però fondamentali._ + +"Ok, ma queste informazioni come possono essermi utili nella **scelta degli argomenti su cui formarmi?**" + +Sapere che esistono questi 2 mondi, _frontend_ e _backend_, permette di fare una piccolissima separazione logica tra le varie strade che si possono intraprendere nel diventare **developer**. + +La cosa fondamentale che bisogna tenere a mente quando si inizia ad intraprendere un percorso di formazione nell'ambito della programmazione è: se inizi con una cosa non è detto che poi farai quella per tutto il resto della carriera. + +"Cosa vuol dire?" +Ad esempio: se inizi come _Frontend Developer_ non è detto che un domani tu non possa cambiare strada e passare al lato oscuro (_backend_). + +Per tale motivo spesso chi fa formazione propone dei percorsi di _fullstack_ in ambito web. + +"Ok, ma come mai parliamo di siti web e non di videogiochi?" +Perchè la curva di apprendimento è più bassa per chi vuole imparare a realizzare siti web, quindi è più facile che sia a portata di molta più gente, e se teniamo a mente sempre il concetto fondamentale per cui "se si inizia come _frontend_ non è detto che si finisca da _frontend_" allora vien da sé pensare che un _frontend_ oggi possa diventare un _Game Developer_ domani. + +Inoltre le tecnologie che si toccano con mano durante la fase di apprendimento in ambito web sono diverse (HTML, CSS, JavaScript) e ciò permette di avere una overview più ampia. + +Facciamo un esempio: con JavaScript possiamo sviluppare _siti web_ ma non solo: grazie alla versatilità del linguaggio possiamo ad oggi spaziare su tantissimi altri argomenti, dalle **Mobile App** ai **Videogiochi**. Addirittura con JavaScript oggi possiamo fare qualcosa che fino a qualche anno fa sembrava impossibile: il _backend_. + +"Mi stai dicendo che se voglio diventare _Game Developer_ devo prima formarmi come **developer web**?" +Assolutamente no. + +Se si hanno le idee chiare sin da subito allora la scelta del percorso formativo è molto più semplice, d'altro canto partire dallo sviluppo web è la strada migliore per chi ancora non ha preso una decisione in quanto consente una maggiore accessibilità. +La permeanza della tecnologia web permette anche un accesso al mercato più facile e rapido rispetto ad altri campi. + +"Mi stai dicendo che è più facile fare i siti web piuttosto che i giochi?" +Assolutamente no. + +Il concetto è che fare siti web è più accessibile sia in termini di **risorse tecnologiche** che in termini di **know-how** di partenza, per un neofita, rispetto a fare videogiochi. + +"Ok, ipotizziamo che voglia partire nell'imparare a fare siti web, come scelgo il percorso giusto?" +Non c'è una risposta corretta o sbagliata a questa domanda, tutto dipende dall'approccio che si ha con lo studio; subentrano poi anche altri fattori non da poco come, ad esempio, il tempo (inteso sia come tempo a disposizione per studiare e sia come quantità di tempo necessaria per raggiungere lo scopo), oppure gli sbocchi lavorativi. + +## Prima fase: come approcciare lo studio + +Ci sono corsi formativi che lasciano maggiore autonomia e altri che invece seguono più assiduamente i propri studenti. +Non ce n'è uno giusto piuttosto che uno sbagliato, l'importante è tenere a mente un altro concetto fondamentale: noi developer non smettiamo mai di imparare e, la maggior parte delle volte, impariamo per conto nostro. +Sicuramente sarebbe meglio, almeno nella fase iniziale, avere qualcuno che ci segua ed alimenti la nostra curiosità. +Un tutor ci permette di avere una guida, un supporto (anche morale e non solo tecnico); avere qualcuno che indirizza e che spiega all'inizio può essere d'aiuto piuttosto che chiedersi se stiamo approcciando correttamente o meno ad un problema o ad una soluzione. +La curiosità invece ci insegna l'autonomia e soprattutto, cosa molto importante, ci aiuta a trovare la nostra strada. + +A tal proposito, tieni sempre a mente quanto segue: **Google è tuo amico, ma soprattutto il tuo miglior alleato**. + +## Seconda fase: il tempo + +Alcuni percorsi di formazione si sviluppano per periodi di tre mesi, altri di sei, altri ancora offrono dei pacchetti personalizzati. +Alcuni sono costituiti da classi e le lezioni si tengono in presenza, altri invece completamente da remoto con lezioni live oppure on-demand. +Anche qui, una formula magica non esiste. + +Diventare developer non è semplice, ed essere developer è una questione di **mindset**, quindi serve del tempo per cambiare il nostro modo di approcciare e di vedere le cose. +In sostanza... ci vuole tempo. + +Quindi maggiore tempo dedichiamo alla nostra formazione e migliore sarà il risultato che otterremo alla fine del processo. +La scelta dovrebbe essere soggettiva e ponderata, basandosi sulla quantità di tempo che si ha a disposizione. +Il tempo è il maggiore investimento in questa fase; più tempo dedicate, migliore sarà il risultato finale. + +"Va bene, quindi quanto tempo serve e quanto tempo dovrei dedicare alla mia formazione?" +Il tempo non è mai abbastanza, e soprattutto molto soggettivo riguardo al raggiungimento del risultato, quindi la risposta giusta è: investi il miglior tempo possibile nella tua formazione. + +Ad esempio: se il percorso di formazione offre lezioni mattutine, sarà necessario dedicare anche altro tempo durante la giornata per fare pratica in autonomia ed approfondire gli argomenti visti a lezione. + +In poche parole: non basta il tempo "vivo" proposto dal percorso di formazione, questo perchè è necessario che chi sta imparando riesca ad "entrare" nell'ottica... ovvero acquisire il **mindset** da developer. + +"Ma se ho un lavoro come faccio ad investire tutto questo tempo?" + +> Generalmente se ci si affida ad un percorso di formazione per imparare a programmare sarebbe meglio dedicarsi fulltime ad esso, perchè la mole di nozioni da acquisire nel pochissimo tempo a disposizione (tre o sei mesi) è molto elevata. +> Sarebbe più consigliabile un altro tipo di approccio per chi non dispone di così tanto tempo: studiare da autodidatta oppure attraverso un percorso personalizzato; in questo caso però non sarà possibile ottenere un risultato in soli tre/sei mesi ma ci vorrà molto più tempo. + +Quindi se non avete pazienza, tempo, passione, curiosità e voglia è meglio lasciare perdere. + +## Terza fase: gli sbocchi lavorativi + +Gli sbocchi lavorativi nel settore della programmazione sono tanti. +La programmazione è un trend in costante crescita dato che è una materia in continua evoluzione. + +Scommettere quindi su una tecnologia piuttosto che su un'altra per impostare la propria carriera lavorativa potrebbe essere un errore: il rischio di diventare un "dinosauro" e ritrovarsi fuori mercato è troppo alto. + +Se si vuole rimanere appetibili nei confronti delle aziende e del mercato dobbiamo quindi essere in grado di adattarci ai cambiamenti e, soprattutto, aggiornarci. La formazione è un tema piuttosto spinoso per molte aziende, quindi mentre in alcune di queste vengono proposti percorsi di formazione interni strutturati, è importante considerare che la formazione e l'aggiornamento dovrà partire in primis da noi, in autonomia. + +La figura _Web Designer_ di ieri, che si limitava solamente ad impostare graficamente gli elementi a schermo, è diventata oggi _Frontend Developer_ che è in grado di mettere mano a _Framework_ e varie _librerie_. + +Questo concetto spiega bene 2 cose: + +- bisogna continuare ad imparare e ad aggiornarsi +- non si può fare affidamento su di una tecnologia + +"Tutto bellissimo, ma come faccio a sapere se un percorso di formazione mi permette di lavorare dopo? +Chi mi dà questa certezza dato che spesso e volentieri hanno dei costi alti?" +Il settore della programmazione, come dimostrano le statistiche, non è un settore in perdita e non è un settore saturo, perlomeno nel periodo in cui questo contenuto è stato scritto. +Basta una piccola ricerca su Google o un giro nella sezione "Lavoro" di LinkedIn (impostando come criterio di ricerca `developer`) per rendersi conto di quanta domanda c'è da parte delle aziende. + +Inoltre spesso (anzi oserei dire che è quasi diventato uno "standard") chi propone percorsi di formazione favorisce l'incontro dei propri corsisti con alcune Aziende Partner che sono interessate ad assumere una volta terminato il percorso. + +"Cosa mi posso aspettare al termine di un percorso di formazione? Avrò autonomia e le competenze necessarie per il mondo del lavoro?" +Sicuramente al termine di un percorso di formazione si potrebbe essere più consapevoli di cosa aspettarsi scegliendo di percorrere la carriera da developer, di quali siano gli strumenti necessari e di quali siano le qualità che costituiscono una figura competente. + +Sia che il corso duri tre mesi, o sei, o addirittura dodici, si è ancora _Junior_. +Una figura _Junior_ rimane tale fino a quando non ottiene la completa **autonomia** lavorativa, sia con gli strumenti che già conosce e sia con gli strumenti che dovrà apprendere. + +Ricordiamo che l'apprendimento nel mondo della programmazione è una costante, e ricordiamo anche che la maggior parte del tempo, durante la carriera professionale, apprendiamo in solitaria. + +Al termine del percorso di formazione si faranno le prime esperienze lavorative sia sotto l'aspetto colloquiale (eh si anche quelli sono tosti) sia sotto l'aspetto lavorativo nudo e crudo. + +Scegliete un percorso di formazione che vi permette di lavorare in **team** facendovi sporcare le mani con vari progetti da realizzare ed altrettanti strumenti da padroneggiare. + +"Ok tutto chiaro, ma le aziende cosa cercano? Perchè dovrebbero prendere una persona che ha fatto un corso?" +Le aziende cercano, e cercheranno sempre, figure _Junior_ perchè esse sono più "malleabili" e quindi è più facile "impostarle" per quelle che sono le necessità specifiche dell'azienda in questione. + +Quando una azienda assume, significa che è pronta a investire tempo e denaro sulle nuove risorse, quindi è pronta a fare crescere qualcuno all'interno del proprio ambiente. + +Ciò significa 2 cose: + +- c'è ancora da imparare, ma... +- ...questo porta a crescita personale e formativa + +Ovviamente però l'azienda ha bisogno di alcune "certezze" prima di assumere un candidato, spesso tali certezze sono difficili da ottenere specialmente sotto l'aspetto tecnico, e non basta un test per capire se si ha davanti la persona adatta per il modus operandi dell'azienda o del team. + +Dunque scegliere un percorso di formazione, se si ha la possibilità, sicuramente è meglio piuttosto che decidere di intraprendere un percorso da "autodidatta" sia perchè otterrete dei risultati tangibili in minor tempo, sia anche perchè il percorso di formazione stesso vi farà da "garante". + +Quindi, per concludere, se non sai da dove partire, **buttati**! Strada facendo, troverai quella più adatta alle tue esigenze. Se invece hai già le idee chiare, allora è tutto più semplice (ma ricordati di essere disponibile al cambiamento).