Questo datepicker l'ho fatto scrivere interamente a un LLM. È in produzione da mesi, sul sito di un'attività che di quel datepicker fa il suo principale punto di conversione, e funziona tutto.
Non è la prima cosa che delego in blocco a un chatbot o a un coding agent. Voglio però essere onesto: il vibecoding non esiste. Eh già, brutta storia. Ma se non sai programmare non sarà un LLM a trasformarti in un developer. O in un marketer, o in un elettricista, o in qualsiasi altra cosa che non sai fare.
Intanto mettiamo ordine sulla parola
Il vibecoding, quando è nato, voleva dire una cosa precisa: scrivere prompt finché non esce qualcosa che funziona. Non guardo il codice, non lo capisco, vado a sensazione. A vibeeeszzszszs.
Poi la parola è invecchiata in sei mesi ed è stata rimpiazzata da una che si può pronunciare in riunione: AI-driven development, lo sviluppo guidato dagli agenti. Suona meglio, ed è anche un'altra cosa, su cui c'è una discussione seria in corso.
Ma come nei migliori horror il vibecoding non è morto per niente. Ha solo smesso di riguardare il codice.
Perché se la definizione è "chiedo alla macchina finché non esce qualcosa che sembra funzionare", allora io vibe-imparo-cose ogni santo giorno. Faccio vibe-asking fino a che non vibe-impianto-elettrico-della-cantina.
Sono serio eh! Questa roba non è mai stata una tecnica di programmazione. È l'atteggiamento che teniamo davanti a qualunque cosa non sappiamo fare. Raccontarla come un problema degli sviluppatori è comodo, e sbagliato.
Non funziona per un motivo statistico, non morale
Qui c'è la parte che tutti saltano, perché per saltarla basta dire "eh, ma bisogna saperla usare" e sembra di aver detto qualcosa.
Un LLM non ha una risposta. Ha una distribuzione di risposte e ti restituisce la più probabile, cioè quella di cui esisteva più roba scritta là dove ha imparato. Non la più giusta. La più scritta. Il più delle volte coincidono, ed è esattamente questo che rende la fregatura difficile da vedere.
Torniamo al mio form. Il problema era avere un form su WordPress che mandasse l'utente sull'URL di ricerca del booking engine, con dentro le date scelte. Easy, decine di migliaia di pagine su internet la trattano. E infatti la risposta statisticamente più probabile arriva subito, ordinata, sicura di sé: usa un form builder, configura i campi, imposta l'action.
Solo che in quell'URL le date stanno dopo il cancelletto, dentro il fragment. E un <form method="get"> non può scrivere dopo il fragment. Non perché il plugin sia pigro: perché il fragment non viene nemmeno spedito al server. Nessun form builder al mondo può costruire quell'URL. Nessuno. (La storia intera sta nell'altro pezzo, qui mi serve solo la morale.)
L'LLM stava quindi sbagliando? No, gli LLM non sbagliano nel darti una risposta, ti danno una risposta nel modo corretto. Poi se la risposta è utile al tuo problema è tuuuuutta un'altra storia eheh.
La media delle informazioni su internet mi stava spostando la probabilità che l'LLM mi rispondesse con una risposta non utile, ciò solo perché il mio caso non stava nella media.
Le tre categorie di idee
Adesso la cantina, che è l'esempio migliore proprio perché lì di competenza ne ho poca, sempre fatto lavori in casa ma per cose complesse mi sono sempre rivolto a professionisti.
Impianto elettrico di casa, problema vero. Chiedo. E la macchina mi tira fuori una lista di cause probabili: ordinata, plausibile, scritta con lo stesso modo fermo e fiero con cui mi aveva detto di usare un form builder.
Dentro quella lista c'erano tre cose diverse mescolate:
- idee decenti, che ho provato;
- idee stupide, che non ho provato;
- idee che non avrei potuto provare comunque, perché non ne so abbastanza.
Ed è tutto qui. La lista non è etichettata. Le tre categorie arrivano con lo stesso font, la stessa lunghezza e la stessa sicurezza. Ciò che decide se il pomeriggio finisce bene non è la lista, è che tu sappia smistarla.
Il problema l'ho risolto, con un po' di ingegno, un po' di pazienza, un po' di voglia e un po' di sano e vecchio studio. Non col prompt migliore.
Se non sai smistare, quella lista non è un aiuto. È un generatore di pomeriggi buttati, impianti elettrici bruciati e chiamate al primo elettricista disponibile.
L'LLM è un acceleratore
Questa la penso da anni ed è il modo più corto che ho per dirla.
Un LLM non è un risolutore di problemi. È un acceleratore, e un acceleratore accelera quello che trova. Trova competenza, accelera la competenza. Trova incompetenza, accelera l'incompetenza. Non è mai stato uno strumento neutro e non è mai stato un livellatore. È un moltiplicatore, e i moltiplicatori funzionano benissimo anche sui numeri negativi.
Detto questo, c'è una cosa che gli LLM fanno meglio di qualunque tecnologia io abbia visto: ti danno accesso immediato alla superficie di qualsiasi argomento.
"The best tool to scratch the surface"
In un paio di prompt ho imparato come si scrive un plugin per WordPress e capito come funzionano, prima non sapevo farlo, la barriera d'ingresso si è abbassata davvero. Questa parte della promessa è vera. Solo che "abbassata" non vuol dire "sparita", ciò che serve sempre è lo sforzo e la capacità di capire esattamente cosa stai facendo per evitare di spaccare tutto.
L'NZT, e dove la metafora si rompe
Ogni volta che ci penso mi torna in mente Limitless.
Il protagonista a un certo punto si accorge di avere dei salti temporali: si sveglia in posti senza sapere come ci è arrivato. E risolve così:
Scoprii che se mantenevo una dose regolare, mi ricordavo di mangiare e non bevevo alcolici, i salti temporali non si ripetevano.
Dose regolare.
Ricordarsi di mangiare.
Non bere alcolici.
Nel film la pillola funziona solo con un regime addosso, quel preciso regime che nell'era del vibecoding nessuno racconta. A voi capire se non viene raccontato per incompetenza, malafede o per eccesso di entusiasmo.
Fatto sta che un LLM non regge il confronto totale con l'NZT, la metafora scricchiola e la crepa è più interessante della metafora stessa:
l'NZT nel film ti rende davvero più intelligente. L'LLM no. Ti rende più veloce. E la velocità senza direzione ha un nome tecnico molto preciso. Si chiama muro. E un muro preso ad alta velocità fa male.
Il regime, in pratica
Non sarà in questo mio rant contro il vibeco...ehm in questo mio blog che ti impaginerò per benino le regole per vibecodare.
Ti farò una veloce carrellata:
Dubita sempre e cerca conferme,
se possibile fai sempre un prototipo di prova da qualche parte,
fatti una infarinatura di quello che stai facendo,
se possibile fai un backup o un fallback, che sia un sito o un impianto elettrico.
Insomma, long story short: se vuoi usare al massimo un LLM ti tocca accendere il cervello.
Quindi
Il vibecoding non è mai esistito.
Sono sempre esistite due categorie di persone: quelle che non sanno fare le cose e raccontano di saperle fare, e quelle che le sanno fare e non le raccontano, perché invece di raccontarle le stanno facendo.
L'unica cosa che è cambiata è la velocità con cui puoi stare nella prima.