saverioriotto.it

Vibe Coding: perché mi preoccupa per i developer junior

Vibe coding: opportunità o trappola per i developer junior? La mia esperienza sul campo, i dati del 2025 e cosa fare (e non fare) con l'AI nello sviluppo software.

Vibe Coding: perché mi preoccupa per i developer junior

Negli ultimi mesi, nel mondo dello sviluppo software si parla sempre più spesso di vibe coding. Se non ne hai ancora sentito parlare, lasciami spiegare di cosa si tratta — e soprattutto, lasciami dirti perché, da sviluppatore con anni di esperienza sul campo, questa tendenza mi preoccupa. Non perché sia inutile o sbagliata in assoluto, ma perché rischia di fare danni seri a chi sta ancora imparando il mestiere.

Cos'è il vibe coding?

Il termine è stato coniato nel febbraio 2025 da Andrej Karpathy, ex responsabile AI di Tesla e co-fondatore di OpenAI. Lo ha descritto così: programmare dandosi completamente alle "vibes", abbracciando le esponenziali, e dimenticandosi che il codice esiste.

In pratica: descrivi in linguaggio naturale quello che vuoi costruire, l'AI genera il codice, tu lo accetti (o quasi) e vai avanti. Nessuna preoccupazione per la sintassi, per i pattern architetturali, per la gestione degli errori. Solo un prompt e un "sembra funzionare, via".

Collins Dictionary l'ha nominata Word of the Year 2025. Già a fine anno scorso, il 41% di tutto il codice scritto globalmente era generato da AI. Il fenomeno è reale, è massiccio, ed è qui per restare.

La mia esperienza diretta

Lavoro come sviluppatore full-stack da anni, e uso strumenti AI nel mio workflow quotidiano. Gemini, GitHub Copilot, Claude, Cursor, ChatGPT — li ho provati tutti. E devo dire che, su certi compiti, sono genuinamente utili: snippet ripetitivi, boilerplate, documentazione, test unitari su funzioni semplici.

Ma c'è una differenza enorme tra usare l'AI come assistente e affidarsi all'AI come sostituto del pensiero.

La prima cosa che mi ha colpito, quando ho iniziato a usarli seriamente, è che la qualità dell'output dipende quasi interamente dalla qualità di chi fa le domande. Se non sai già cosa stai cercando, se non riesci a leggere criticamente il codice che ti viene restituito, se non conosci i pattern di sicurezza di base — il codice generato ti sembrerà perfetto. E spesso non lo è.

I numeri che nessuno vuole sentire

Parliamoci chiaro, perché ci sono dati che fanno riflettere.

Uno studio METR del 2025 ha tracciato il lavoro di 16 sviluppatori esperti che usavano strumenti AI. Il risultato? Erano il 19% più lenti sui task complessi, pur percependo soggettivamente di essere più produttivi. Il 63% degli sviluppatori ha dichiarato di passare più tempo a fare debug del codice AI che a scriverlo manualmente.

Sul fronte della sicurezza, le cose vanno anche peggio. Un'analisi di 470 pull request su GitHub ha rilevato che il codice generato da AI è 1,7 volte più soggetto a errori logici e 2,74 volte più vulnerabile rispetto al codice scritto da umani. Problemi frequenti: API key hardcodate nel codice, password in chiaro, utilizzo di API che non esistono più (fabbricate dall'AI in base a dati di training obsoleti). Il report Veracode 2025 ha trovato vulnerabilità nel 45% del codice generato da AI.

E i junior? Uno studio ha rilevato che i senior developer con 3+ anni di esperienza riportano un aumento di produttività tra il 40 e il 50% usando strumenti AI. I junior invece vedono miglioramenti tra il 15 e il 25% — e spesso non sono in grado di valutare correttamente i rischi di ciò che stanno integrando nel loro codice.

Il vero problema: la "competence trap"

Ecco dove sta il nodo centrale della questione, quella che molti esperti chiamano "competence trap".

Immagina un developer junior che inizia oggi. Il mercato è brutale — le offerte di lavoro per sviluppatori entry-level si sono ridotte drasticamente negli ultimi anni. La pressione per "fare" è enorme. E allora arriva il vibe coding: descrivi cosa vuoi, l'AI lo costruisce, sembra funzionare, lo mandi in produzione.

Ma cosa succede quando qualcosa va storto? Quando quel codice che sembrava funzionare comincia a comportarsi in modo strano sotto carico? Quando il cliente segnala un bug che non riesci neanche a riprodurre perché non capisci come il codice è strutturato?

Questo è il ciclo che mi spaventa:

Problema → Prompt all'AI → Soluzione → Problema diverso → Altro prompt → Altra soluzione

Non si impara niente. Non si costruisce un modello mentale del sistema. Non si sviluppa il fiuto per i problemi — quella capacità, che si costruisce solo con l'esperienza, di sentire che qualcosa "non torna" prima ancora di vedere il bug.

È quello che alcuni chiamano il "nuovo tutorial hell": prima ti bloccavi guardando tutorial senza mettere le mani in pasta, ora metti le mani in pasta senza capire cosa stai facendo. Il risultato è lo stesso: non cresci.

Un caso concreto

Qualche mese fa stavo facendo una code review su del codice scritto da un collega junior che aveva usato un assistente AI per costruire un'API REST. Il codice funzionava. I test passavano. Ma c'erano tre problemi seri:

  1. Nessuna validazione degli input — l'AI aveva scritto un controller che accettava qualsiasi dato senza sanitizzarlo.
  2. Gestione degli errori superficiale — ogni eccezione veniva swallowed con un try/catch generico che restituiva sempre 500.
  3. Un endpoint che ritornava dati sensibili dell'utente senza verificare che il chiamante fosse autorizzato a vederli.

Quando gliene ho parlato, il collega era onestamente sorpreso. Non aveva visto nessuno di questi problemi perché non aveva ragionato sul codice — lo aveva ricevuto, aveva verificato che "girasse", e aveva pensato di aver finito.

Questo non è un attacco a lui — è un problema sistemico di come stiamo usando questi strumenti.

Non è tutto da buttare — ma va usato con la testa

Intendiamoci: non sono contro l'AI nello sviluppo. La uso ogni giorno. Ma c'è un modo giusto e uno sbagliato di integrarla nel proprio workflow, soprattutto se sei agli inizi.

L'AI è utile per:

  • Generare boilerplate e strutture ripetitive che già conosci
  • Esplorare API o librerie nuove (verificando sempre la documentazione ufficiale)
  • Scrivere test quando hai già scritto il codice
  • Avere un secondo "occhio" su logiche complesse

L'AI non può sostituire:

  • La comprensione dei fondamentali (strutture dati, algoritmi, protocolli di rete)
  • Il ragionamento sulla sicurezza
  • La capacità di fare debugging in profondità
  • L'architettura di sistema e le scelte di design

 

Cosa consiglio ai developer junior

Se stai iniziando ora, ecco la mia posizione netta: usa l'AI, ma non prima di capire cosa sta generando.

Concretamente:

  • Quando l'AI ti genera del codice, leggilo riga per riga prima di integrarlo. Se non capisci qualcosa, non andare avanti finché non hai capito.
  • Scrivi almeno un progetto da zero, senza AI. Un'API REST, un CRUD, un piccolo servizio. Fallo soffrire. Quel dolore è formazione.
  • Studia la sicurezza di base: OWASP Top 10, autenticazione, autorizzazione. L'AI non penserà per te in questo campo.
  • Non fidarti mai del "sembra funzionare". Funzionare e funzionare correttamente in tutti i casi sono due cose diverse.

 

Conclusione

Il vibe coding non è il futuro della programmazione — è un modo veloce per costruire cose che sembrano funzionare. Per i senior, è uno strumento potente nelle mani giuste. Per i junior, rischia di diventare una scorciatoia che porta dritti a un vicolo cieco professionale.

Il valore di uno sviluppatore non è nella sua capacità di digitare codice velocemente. È nella sua capacità di ragionare sui sistemi, individuare i problemi, progettare soluzioni solide e mantenere nel tempo ciò che ha costruito. Nessun tool AI, per quanto avanzato, può costruire quella competenza al posto tuo.

La gavetta esiste per un motivo. E saltarla non ti fa arrivare prima — ti fa arrivare senza sapere dove sei.




Commenti
* Obbligatorio

-->