Nella prima parte della nostra serie abbiamo mostrato che il lavoro dello sviluppatore è molto più che scrivere codice.
Abbiamo parlato dei primi giorni in uno software house, della differenza tra l’università e i progetti reali e del motivo per cui l’esperienza si acquisisce soprattutto con la pratica.
Oggi passiamo alla domanda che quasi ogni Junior si pone. Cosa dovrei effettivamente imparare?
Internet suggerisce di tutto. C’è chi dice che è imprescindibile conoscere React. Altri sostengono che il futuro è di Rust. Altri ancora convincono che senza Docker, Kubernetes e cinque certificati non ha senso inviare il CV.
La verità è molto più tranquilla...
Non imparare i framework. Impara a programmare.
Questa frase può sembrare strana.
In fondo le aziende pubblicano offerte per React Developer, Java Developer o PHP Developer.
Perché allora diciamo di non iniziare dai framework? - Perché un framework è uno strumento. E gli strumenti cambiano molto velocemente.
Solo pochi anni fa molti erano convinti che AngularJS avrebbe dominato per decenni. Oggi la situazione è completamente diversa.
Imparerai framework per tutta la carriera. Ma il modo di pensare da sviluppatore ti resterà per sempre.
Perciò impara prima a:
- risolvere problemi,
- analizzare i requisiti,
- progettare soluzioni,
- leggere il codice altrui,
- scrivere codice leggibile.
La tecnologia è solo un mezzo per raggiungere un obiettivo.
Padroneggia profondamente un linguaggio
Questo è probabilmente l’errore più comune tra i principianti.
Oggi JavaScript. Domani Python. Dopodomani Go. Tra una settimana Rust. Dopo un mese C#...
Dopo due mesi risulta che nessuno di questi è stato padroneggiato adeguatamente. È molto meglio scegliere un linguaggio e conoscerlo davvero.
Capire:
- come funziona la memoria,
- cosa sono i riferimenti,
- come si gestiscono le eccezioni,
- come funzionano le collection,
- qual è la differenza tra programmazione sincrona e asincrona,
- come si fa il debugging.
Quando avrai imparato bene un linguaggio, impararne altri sarà molto più veloce.
Impara a leggere la documentazione
Poco appariscente? Molto.
Estremamente utile? Ancora di più.
Un buon sviluppatore non ricorda tutto. Un buon sviluppatore sa dove trovare una risposta affidabile.
La documentazione ufficiale di un framework o di una libreria sarà quasi sempre una fonte migliore di un post su un forum di sei anni fa.
È proprio la capacità di cercare informazioni che distingue chi si evolve da chi copia all’infinito soluzioni trovate in rete.
Git non è il pulsante "Invia"
Se dovessimo indicare una sola competenza da imparare il prima possibile, sarebbe Git. Non perché sia di moda. Perché praticamente ogni team di sviluppo lo usa.
Git non è solo salvare le modifiche. È un modo di collaborare. Branching. Pull Request. Merge. Risoluzione dei conflitti. Cronologia delle modifiche.
Senza questo è difficile immaginare il lavoro in un team professionale.
E un altro consiglio. Non inviare mai un progetto in un file ZIP. Davvero.
SQL - anche se non vuoi diventare DBA
Molti Junior evitano SQL. È un errore.
La maggior parte delle applicazioni business usa database. Non devi diventare un esperto di ottimizzazione delle query.
Ma dovresti capire:
- cos’è un database relazionale,
- come funzionano le relazioni,
- cos’è un indice,
- qual è la differenza tra LEFT JOIN e INNER JOIN,
- perché una query scritta male può rallentare tutta l’applicazione.
Questa è conoscenza utile in quasi ogni progetto.
Linux non morde
Non devi subito abbandonare Windows. Ma è utile imparare le basi del lavoro con il terminale.
La maggior parte dei server gira su sistemi Linux.
Conoscere comandi di base:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
può farti risparmiare molto tempo.
All’inizio sembra strano. Dopo qualche mese diventa difficile immaginare di lavorare senza terminale.
Docker - perché ne parlano tutti?
Solo pochi anni fa la configurazione dell’ambiente poteva richiedere l’intera giornata.
Ognuno aveva una versione diversa di PHP. Un database diverso. Librerie diverse.
Docker ha semplificato molto questo problema. Permette di eseguire applicazioni in un ambiente identico indipendentemente dalla macchina.
Un Junior dovrebbe diventare subito un esperto di containerizzazione? - No.
Ma vale la pena capire cos’è un container e perché praticamente ogni progetto moderno usa Docker.
L’AI è un ottimo mentore. Non il miglior programmatore.
È un tema che oggi non si può ignorare.
ChatGPT, GitHub Copilot e altri strumenti AI possono accelerare moltissimo l’apprendimento. A una condizione. Non copiare codice senza capirlo.
È molto meglio chiedere:
- Perché questa soluzione è migliore?
- Come funziona questo algoritmo?
- Come si può ottimizzare?
- Quali sono i limiti di questo approccio?
L’AI spiega molto bene.
Non dovrebbe però sostituire il pensiero autonomo.
Il debugger è tuo amico
All’inizio la maggior parte degli sviluppatori fa così: var_dump($variabile);
Poi: echo $variabile;
E un po’ più tardi: console.log(dati);
console.log(dati2);
console.log(dati3);
console.log(dati4);
Tutti abbiamo iniziato così. Ma vale la pena imparare il prima possibile a usare il debugger.
Permette di fermare il programma in qualsiasi punto, osservare i valori delle variabili e capire cosa succede davvero durante l’esecuzione del codice.
È una delle competenze che accelera molto lo sviluppo.
Quale hardware scegliere?
Molti si aspettano una lista di computer da decine di migliaia di zloty. Inutile.
All’inizio sono più importanti di un processore ultra-nuovo:
- una tastiera comoda,
- un disco SSD veloce,
- una quantità adeguata di memoria RAM,
- un ambiente di lavoro stabile.
L’illuminazione RGB colorata non accelera la compilazione. Tre monitor non renderanno il codice migliore.
Un buon hardware dovrebbe aiutare a lavorare. Non fare bella figura nelle foto (anche se, diciamolo, l’aspetto conta ;))
Glossario dei termini
Framework
Insieme pronto di strumenti e librerie che facilitano la creazione di applicazioni seguendo regole definite.
Git
Sistema di controllo versione che permette di tracciare le modifiche nel codice e di collaborare in più sviluppatori su un progetto.
Docker
Piattaforma che permette di eseguire applicazioni in container isolati, così l’ambiente funziona identico su macchine diverse.
Debugger
Strumento per analizzare l’esecuzione di un programma passo dopo passo e individuare errori.
SQL
Linguaggio per comunicare con database relazionali.
Riepilogo
Un buon sviluppatore non conosce tutte le tecnologie. Non conosce tutti i framework. Non ricorda tutta la documentazione.
Un buon sviluppatore ha fondamenta solide.
Sa come analizzare i problemi.
Sa trovare le informazioni.
Capisce i principi di funzionamento delle tecnologie.
Ed è per questo che riesce a imparare rapidamente nuovi strumenti.
I framework cambieranno.
I linguaggi evolveranno.
Il modo di pensare rimarrà la competenza più preziosa per tutta la carriera.
Nella prossima parte mostreremo com’è il lavoro quotidiano di un Senior Developer, perché il Code Review è la migliore scuola di programmazione, cosa significa davvero Clean Code e perché la frase "da me funziona" provoca il sorriso nervoso di molti sviluppatori.



