Una delle domande più comuni tra chi inizia a sviluppare software è:

Quale linguaggio dovrei imparare?

È una domanda legittima.

Il problema è che spesso viene posta troppo presto.

Prima ancora di scegliere un linguaggio, bisognerebbe chiedersi:

Sto imparando un linguaggio o sto imparando a programmare?

La differenza è enorme.


L’illusione del linguaggio perfetto

Molti principianti passano settimane a confrontare linguaggi.

  • Java o C#?
  • Python o JavaScript?
  • Go o Rust?

L’idea di fondo è che esista una scelta migliore delle altre.

In realtà, soprattutto all’inizio, la differenza è molto meno importante di quanto sembri.

Tutti i linguaggi moderni permettono di:

  • gestire dati;
  • eseguire condizioni;
  • creare cicli;
  • definire funzioni;
  • organizzare il codice.

Cambiano la sintassi e alcune caratteristiche, ma i concetti fondamentali restano gli stessi.


Il vero obiettivo

Quando si inizia a programmare, il vero obiettivo non dovrebbe essere imparare un linguaggio.

Dovrebbe essere imparare a ragionare come uno sviluppatore.

Ad esempio:

Se sai risolvere un problema in Python, probabilmente riuscirai a risolverlo anche in Java, JavaScript o C# dopo aver imparato la sintassi di base.

Se invece conosci perfettamente la sintassi di Python ma non sai affrontare un problema, cambiare linguaggio non ti aiuterà.


I linguaggi sono strumenti

Un falegname non diventa bravo perché possiede molti martelli.

Diventa bravo perché sa quando usarli e come utilizzarli.

Lo stesso vale per gli sviluppatori.

I linguaggi sono strumenti.

La capacità di:

  • analizzare problemi;
  • progettare soluzioni;
  • fare debugging;
  • organizzare il codice;

è ciò che produce valore.


La mia esperienza

Uno degli errori che vedo più spesso è la ricerca continua della prossima tecnologia da imparare.

Molti sviluppatori passano da un linguaggio all’altro pensando che la crescita dipenda dalla quantità di strumenti conosciuti.

In realtà, ogni volta che si cambia tecnologia troppo presto, si rischia di ripartire continuamente dalla superficie senza mai consolidare le fondamenta.

Le competenze che mi sono tornate utili negli anni non sono state le singole sintassi che ho imparato, ma i concetti che ho potuto trasferire da un linguaggio all’altro.


I concetti che contano davvero

Indipendentemente dal linguaggio scelto, dovresti comprendere:

  • variabili e tipi di dato;
  • strutture condizionali;
  • cicli;
  • funzioni;
  • gestione degli errori;
  • strutture dati;
  • modularità;
  • debugging;
  • complessità degli algoritmi.

Questi concetti sopravvivono al passare delle tecnologie.


Il paradosso dei developer esperti

Osservando sviluppatori con molti anni di esperienza, si nota spesso una cosa curiosa.

Quando devono imparare un nuovo linguaggio, lo fanno molto velocemente.

Non perché siano dei geni.

Ma perché non stanno imparando a programmare da zero.

Stanno semplicemente imparando un nuovo modo di esprimere concetti che conoscono già.

Per loro il linguaggio è un dettaglio.

Il modello mentale è già stato costruito.


Come scegliere il primo linguaggio

La risposta è molto più semplice di quanto sembri:

Scegline uno.

Non necessariamente il migliore.

Non necessariamente il più popolare.

Scegline uno che ti permetta di costruire progetti e mantienilo abbastanza a lungo da padroneggiarne le basi.

Cambiare continuamente linguaggio è spesso una forma di procrastinazione mascherata da apprendimento.


Conclusione

I linguaggi di programmazione cambiano.

Alcuni diventano popolari.

Altri scompaiono.

Le competenze fondamentali restano.

Per questo motivo, quando inizi a studiare sviluppo software, non chiederti soltanto:

Quale linguaggio dovrei imparare?

Chiediti soprattutto:

Sto imparando una sintassi o sto imparando a risolvere problemi?

Perché i linguaggi sono strumenti temporanei.

La capacità di programmare è ciò che ti accompagnerà per tutta la carriera.

Un linguaggio ti insegna come scrivere codice.

Imparare a programmare ti insegna come pensare.