L'illusione del Vibe Coding: l'IA scrive codice, ma non può progettare sistemi
L'illusione del Vibe Coding: Perché l'AI Sa Scrivere Codice Ma Non Può Sostituire gli Architect
Siamo onesti: ci siamo passati tutti. Scopri un nuovo strumento di AI per programmare e improvvisamente ti senti capace di costruire qualsiasi cosa. Per anni hai pensato "se solo avessi il tempo di realizzare quella idea"? Beh, il tempo è arrivato. Descrivi quello che vuoi, ripeti con l'AI, e pubblica.
Questa sensazione è inebriante. Ed pericolosa.
La seduzione del codice "abbastanza buono"
Il mese scorso ho deciso di mettere alla prova i limiti del vibe coding costruendo un sistema di memoria per agenti AI. Quella cosa che permetterebbe a un assistente di ricordare quello che ha imparato tra una sessione e l'altra, invece di ricominciare da zero ogni volta.
Quanto poteva essere difficile? Salva qualche fatto, recuperarlo quando serve, magari segnalare le contraddizioni. Un database intelligente con una bella API.
Il codice è arrivato velocissimo. Davvero velocissimo. L'agente con cui lavoravo ha sfornato un demone in Rust, un sistema di classificazione, quattro strategie di recupero con re-ranking tramite modelli locali. Sotto ogni punto di vista, sembrava impressionante. I test passavano. Il compilatore era soddisfatto.
E poi ho provato a usarlo.
Il punto è questo: i sistemi di memoria per agenti non riguardano davvero lo storage. Riguardano il significato. E il significato, a quanto pare, è filosoficamente spinoso in modi che fanno sembrare il tuo codice accuratamente tipizzato come costruire un razzo e dimenticarsi di considerare la gravità.
Il problema delle contraddizioni che nessuno menziona
Il mio obiettivo iniziale era semplice: se l'agente impara qualcosa di nuovo, verifica se contraddice quello che già "sa." Sembra ragionevole. Una memoria che contraddice altre memorie senza spiegazioni non è solo inutile — è attivamente dannosa. Stai inquinando il context window con informazioni in conflitto.
Cosa potrebbe essere più semplice? Confronta due fatti. Segnala il conflitto.
Tranne.
Cos'è una contraddizione in un sistema del genere? Se l'agente ha imparato lunedì che "Il Progetto X usa PostgreSQL" e martedì che "Il Progetto X usa MySQL," è una contraddizione? Forse lo stack tecnologico è cambiato. Forse una fonte aveva torto. Forse "Progetto X" si riferisce a progetti diversi. Forse "usa" significa cose diverse in contesti diversi.
Gli esseri umani gestiscono tutto questo attraverso anni di buon senso accumulato, contesto, e la capacità di dire "questo non mi convince" senza riuscire a spiegare esattamente perché. I sistemi AI possono generare prosa sicura su qualsiasi di queste interpretazioni, ma quella sicurezza spesso è solo pattern matching senza comprensione reale.
Dove il vibe coding si rompe
Il vibe coding eccelle nel risolvere problemi che sai articulare chiaramente. Hai un bug? Descrivi i sintomi. Ti serve una funzione? Specifica input e output. L'AI gestisce i dettagli implementativi con competenza notevole.
Ma il system design — quello vero — riguarda risolvere problemi che non sai articulare chiaramente. Riguarda anticipare interazioni tra componenti che non esistono ancora. Riguarda chiedersi "cosa succede se..." per scenari che non hai immaginato.
Quando ho chiesto al mio assistente AI di "implementare il rilevamento delle contraddizioni," in sostanza gli stavo chiedendo di risolvere un problema che non riuscivo a definire con precisione. I risultati sono stati... creativi. Abbiamo esplorato le reti di Belnap, logiche a quattro valori, verifica formale con prove in Agda, reti di Petri. L'assistente era pronto per qualsiasi cosa suggerissi, e onestamente alcune idee erano davvero interessanti.
Ma "interessante" non significa "funziona."
La dimostrazione in Agda era corretta. L'architettura era ben documentata. E il sistema ancora non rilevava affidabilmente le contraddizioni perché stavamo formalizzando l'astrazione sbagliata. Stavamo costruendo una cattedrale magnifica su fondamenta di sabbia, e né l'AI né io ce ne siamo accorti finché non avevamo investito mesi.
La verità scomoda
Ecco cosa i promotori del vibe coding non ti dicono: la parte difficile dello sviluppo software non è mai stata battere il codice. È capire cosa costruire.
Questo è sempre stato vero. Quello che è cambiato è che il divario tra "ho avuto un'idea" e "ho del codice" si è ridotto drasticamente. È genuinamente fantastico per il prototyping, per imparare, per esplorare cosa è possibile.
Ma significa anche che puoi fallire più velocemente e più costosamente di prima. Puoi generare montagne di codice che sembra sicuro ma risolve il problema sbagliato, e potresti non accorgertene finché non hai costruito un intero sistema su fondamenta difettose.
Cosa aiuta davvero
Niente di tutto questo significa che lo sviluppo assistito da AI sia una cattiva idea. Non lo è. Ma usarlo efficacemente richiede competenze diverse dalla pura abilità di programmare:
Devi sapere cosa non sai. Quando l'AI suggerisce una soluzione in un dominio che non conosci, non è il momento di dire "sembra buono, implementala." È il momento di scavare più a fondo.
I proof of concept devono essere testati senza pietà contro casi d'uso reali. Se stai costruendo un sistema di memoria, passa tanto tempo a cercare di romperlo quanto ne hai passato a costruirlo. Cerca specialmente di rompere le assunzioni fondamentali che non sapevi di star facendo.
La sicurezza non è la tua. Quando un assistente AI è altamente sicuro riguardo una decisione di design, quella sicurezza risiede nel modello, non nella tua comprensione. Un sistema che non capisci profondamente è un sistema che non puoi mantenere o debuggare.
Il system design è ancora una disciplina. Puoi usare l'AI per esplorare design più velocemente, per implementare pezzi di sistema più rapidamente, per prototypare idee che avrebbero richiesto settimane da costruire manualmente. Ma hai ancora bisogno di qualcuno che sappia valutare se il design ha senso, se i componenti interagiscono correttamente, se le astrazioni fondamentali reggono.
Il punto finale
Sto ancora costruendo il mio strumento di memoria. Sta migliorando, lentamente. Ho imparato a fare domande diverse, a testare più rigorosamente, a essere più sospettoso verso i risultati "abbastanza buoni."
Ma ho anche imparato a rispettare il divario tra "il codice funziona" e "il sistema è corretto." Quel divario è sempre esistito. Gli strumenti AI non l'hanno colmato — hanno solo reso più facile ignorarlo.
I migliori vibe coder non sono quelli con le migliori competenze di prompting. Sono quelli che sanno quando il vibe è sbagliato.
Vuoi esplorare cosa è possibile con hosting e sviluppo assistito da AI? Vibe Hosting di NameOcean combina infrastruttura potente con gli strumenti necessari per costruire, pubblicare e scalare il tuo prossimo progetto.