Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aggiunta prima stesura per capitolo formazione #124

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions docs/formazione/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Formazione

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 un developer"_
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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 del _Fullstack Developer_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Ma chi è questo fantomatico _Fullstack Developer_ e come mai è così ricercato dal mercato tanto da essere sulla bocca della maggior parte dei percorsi formativi?
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Il _Fullstack Developer_ è uno sviluppatore che, teoricamente, conosce uno o più linguaggi di _frontend_ e di \_backend.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Ok, qui si apre un sipario enorme che cercheremmo di ridurre molto semplicemente come segue.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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.
Quindi chi programma crea il programma.
Il programma è composto da una parte grafica ed una parte logica.

Prendiamo l'esempio dell'ambito più semplice (in termini di comprensione): 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 ormai lontano, fortunatamente, 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) ed _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_ (colui che si occupa di realizzare l'interfaccia grafica UI/UX), _Frontend Developer_ e _Backend Developer_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Tutto ciò ovviamente oggi ha un costo nettamente superiore in termini anche aziendali, 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.

Bisogna però che ci addentriamo un pochino meglio nella questione per comprendere bene la differenza tra _Frontend Developer_ e _Backend Developer_.

Chi copre il ruolo di _Frontend Developer_ dovrà programmare tutta la parte "statica" del progetto. Quindi appunto tradurrà in codice tutto ciò che è stato progettato nel _design_.
Invece chi copre il ruolo di _Backend Developer_ dovrà realizzare tutta la parte logica e funzionale, e quindi del comportamento, del progetto.
Possiamo dire che è una spiegazione un pò approssimativa ma per ora dovrebbe bastare.

Quindi, per sommi capi, il _Fullstack Developer_ è la fusione tra il _Frontend Developer_ ed il _Backend Developer_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

I professionisti di settore sono ben consapevoli 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_), però i percorsi di formazione mirano piuttosto a fornire un'infarinatura generale di entrambi gli aspetti per permettere poi al futuro "developer" di scegliere in autonomia quale strada seguire.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

_Con il termine "fullstack" intendiamo una figura che però non ha necessariamente competenze sistemistiche, di infrastruttura, di UI/UX e tutte quelle nuances che al giorno d'oggi sono però fondamentali._

Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
"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 cernita 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 nel caso dei 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_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

"Mi stai dicendo che se voglio fare il _Game Developer_ devo prima diventare un **developer web**?"
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Assolutamente no.

Se si hanno le idee chiare sin da subito allora la scelta del percorso formativo è molto più semplice, se si hanno invece le idee confuse, inizialmente, allora partire dallo sviluppo web è la strada migliore in quanto più accessibile.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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 dal proprio approccio che si ha con lo studio, ma subentrano 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 percorsi formativi che lasciano maggiore autonomia e percorsi formativi che invece seguono più assiduamente i propri alunni.
Non c'è un giusto o sbagliato, l'importante è tenere a mente un altro concetto fondamentale: il developer non smette mai di imparare, e la maggior parte delle volte impara da solo.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Sicuramente sarebbe meglio, almeno nella fase iniziale, essere seguiti ed essere curiosi.
Essere seguiti ci permette di avere una guida, un supporto (anche morale e non solo tecnico), 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.
Essere curiosi invece ci permette di imparare ad essere autonomi e soprattutto, cosa molto importante, a trovare la nostra strada.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

**Google è il nostro migliore amico**.

## Seconda fase: il tempo

Alcuni percorsi di formazione si stendono su periodi di 3 mesi, altri di 6, 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, 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 è 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, quindi la risposta giusta è: il più possibile.

Ad esempio: se il percorso di formazione offre lezioni mattutine, sarà necessario dedicare almeno altre 3 ore di pratica e approfondimenti.

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 (3 o 6 mesi) è molto elevata.
Sarebbe più consigliabile un altro tipo di approccio per chi non dispone di così tanto tempo, ovvero l'autodidatta oppure un percorso personalizzato, in questo caso però non sarà possibile ottenere un risultato in soli 3/6 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 costante evoluzione.

Fare quindi affidamento ad una tecnologia piuttosto che ad un'altra per impostare la propria carriera lavorativa temo sia un errore enorme, 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 (eh si... spesso questo processo avviene in completa autonomia).

Facciamo un esempio: settore siti web.
Prima i Layout (la parte grafica del sito web) non seguivano degli "standard" veri e propri, poi ad un certo punto sono nati dei _Framework_ (si tratta di un'insieme di strumenti) che hanno definito tali standard (come ad esempio il concetto di colonne molto utile per rendere un sito web _responsive_ ovvero adattabile ad ogni dispositivo).

Quindi chi progettava i Layout ha dovuto apprendere tali "standard" per non rimanere fuori mercato dato che, ovviamente, tutti i siti ad oggi sono navigabili e fruibili anche dal nostro Smartphone.
I _Web Designer_ di ieri, che si limitavano solamente ad impostare graficamente gli elementi a schermo, sono diventati oggi dei _Frontend Developer_ che sanno 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 ad una tecnologia

"Tutto bellissimo, ma come faccio a sapere se un percorso di formazione mi permette di lavorare dopo?
Chi mi da questa certezza dato che spesso e volentieri hanno dei costi alti?"
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Il settore della programmazione, come detto in precedenza, non è un settore in perdita e non è un settore saturo.
Basta una piccola ricerca su google per rendersi conto di quanta domanda c'è da parte delle aziende.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Inoltre spesso (anzi oserei dire che è quasi diventato uno "standard") chi propone percorsi di formazione ha a disposizione alcune Aziende Partner che sono interessate ad assumere una volta terminato il percorso.

"Cosa mi posso aspettare al termine di un percorso di formazione? Sarò autonomo e pronto per il mondo del lavoro?"
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Sicuramente al termine di un percorso di formazione si è più consapevoli di cosa faccia un developer, di quali siano gli strumenti necessari, di quali siano le qualità che costituiscono un bravo developer, e soprattutto di cosa ci si aspetta da lì a poco.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

Sia che il corso duri 3 mesi, o 6, o addirittura 12, 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 progammazione è una costante, e ricordiamo anche che la maggior parte del tempo, durante la carriera professionale, apprendiamo da soli.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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 ad investire del tempo e del denaro su delle nuove risorse, quindi è pronta a fare crescere qualcuno all'interno del proprio ambiente.

Ciò significa 2 cose:

- dovrete ancora imparare
- 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 riguardo la parte tecnica, 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 parti spaesato buttati che strada facendo troverai quella più adatta alle tue esigenze, se invece hai già le idee chiare allora è tutto più semplice (ma ricordati di essere pronto al cambiamento).
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
29 changes: 7 additions & 22 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.