Titolo:
All’inizio del 2025 eravamo tutti un po’ impazziti. Andrej Karpathy se ne uscì con un’espressione geniale che ha catturato perfettamente l’umore di quei mesi. Vibe coding.
Significava letteralmente lasciarsi andare. Aprivi il tuo editor, lanciavi un prompt di alto livello con la voce, davi invio e stavi a guardare. Il cursore si muoveva da solo. Cliccavi su “accetta tutto” senza leggere mezza riga delle modifiche. Se il programma andava in crash o tirava fuori un errore strano non ti mettevi a fare debug manuale. Copiavi l’errore, lo incollavi di nuovo all’intelligenza artificiale e le chiedevi di pensarci lei. Nessuna logica rigorosa. Nessuna architettura pensata in anticipo. Si andava puramente a sensazione. Finché il prototipo girava sul tuo computer andava benissimo.
Era divertente da morire. Ci sentivamo tutti dei maghi in grado di tirare su un’applicazione intera nel tempo di un caffè. L’AI non era più un semplice completamento automatico pigro. Era diventata un collaboratore folle, iperproduttivo e instancabile.
Poi la realtà ci ha presentato il conto.
Portare in produzione il codice scritto a sensazione è un incubo operativo. Funziona benissimo per uno script domenicale o per testare un’idea al volo. Crolla miseramente quando hai migliaia di utenti veri che stressano il tuo sistema. I modelli linguistici sono macchine probabilistiche. Lavorano indovinando il token successivo. Inserire logica probabilistica in un ambiente software deterministico è un rischio gigantesco. A volte l’AI spara fuori architetture geniali. Altre volte introduce vulnerabilità di sicurezza enormi o logiche a spirale che degradano le performance.
Aziende e startup si sono ritrovate nel giro di pochi mesi con basi di codice gigantesche che nessuno nel team umano capiva veramente. Se l’AI ha scritto tutto e la produzione va giù alle tre di notte chi lo aggiusta? Manca l’affidabilità. Manca la sicurezza. Nessun team serio vuole rilasciare aggiornamenti incrociando le dita e sperando che le vibrazioni siano giuste.
Così nel 2026 abbiamo smesso di giocare e abbiamo iniziato a strutturare il lavoro. Abbiamo smesso di chiamarlo vibe coding.
L’industria si è mossa verso quello che oggi chiamiamo harness engineering. Il termine ha iniziato a girare parecchio dopo un post di OpenAI in cui raccontavano di aver costruito un prodotto interno da circa un milione di righe di codice senza che un umano scrivesse una singola istruzione manualmente. Avevano fatto fare tutto ai loro agenti autonomi.
Il segreto di quel risultato non era una nuova versione segreta del modello linguistico. Il segreto era l’imbracatura. L’harness, appunto.
Hanno costruito un sistema ferreo attorno all’AI per costringerla a lavorare in modo prevedibile e testabile. Pensa a un motore potentissimo e brutale. Non lo monti su una macchina senza aver prima saldato un telaio perfetto, installato freni carboceramici e programmato un’elettronica di controllo paranoica.
Costruire questa imbracatura è diventato il vero lavoro degli sviluppatori di oggi. Non passiamo più le giornate a digitare cicli e variabili sulla tastiera. Progettiamo sistemi di controllo per far lavorare gli agenti autonomi senza che distruggano tutto.
Voglio smontare il processo di creazione di un harness perché è il cuore dell’ingegneria software moderna. Si divide in quattro blocchi fondamentali.
Il primo blocco è la definizione dei confini e del contesto.
Non puoi aprire un prompt vuoto e dire a un agente di scriverti un modulo di fatturazione. Devi fornirgli dei binari molto stretti. Costruire l’harness in questa fase significa preparare file di contesto espliciti che il sistema inietta obbligatoriamente nella memoria dell’AI prima di fargli scrivere codice. Definisci le versioni esatte delle librerie che può usare. Blocchi categoricamente l’uso di pattern obsoleti o insicuri. Crei una gabbia architettonica in cui il modello è libero di muoversi senza fare danni. Se la regola del tuo team impone di gestire le chiamate al database in un certo modo l’agente viene costretto a livello di sistema a rifiutare qualsiasi scorciatoia.
Il secondo blocco è la sandbox.
Un agente non ha mai accesso diretto al codice sorgente principale o agli ambienti di sviluppo condivisi. L’harness crea container effimeri e isolati. Quando l’AI decide di testare una funzione lo fa dentro uno spazio chiuso. A questo livello puoi dare all’agente un terminale bash limitato. Può installare dipendenze, lanciare script e vedere cosa succede. Se per un’allucinazione decide di lanciare un comando distruttivo colpisce solo un container vuoto che verrà cancellato due secondi dopo.
Il terzo blocco è il loop di validazione. Questa è l’anima dell’harness engineering.
Il codice scritto dall’AI non finisce direttamente in revisione umana. L’infrastruttura intercetta l’output e lo bombarda con una batteria di test automatizzati spietati. Test unitari, linter, analizzatori di sicurezza statica. Se un singolo test fallisce la pipeline blocca tutto. Raccoglie l’errore, lo formatta e lo restituisce all’agente con istruzioni chiare per rimediare. L’agente analizza lo stack trace e riscrive la funzione. È un ciclo chiuso, macchina contro macchina. Stai automatizzando quel copia-incolla manuale degli errori che facevamo ai tempi del vibe coding. Costringi l’agente a passare attraverso porte molto strette prima di considerare un task completato.
L’ultimo blocco riguarda la telemetria e l’auditability.
Quando hai un team di agenti che compila migliaia di righe di codice al minuto devi sapere esattamente cosa stanno facendo e perché hanno preso certe decisioni. L’harness registra tutto. Salva i prompt scambiati sotto il cofano, le risposte intermedie e i ragionamenti logici che hanno portato a una determinata scelta architetturale. Se emerge un bug critico tre mesi dopo il rilascio devi poter interrogare il sistema per tracciare quale istruzione specifica ha spinto l’agente a scrivere quel blocco di codice difettoso. Senza telemetria perdi completamente la proprietà intellettuale di come funziona il tuo stesso prodotto.
Prendere tutto questo e farlo funzionare richiede competenze ingegneristiche di altissimo livello. Stiamo prendendo le pratiche della data engineering e le stiamo applicando allo sviluppo software quotidiano.
Il vibe coding ha avuto il merito di rompere il ghiaccio. Ci ha fatto vedere quanto potessero essere veloci e creativi questi strumenti. Ha distrutto l’idea arcaica che scrivere codice significasse digitare caratteri al buio per ore.
Adesso stiamo costruendo le fabbriche vere e proprie. Mettiamo in piedi i nastri trasportatori, calibriamo i sensori di qualità e testiamo i protocolli di emergenza. Il caos creativo degli inizi ha lasciato spazio alla produzione industriale. Se stai ancora passando i pomeriggi a premere “accetta tutto” nel tuo editor senza un sistema di validazione automatica intorno sei rimasto alla versione 2025 del nostro mestiere. L’imbracatura è pronta e chi impara a costruirla sta già definendo il futuro dello sviluppo del software.