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 capitolo "Percorsi di formazione alternativi" #177

Merged
merged 40 commits into from
Aug 21, 2024
Merged
Changes from 3 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
9912379
feat: rimessa in piedi capitolo formazione applicando i suggerimenti
Cadienvan Nov 29, 2023
56be3bf
fix sintassi
serenasensini Dec 14, 2023
7f5585b
chore: corretti alcuni typo e forme
Cadienvan Dec 16, 2023
1ee97eb
chore: applicazione suggerimenti
Cadienvan Jan 20, 2024
b02d1c8
Merge branch 'main' into add/formazione
Cadienvan Jan 20, 2024
ba4b83c
feat: revisione
Cadienvan Feb 10, 2024
76126cc
chore: rimosso piramide
Cadienvan Feb 10, 2024
3da08e0
feat: aggiunto matomo tracking (#192)
Cadienvan Jan 22, 2024
48f14b1
Aggiunge capitolo "come affrontare l'età nel mondo it" (#157)
Cadienvan Jan 22, 2024
207cb33
docs: aggiunto nuovo capitolo all'indice (#202)
Cadienvan Jan 22, 2024
a130112
docs: aggiunto nuovo capitolo all'indice (#203)
Cadienvan Jan 22, 2024
695d0cd
feat: Aggiornamento contenuti di README e CONTRIBUTING (#198)
Cadienvan Jan 27, 2024
c4add1e
Capitolo test: Aggiunta sezione Tools e modificato sezione 'tecniche …
mariomontella Jan 27, 2024
5ca41e4
Aggiunge "Sviluppo Mobile" (#152)
AngeloAvv Jan 27, 2024
2a57fb4
chore: fixing url (#204)
Cadienvan Jan 27, 2024
dbaa495
Aziende di consulenza vs prodotto (#155)
fulgido Jan 29, 2024
fa31cab
feat: aggiunto playwright nella lista tool e2e (#207)
Gigiz Feb 1, 2024
7812859
feat: add github link to book page (#209)
corradopetrelli Feb 3, 2024
1a8744f
chore: corretti typo (#211)
Cadienvan Feb 3, 2024
e464507
chore: cambiato nome capitolo e aggiunta premessa
Cadienvan Feb 10, 2024
ce74b91
chore: prettier
Cadienvan Feb 10, 2024
a474de5
chore: fix grammaticale
Cadienvan Feb 19, 2024
3448f2a
chore: revisione
Cadienvan Feb 20, 2024
1488d86
Merge branch 'main' into add/formazione
Cadienvan Feb 20, 2024
7c29776
Update docs/it/percorsi-di-formazione-alternativi.md
Cadienvan May 11, 2024
d16b210
Merge branch 'main' into add/formazione
Cadienvan May 11, 2024
4ea8323
Apply suggestions from code review
Cadienvan May 18, 2024
b8cd73a
Update docs/it/percorsi-di-formazione-alternativi.md
Cadienvan May 27, 2024
191a89d
Update docs/it/percorsi-di-formazione-alternativi.md
Cadienvan May 27, 2024
f4bd89f
Update docs/it/percorsi-di-formazione-alternativi.md
Cadienvan May 27, 2024
06b18b8
Apply suggestions from code review
Cadienvan May 27, 2024
81458fe
Merge branch 'main' into add/formazione
Cadienvan May 27, 2024
5b998db
Merge branch 'main' into add/formazione
Cadienvan May 31, 2024
e9952fe
Apply suggestions from code review
Cadienvan Jun 8, 2024
ba189c5
Merge branch 'main' into add/formazione
Cadienvan Jun 25, 2024
521debf
Apply suggestions from code review
Cadienvan Jun 27, 2024
1b186c9
Merge branch 'main' into add/formazione
Cadienvan Jun 27, 2024
99f1b92
Merge branch 'main' into add/formazione
Cadienvan Aug 21, 2024
72f20f2
chore: substituting lines + toc
Cadienvan Aug 21, 2024
7a0986d
chore: linting
Cadienvan Aug 21, 2024
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/it/formazione.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 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 un sipario enorme che cercheremo 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.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Quindi chi programma crea il programma.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Il programma è 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 ormai lontano, fortunatamente, tutto questo veniva svolto da un'unica figura: il _Web Master_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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 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.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Invece chi copre il ruolo di _Backend Developer_ dovrà realizzare tutta la parte logica e funzionale, e quindi del comportamento, del progetto.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Possiamo dire che è una spiegazione un pò approssimativa ma per ora dovrebbe bastare.

Quindi, per sommi capi, la figura del _Fullstack Developer_ è la fusione tra _Frontend Developer_ e _Backend Developer_.

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_), 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._
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 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 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.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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 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 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 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 e sviluppi la nostra curiosità.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
Qualcuno che ci segue 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.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
La curiosità invece ci insegna l'autonomia e soprattutto, cosa molto importante, ci aiuta a trovare la nostra strada.

**Google è il nostro migliore amico**.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

## Seconda fase: il tempo

Alcuni percorsi di formazione si stendono su periodi di 3 mesi, altri di 6, altri ancora offrono dei pacchetti personalizzati.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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 è il risultato che otterremo alla fine del processo.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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

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

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

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, rimanendo sempre nel campo dei 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.
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 ad una tecnologia
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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

"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 è più consapevoli di cosa si potrebbe fare in quanto developer, di quali siano gli strumenti necessari, di quali siano le qualità che costituiscono una figura competente, 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_.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved
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 in solitaria.
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 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 riguardo la parte tecnica, e non basta un test per capire se si ha davanti la persona adatta per il modus operandi dell'azienda o del team.
Cadienvan marked this conversation as resolved.
Show resolved Hide resolved

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).