Nella lezione precedente hai visto cosa manca al prototipo per diventare un prodotto reale. Questa lezione guarda lo stesso problema da un altro angolo: non "cosa manca", ma "cosa fa davvero, in pratica, chi inizia con il vibe coding", gli errori che tornano più spesso, perché nascono dalla natura stessa di questo modo di costruire, non da distrazione o incapacità.
## In breve
Il vibe coding, per definizione, invita a fidarsi dei risultati senza guardare troppo cosa c'è sotto. Andrej Karpathy, che ha coniato il termine, lo descriveva proprio come "arrendersi ai vibe e dimenticare che il codice esiste". È un approccio potente per prototipare in fretta, ma diventa un problema quando lo stesso atteggiamento arriva fino alla pubblicazione. Gli errori più comuni non riguardano quasi mai "non saper programmare": riguardano smettere di fare domande una volta che qualcosa sembra funzionare.
Che cos'è un errore da vibe coding (e cosa non è)
Un errore da vibe coding non è aver usato l'AI per scrivere il codice, e nemmeno aver saltato la sintassi tecnica: è esattamente per questo che esistono strumenti come Lovable. È, invece, aver accettato un risultato senza verificarlo dove contava di più, sicurezza, dati, casi limite, solo perché in superficie "sembrava funzionare". Il codice generato da un'AI può essere corretto dal punto di vista logico e allo stesso tempo insicuro: sono due cose diverse, e la seconda non si vede scorrendo l'app con lo sguardo.
Come funziona (perché questi errori sono così frequenti)
La velocità è il punto di forza del vibe coding, e anche la causa dei suoi errori più comuni. Quando costruire una schermata richiede un prompt invece di ore di lavoro, è facile accumulare molte modifiche senza fermarsi a verificarle una per una. Le ricerche sul tema confermano lo schema: un'analisi di Apiiro sui team che usano AI per programmare ha rilevato che, pur producendo codice quattro volte più velocemente, questi team introducevano circa dieci volte più difetti di sicurezza rispetto a chi scrive codice senza assistenza AI, non perché l'AI sia peggiore, ma perché la stessa velocità che aiuta a costruire aiuta anche a saltare la verifica.
## Perché conta
Perché il danno di questi errori non è quasi mai visibile finché non lo è già stato per qualcun altro: un cliente i cui dati sono stati esposti, un pagamento che è sparito senza spiegazione, un progetto perso perché il collegamento con GitHub si è rotto senza che nessuno se ne accorgesse. Conoscerli in anticipo è l'unico modo per evitarli, visto che quasi mai si presentano come un errore evidente mentre stai costruendo.
## Esempio lampante
### Caso ipotetico
Un piccolo negozio online di candele artigianali costruisce il proprio e-commerce su Lovable, con pagamenti Stripe collegati per gestire gli ordini.
### INPUT
Durante lo sviluppo, la titolare testa un solo scenario: aggiungere una candela al carrello, pagare con una carta di prova valida, ricevere la conferma. Funziona sempre, ogni volta. Non ha mai provato cosa succede se la carta viene rifiutata, e non ha mai chiesto esplicitamente a Lovable di impostare regole di accesso restrittive sulla tabella degli ordini, "sembrava già tutto a posto".
### ANALISI
Rivedendo il progetto prima del lancio, si accorge di due problemi distinti: un pagamento rifiutato lascia l'ordine in uno stato ambiguo (non annullato, non confermato), e la tabella degli ordini, verificato con un controllo diretto su Supabase, non ha Row Level Security attiva: chiunque conosca l'indirizzo tecnico del database potrebbe, in teoria, leggere gli ordini di tutti i clienti.
### DECISIONE
Prima di aprire il negozio al pubblico, simula esplicitamente un pagamento rifiutato e corregge il flusso perché l'ordine venga chiaramente segnato come "non completato". Poi chiede a Lovable di configurare regole di accesso per cui ogni cliente veda solo i propri ordini, e verifica il risultato controllando direttamente le policy su Supabase invece di fidarsi che sia stato fatto correttamente.
### OUTPUT
Un negozio che gestisce un pagamento fallito senza confondere il cliente, e un database che non espone gli ordini di nessuno, entrambi problemi invisibili finché non li cerchi apposta.
Come farlo: come evitare gli errori più comuni
- Leggi (almeno a grandi linee) cosa genera Lovable, come visto nella lezione su capire cosa genera Lovable: non serve capire ogni riga, ma sapere dove si trovano le parti che gestiscono dati e accessi.
- Configura esplicitamente le regole di accesso al database, non lasciarle ai valori di default. Su Supabase questo significa attivare e verificare la Row Level Security per ogni tabella con dati sensibili.
- Non lasciare mai chiavi o segreti visibili nel codice lato client: le chiavi che servono solo al server (pagamenti, servizi terzi) vanno gestite come variabili protette, non incollate direttamente nei prompt o nel codice visibile al browser.
- Testa i casi limite, non solo il percorso perfetto: un pagamento rifiutato, un campo vuoto, una doppia richiesta della stessa azione.
- Non modificare troppe cose insieme senza verificare: chiedere all'AI dieci cambiamenti in un prompt solo rende più difficile capire, se qualcosa si rompe, cosa lo ha causato. Meglio iterare a passi verificabili, come visto nella lezione su iterare e correggere errori.
- Non rompere mai il collegamento con GitHub: la documentazione ufficiale è esplicita, rinominare, spostare o eliminare il repository collegato interrompe la sincronizzazione in modo permanente. Se hai seguito la lezione su collegare Lovable a GitHub, tratta quel collegamento come qualcosa da non toccare per errore.
- Non costruire in totale isolamento. Chi si confronta con una community, che sia il Discord ufficiale di Lovable o un altro spazio di chi impara le stesse cose, si accorge prima dei problemi comuni, perché qualcun altro li ha già incontrati e ne ha parlato.
## Errori comuni (il riepilogo)
Oltre a quelli già dettagliati sopra, altri due tornano spesso:
- Confondere "non ho trovato errori" con "non ci sono errori". Non aver notato un problema non significa che non esista, significa solo che non lo hai ancora cercato nel punto giusto.
- Pensare che l'AI applichi automaticamente le buone pratiche di sicurezza. Non lo fa se non gliene viene dato il compito esplicito: uno studio di Veracode sul codice generato da modelli AI ha rilevato che, a parità di scelta tra un'opzione sicura e una insicura, i modelli scelgono quella insicura in circa il 45% dei casi, un dato rimasto stabile anche con le versioni più recenti dei modelli, nonostante i miglioramenti nella correttezza del codice.
Quando questi errori contano meno
Se il progetto resta un esperimento personale, mai connesso a dati reali di altre persone e mai reso pubblico, la gravità di questi errori scende molto: sbagliare in un ambiente che controlli solo tu ha conseguenze minime. Il punto di attenzione arriva quando il progetto smette di essere "solo tuo", quando altre persone ci mettono dati, tempo o denaro.
## In sintesi
Gli errori più comuni del vibe coding non nascono dal non saper programmare, ma dal fermarsi troppo presto nella verifica: un database senza regole di accesso, chiavi esposte, casi limite mai testati, troppi cambiamenti insieme, un collegamento GitHub rotto per distrazione, e il lavorare isolati invece che confrontarsi con chi sta imparando le stesse cose. Nessuno di questi errori è complicato da evitare, ma tutti richiedono di farlo apposta, perché non sono l'errore evidente che ti aspetteresti.
## Cosa imparare dopo
Con la prossima e ultima lezione, come continuare a imparare, risorse e prossimi passi, il corso si chiude con una mappa di dove andare da qui, documentazione, community, e i passi concreti per continuare a crescere dopo queste venti lezioni.
---
Vuoi provarlo?
Prova Lovable →
Link di affiliazione: se ti iscrivi da qui, ricevo una piccola commissione, a te non cambia nulla.
Continua con la prossima lezione
Come continuare a imparare: risorse e prossimi passi
Questo corso è stato realizzato con l'ausilio di AI generativa e successivamente revisionato e validato da Marco Salvo, sulla base dell'esperienza diretta su progetti reali. I contenuti vengono modificati e aggiornati nel tempo per restare allineati all'evoluzione di Google, degli AI Overview e degli assistenti conversazionali.
