Introduzione
Nella puntata precedente abbiamo illustrato l’approccio allo sviluppo con gli agenti AI, soffermandoci sulla definizione del backlog, della vision e sulla raccolta dei primi feedback. In questa seconda parte, le idee iniziano a trasformarsi in codice e il prodotto prende forma concreta.
L’obiettivo non è solo testare strumenti di generazione automatica del codice, ma costruire un workflow di sviluppo efficace, riflettendo su come il ruolo dello sviluppatore stia cambiando. Per farlo, abbiamo creato ambienti di sviluppo personalizzati, confrontato diversi strumenti e sperimentato agenti AI con comportamenti differenti.
Questo articolo racconta il percorso seguito, le scelte effettuate, i problemi incontrati e le soluzioni trovate. Non si tratta di un resoconto lineare o definitivo, ma di uno spaccato reale di sperimentazione tecnica, con tutti i compromessi del caso.
Il panorama degli strumenti AI per lo sviluppo
Il Vibecoding è reso possibile principalmente da agenti AI specializzati nel coding. Abbiamo testato diversi strumenti oggi disponibili sul mercato, suddivisibili in tre categorie principali:
AI Code Generators
I generatori di codice basati su AI sono strumenti che, a partire da un prompt, realizzano tutto autonomamente, dall’interfaccia al backend. Esempi di AI Code Generators sono Lovable, Bolt, V0. Per i motivi che vedremo più avanti in questa serie di articoli, li abbiamo scartati perché troppo opachi e poco controllabili.
AI-powered IDE
Gli IDE supportati dall’intelligenza artificiale integrano un agente in un IDE, permettendo di chattare, istruire, modificare file o lanciare comandi da terminale. Sono molto più flessibili e controllabili e sono disponibili sia come prodotti autonomi spesso basati su fork di VS Code (Cursor, Windsurf, Trae.AI), sia come plugin installabili nei vari IDE esistenti (Copilot, Cline, Augment Code).
Agentic coding tool
Gli agentic coding tool sono sempre più diffusi, utilizzabili da terminale e possono generare/modificare codice e lanciare comandi. Esempi sono Claude Code e Gemini CLI.
Similarità e differenze
Tutti questi strumenti, pur con le loro peculiarità, si basano sugli stessi Large Language Model (LLM) come Claude, Gemini, GPT, e includono sempre una chat per interagire con l’agente AI e inviare prompt per la generazione del codice.
Ogni ambiente gestisce i prompt in modo diverso, determinando il comportamento dell’agente AI. L’agente non si limita a eseguire il prompt, ma lo arricchisce con informazioni di contesto, alcune visibili al developer, altre proprie della piattaforma. Il prompt effettivo è quindi una combinazione tra system prompt (istruzioni preconfigurate) e prompt dell’utente, influenzando profondamente la qualità e il tipo di codice generato.
A prescindere dallo strumento specifico, come LLM per il nostro progetto abbiamo scelto di usare Claude (prima 3.7, poi 4.0), per la sua efficacia nello sviluppo software, in particolare nella comprensione di strutture complesse e nella generazione di codice coerente su più file.
Server MCP
Oltre agli agenti, un altro strumento fondamentale sono gli MCP Server (Model Context Protocol), che estendono le capacità degli agenti permettendo l’integrazione e la comunicazione con servizi esterni. Parleremo più in dettaglio degli MCP Server in un articolo a loro dedicato. Per il momento ci basta dire che, per il nostro progetto, abbiamo utilizzato:
- Context 7: per recuperare documentazione aggiornata;
- BraveSearch: per ricerche web;
- Sequential Thinking: per la generazione di task;
- Playwright: per l’automazione del browser;
- GitHub-MCP: per interazioni con repository;
- File System-MCP: per la gestione dei file locali.
Setup dell’ambiente di sviluppo: istruire l’agente AI
La fase preliminare di sviluppo è fondamentale per evitare false partenze: è il momento in cui si fornisce il contesto generale e le prime istruzioni al nostro agente AI, per facilitare il più possibile la fase di implementazione.
Nel nostro esempio siamo partiti, come lecito aspettarsi, dai requisiti di prodotto. Il Product Requirement Document (PRD) è stato essenziale per fornire al nostro agente le informazioni generali di contesto e aiutarci a compiere le prime scelte importanti: quali architetture e tecnologie adottare. Tramite il dialogo con il nostro agente AI, abbiamo optato per un’applicazione in Next.js e un database PostgreSQL per la persistenza dei dati.
Per consolidare le scelte fatte e arricchire ulteriormente l’agente AI di informazioni utili, abbiamo creato alcuni file di istruzione personalizzati che includono convenzioni di design, indicazioni architetturali e riferimenti stilistici, fungendo da “galateo” per l’agente AI. Questo “apprendimento contestuale” ha permesso di mantenere uno stile uniforme e di ridurre la necessità di correzioni manuali.
Il processo di sviluppo in pratica
Come ogni team che fa refinement dei requisiti, lo sviluppo è iniziato dalla generazione dei task, a partire dal PRD. Con un prompt dedicato, abbiamo chiesto all’IA di generare un file JSON con l’elenco dei task, la stima della complessità e lo stato di avanzamento (da “to do” a “done”), alla stregua di un task manager semplificato, utilizzabile direttamente in chat.
Abbiamo così iniziato a dialogare con l’AI per la risoluzione dei primi task, arrivando in pochissimo tempo (minuti) ad avere uno scheletro applicativo perfettamente funzionante, con una home page e alcuni placeholder per le pagine, già rilasciato e accessibile dal nostro stakeholder.
Lo sviluppo è proseguito a ritmi decisamente più elevati rispetto a quanto si potesse immaginare fino ad oggi: abbiamo guidato l’agente AI nella creazione del prodotto, agendo più come registi e controllori e meno come sviluppatori tradizionali.
Possiamo sintetizzare il nostro workflow di sviluppo come composto in 4 fasi:
- ideazione e pianificazione
- design e prototipazione
- setup dell’ambiente
- ciclo di sviluppo
Ideazione e pianificazione
Si parte dall’idea iniziale, definendo vision, customer journey e requisiti funzionali. Si scrive un PRD dettagliato (con supporto dell’AI) e si scompongono le user stories in micro-task organizzati per priorità. Fondamentale per avere una roadmap chiara e ben strutturata.
Design e prototipazione (UI/UX)
Si progetta l’esperienza utente creando mockup, wireframe o site map, anche a partire da esempi o screenshot. Si costruisce un design system coerente e riutilizzabile, con l’AI che supporta la generazione di componenti visivi esportabili su Figma.
Setup ambiente
Si configura l’ambiente di sviluppo: si sceglie l’IDE AI, si definiscono le rules (principi e comportamenti da seguire), si genera un boilerplate di partenza e si imposta un flusso CI/CD automatizzato per integrazione e deploy continuo.
Ciclo di sviluppo
Il lavoro avanza per micro-task: si chiede all’AI un piano prima di procedere, si separano i test dalla logica, si testa a ogni step e si effettua il commit frequentemente. Il controllo resta umano, ma l’AI accelera l’esecuzione.
L’evoluzione del ruolo dello sviluppatore
È quantomai evidente che il ruolo dello sviluppatore sta subendo un cambiamento sostanziale. Gli sviluppatori sono ancora indispensabili, ma il loro ruolo sta evolvendo: meno focus sull’operatività di basso livello, più sulla strategia. Meno codice scritto a mano, più pensiero critico, architettura e capacità di guidare gli strumenti di intelligenza artificiale.
Trascurare questo aspetto e affidarsi troppo al lavoro dell’IA porta rapidamente all’impossibilità di sviluppare nuove funzionalità, perché il sistema rischia di commettere errori, rompere funzionalità precedenti o semplicemente non rispettare le aspettative sulle nuove feature.
Un altro aspetto meritevole di attenzione è che, tramite il dialogo con l’agente IA, non solo abbiamo la possibilità di controllare e correggere il codice generato, ma anche di imparare nuove competenze. Se ci approcciamo con curiosità al codice che l’IA genera e che non comprendiamo o condividiamo subito, potremmo scoprire nuovi approcci, pattern e tecnicismi in realtà più efficaci di quelli che avremmo adottato sviluppando manualmente.
Codice etico del vibecoder
L’AI offre agli sviluppatori veri e propri superpoteri. Ma, come ci ricorda lo zio Ben Parker: “Da grandi poteri derivano grandi responsabilità.”
Come professionisti del software, è nostro dovere stabilire delle regole e seguire un codice etico chiaro. E anche questo è un ulteriore indicatore dell’evoluzione del ruolo di sviluppatore.
Ecco quindi una serie di principi che abbiamo scelto noi.
- Responsabilità: sei sempre responsabile del codice che metti in produzione, anche se generato da un’AI.
- Comprensione: non mettere in produzione nulla che non comprendi. Sei un professionista!
- Qualità: l’AI elimina le scuse per codice scadente. Punta a codice pulito, testato e manutenibile.
- Guida: l’AI è un amplificatore, non un sostituto. Sei tu alla guida. La tua visione è il vero superpotere.
Conclusione
Il Vibecoding non è solo un nuovo modo di scrivere codice, ma un cambiamento profondo nel modo in cui immaginiamo, progettiamo e costruiamo software. In questo articolo abbiamo visto come un’idea iniziale può evolvere rapidamente in un’applicazione funzionante, grazie a un workflow strutturato e alla collaborazione con agenti AI configurati in modo consapevole. Ma questo è solo l’inizio.
Nei prossimi articoli entreremo più nel dettaglio di aspetti cruciali: esploreremo il workflow in modo ancora più pratico e affronteremo alcune delle insidie più comuni del lavoro con agenti AI. Lo faremo con esempi reali, codice concreto e riflessioni basate sull’esperienza.
Perché se è vero che l’AI può velocizzare lo sviluppo, solo uno sviluppatore consapevole può trasformarla in un vero vantaggio competitivo.