Errori dell'AI in produzione (e come fermarli)
Gli errori dell'AI in produzione sono 10 e prevedibili: cosa ha sbagliato Claude, lo schema corretto e l'istruzione che impedisce a ciascuno di ripetersi.
Gli errori dell'AI in produzione sono prevedibili e documentati: scrive codice che funziona nella demo e fallisce dal vivo. Mentre costruivo la mia piattaforma con Claude, ho tenuto un registro di ogni errore che richiedeva una correzione: 28 lezioni ricorrenti, ciascuna con l'istruzione esatta che la previene. Ecco le dieci che costano di più quando sfuggono.
Lo scopo di questo elenco non è spaventarti e allontanarti dallo sviluppo con l'AI. È l'opposto: poiché gli errori sono prevedibili, sono prevenibili — con una frase nel tuo prompt o una regola permanente nelle istruzioni del progetto. Non devi scrivere tu il codice corretto. Devi riconoscere lo schema sbagliato e sapere che cosa dire.
Perché l'AI commette ogni volta gli stessi errori
L'AI ottimizza per il percorso felice — la versione della tua funzione in cui i dati esistono, l'utente è loggato, niente fallisce e un solo cliente usa l'app. Quella versione fa una demo splendida. La produzione è tutto il resto: le sessioni scadono, due utenti cliccano insieme, i dati mancano, e il cliente A non deve mai vedere i record del cliente B.
L'AI non salta questi aspetti perché è distratta. Li salta perché non l'hai chiesto — e a differenza di uno sviluppatore senior, non completa i requisiti non detti con l'esperienza. Questi quattro comportamenti di sabotaggio sono un elenco affine ma diverso che ho trattato a parte; i dieci di oggi riguardano ciò che il codice di livello produzione richiede e che l'AI omette per impostazione predefinita.
I 10 errori dell'AI in produzione, lo schema corretto e l'istruzione
| Che cosa ha fatto Claude | Lo schema corretto | Come istruirlo |
|---|---|---|
| Ha creato un servizio duplicato per una funzionalità già esistente | Un'unica fonte di verità per dominio — estendi il servizio esistente | "Prima di creare un nuovo file, controlla se esiste un servizio simile ed estendilo" |
| Ha lasciato che i componenti UI parlassero direttamente con il database | Tre livelli: i componenti usano gli hook, gli hook usano i servizi, solo i servizi toccano il database | "Non importare mai il client del database nei componenti — segui l'architettura a 3 livelli" |
| Ha usato tipi ENUM rigidi per stati e categorie | Tabelle di lookup che puoi estendere senza modificare il codice | "Niente enum — crea una tabella di lookup con codice, nome visualizzato, ordinamento e flag di attivo" |
| Ha creato chiavi esterne senza indici | Ogni chiave esterna ha un indice; le combinazioni di query comuni hanno indici compositi | "Ogni colonna di chiave esterna deve avere un indice" |
| Ha costruito tabelle senza una colonna dell'organizzazione | Multi-tenancy dal primo giorno: ogni tabella di business è limitata al cliente proprietario dei dati | "Ogni tabella di business ha organization_id, not null, come seconda colonna" |
| Ha saltato del tutto la row-level security | RLS attiva su ogni tabella, con policy per lettura, inserimento, modifica ed eliminazione | "Dopo aver creato qualsiasi tabella, attiva la RLS e aggiungi tutte e quattro le policy limitate all'organizzazione" |
| Ha gestito solo il percorso felice nei componenti | Quattro stati ovunque: caricamento, errore, vuoto e successo | "Ogni componente che recupera dati deve gestire gli stati di caricamento, errore, vuoto e successo" |
| Ha lasciato che gli errori fallissero in silenzio | Intercetta, registra con il contesto e mostra all'utente un modo per riprovare | "Ogni funzione asincrona ha una gestione degli errori: registrala, lancia un errore comprensibile, mostra un pulsante per riprovare" |
| Ha cancellato i dati in modo permanente su richiesta | Soft delete — segna i record come eliminati, conserva i dati, consenti l'annullamento | "Non eliminare mai definitivamente i dati di business — imposta deleted_at e deleted_by e filtrali nelle query" |
| Ha eseguito scritture in più passaggi senza una transazione | Le scritture collegate riescono o falliscono insieme, mai a metà | "Queste scritture devono essere atomiche — o riescono tutte o si annullano tutte" |
L'insieme completo delle 28 lezioni — tra cui type safety, logging, accessibilità, ID scritti nel codice e copertura dei test — è nel corso AI Product Builder, ciascuna con il codice prima e dopo e il prompt da copiare e incollare.
Il libroThe Solopreneur RevolutionLuis Gonçalves su come costruire un'attività da solopreneur con l'IA mentre sei ancora dipendente.Scopri il libro →I due errori che possono far chiudere il tuo business
Otto dei dieci ti costano tempo. Due possono costarti l'azienda.
La mancanza di multi-tenancy e di row-level security sono macchine da violazione dei dati. Senza una colonna dell'organizzazione su ogni tabella, i dati di tutti i tuoi clienti vivono in un unico mucchio indifferenziato, e solo la fortuna nel codice dell'applicazione impedisce al cliente A di vedere i record del cliente B. La row-level security è il muro a livello di database che regge anche quando il tuo codice ha dei bug — e il tuo codice avrà dei bug. L'AI salta entrambe se non glielo dici, perché in "costruiscimi un project tracker" non c'è nulla che dica in questo database vivranno anche le aziende di altre persone.
Rimediare dopo è brutale: aggiungere la colonna dell'organizzazione in seguito significa migrare ogni tabella, riempire ogni riga, aggiornare ogni query e ritestare tutto. Una frase nel prompt iniziale, oppure una settimana di chirurgia di migrazione più tardi. Scegli la frase.
Trasforma le correzioni in regole permanenti
Correggere l'AI errore per errore significa combattere contro la marea. La mossa che si accumula è scrivere ogni correzione nel file di istruzioni del progetto, così ogni sessione futura parte con le regole già caricate — ne ho spiegato il funzionamento in l'unico file che previene il 90% degli errori dell'AI. Un blocco di regole breve come questo cambia tutto a valle:
Segui l'architettura a 3 livelli. Ogni tabella ha organization_id, colonne di audit e policy RLS. Niente enum — tabelle di lookup. Indicizza ogni chiave esterna. Solo soft delete. Ogni componente gestisce caricamento, errore, vuoto e successo. Ogni funzione asincrona ha una gestione degli errori.
Dieci righe. Scritte una volta. Applicate a ogni prompt che eseguirai. È la differenza tra correggere l'AI e dirigerla — che è il vero lavoro, come ho sostenuto in tu sei l'architetto.
12 settimaneLa carriera aziendale non è mai stata il pianoCandidati al Solopreneur Accelerator.Candidati ora →Domande frequenti
Se l'AI commette tutti questi errori, è sicuro costruire con lei?
Sì — perché gli errori sono coerenti, non casuali. Uno sviluppatore junior fa errori diversi ogni settimana; l'AI fa gli stessi dieci finché non scrivi la regola che ferma ciascuno. Una modalità di errore documentata con una prevenzione nota di una riga è un rischio ingegneristico gestibile, non un motivo per assumere un team.
Come individuo questi errori se non so leggere bene il codice?
Verifica con le domande, non leggendo riga per riga. Chiedi direttamente all'AI dopo che ha generato qualcosa: ogni tabella ha una colonna dell'organizzazione e le policy RLS? Le eliminazioni sono soft? Questo componente gestisce gli stati di caricamento, errore e vuoto? L'AI è onesta sulle proprie omissioni quando glielo chiedi in modo specifico — la tabella qui sopra è di fatto la tua checklist di revisione.
Devo correggere questi problemi nel codice che l'AI ha già scritto?
Dai la priorità in base al rischio. Correggi prima la coppia di sicurezza — limitazione per organizzazione e row-level security — prima di prendere clienti reali, perché rimediare diventa sempre più difficile al crescere dei dati. Stati mancanti, logging e soft delete si possono correggere funzione per funzione man mano che tocchi ogni schermata.
Dove vanno in pratica le regole permanenti?
In un file di istruzioni del progetto che il tuo strumento di AI legge all'inizio di ogni sessione — nel caso di Claude, un file CLAUDE.md nel tuo progetto. Ogni correzione che fai viene promossa in quel file, così la fai una volta sola. La configurazione richiede pochi minuti ed è spiegata nella guida a CLAUDE.md.
Quanto sei intrappolato, davvero?
Fai l'Indice di Soffocamento Aziendale, la valutazione gratuita per capire se sei pronto a diventare solopreneur.