L'intelligenza artificiale generativa sta trasformando il processo di sviluppo software, non soltanto attraverso la capacità di produrre codice a partire da istruzioni in linguaggio naturale, ma soprattutto grazie alla possibilità di intervenire su attività più complesse, come l'analisi di applicazioni esistenti, la riorganizzazione delle architetture, l'individuazione di anomalie e la verifica dei comportamenti funzionali.
Il termine Vibe Coding ha contribuito a rendere riconoscibile questo cambiamento, descrivendo un approccio nel quale una parte significativa della programmazione viene delegata all'intelligenza artificiale, mentre la persona si concentra sulla descrizione degli obiettivi e sulla valutazione dei risultati. Tuttavia, se osserviamo ciò che gli agenti AI sono oggi in grado di fare all'interno di un progetto software, diventa evidente che la generazione del codice rappresenta soltanto una delle attività che possono essere automatizzate.
La questione più interessante non riguarda quindi esclusivamente quanto velocemente sia possibile sviluppare un'applicazione, ma come utilizzare queste capacità per migliorare l'intero processo, dalla comprensione del sistema alla verifica del suo effettivo funzionamento.
Comprendere un'applicazione prima di modificarla
Chi lavora su applicazioni sviluppate nel corso degli anni conosce bene una difficoltà ricorrente: il sistema che si trova davanti raramente corrisponde a un'architettura progettata e realizzata in modo unitario. Modifiche successive, integrazioni di componenti differenti, esigenze sopraggiunte e interventi di manutenzione possono produrre duplicazioni, disomogeneità strutturali e funzionalità distribuite secondo logiche non sempre immediatamente comprensibili.
In queste condizioni, prima ancora di intervenire sul codice, diventa necessario ricostruire il funzionamento dell'applicazione, confrontando documentazione, struttura dei componenti, cronologia delle modifiche e comportamenti effettivamente disponibili.
Gli agenti intelligenti possono offrire un contributo significativo a questo lavoro perché consentono di esplorare un repository, analizzare le relazioni tra le componenti e individuare possibili incoerenze, mettendo in collegamento informazioni che normalmente richiederebbero numerose attività manuali di ricerca e confronto.
L'aspetto più interessante emerge quando questa analisi viene condotta non soltanto sulla struttura tecnica, ma anche sui comportamenti applicativi. Una funzionalità può essere presente nel codice senza risultare effettivamente raggiungibile dall'interfaccia, oppure può essere stata implementata più volte in componenti differenti, creando percorsi operativi disomogenei che rendono il sistema difficile da utilizzare e mantenere.
L'intelligenza artificiale permette di affrontare queste situazioni attraverso un'esplorazione più ampia del sistema, formulando ipotesi e proponendo interventi di riorganizzazione che lo sviluppatore può verificare e valutare alla luce delle esigenze effettive.
Una diversa collaborazione tra sviluppatore e AI
Quando l'impiego dell'intelligenza artificiale viene esteso dalla produzione di singole funzioni alla trasformazione di un'applicazione complessa, cambia anche il modo in cui vengono organizzate le attività di sviluppo.
Invece di descrivere dettagliatamente ogni modifica, è possibile definire obiettivi architetturali, vincoli e condizioni da rispettare, lasciando all'agente il compito di individuare gli interventi necessari e proporre un percorso di realizzazione.
La richiesta di semplificare una struttura applicativa, ad esempio, può essere accompagnata dall'indicazione di eliminare duplicazioni, distribuire le responsabilità in modo più coerente e conservare integralmente i comportamenti esistenti. L'agente può quindi intervenire su più componenti, verificare gli effetti delle modifiche e documentare le operazioni svolte, mentre lo sviluppatore valuta la coerenza delle soluzioni rispetto agli obiettivi.
Questa modalità di lavoro non consiste semplicemente nel delegare la scrittura del codice, ma nell'organizzare una collaborazione iterativa nella quale le proposte dell'AI vengono esaminate, corrette e progressivamente migliorate.
Una soluzione tecnicamente corretta può infatti non essere la più appropriata per il sistema, così come una riorganizzazione architetturale apparentemente vantaggiosa può introdurre complessità o rendere meno accessibili determinate operazioni. La possibilità di contestare il risultato, chiedere ulteriori verifiche e ridefinire i vincoli rappresenta quindi una parte essenziale del processo.
L'aspetto che considero più rilevante è che l'intelligenza artificiale consente di dedicare maggiore attenzione alle decisioni progettuali, senza dover necessariamente intervenire in prima persona su ogni singola trasformazione del codice.
Dal Vibe Coding all'Agentic Testing
Una delle evoluzioni più interessanti di questo approccio riguarda l'utilizzo degli agenti AI nelle attività di verifica del software.
Le metodologie tradizionali di testing permettono di controllare il comportamento dei singoli componenti, le integrazioni tra servizi e l'esecuzione di processi applicativi completi, ma l'introduzione degli agenti intelligenti aggiunge la possibilità di costruire ed eseguire scenari di verifica a partire dalla descrizione degli obiettivi in linguaggio naturale.
Questo approccio può essere ricondotto all'ambito dell'Agentic Testing, nel quale agenti AI partecipano alla pianificazione, all'esecuzione e all'analisi delle verifiche, utilizzando gli strumenti disponibili per interagire con l'applicazione e raccogliere evidenze sui risultati.
La differenza diventa particolarmente evidente quando, anziché chiedere di verificare una specifica funzione, si descrive un'attività che un utente dovrebbe poter completare, lasciando all'agente il compito di individuare il percorso necessario, eseguire le operazioni e controllare che il risultato sia stato effettivamente raggiunto.
In questo modo la verifica non riguarda soltanto la correttezza tecnica di una componente, ma coinvolge il comportamento complessivo dell'applicazione, comprese le relazioni tra interfaccia, logica applicativa e persistenza dei dati.
Durante un'esperienza di riorganizzazione e validazione di un sistema esistente, questo tipo di approccio ha permesso di spostare progressivamente l'attenzione dalla semplice presenza delle funzionalità alla loro effettiva utilizzabilità, evidenziando come alcune operazioni potessero risultare correttamente implementate ma difficili da individuare o raggiungere attraverso l'interfaccia.
Il risultato è stato un ampliamento del processo di verifica, nel quale l'analisi tecnica ha iniziato a comprendere anche la qualità dei percorsi operativi e la coerenza dell'esperienza applicativa.
Quando una funzionalità esiste ma non è realmente utilizzabile
La distinzione tra disponibilità tecnica e utilizzabilità rappresenta uno degli aspetti più significativi della validazione assistita da agenti intelligenti.
Un'applicazione può superare correttamente i test associati a una determinata operazione e, allo stesso tempo, presentare un'interfaccia che rende difficile individuare il comando necessario per eseguirla. In altri casi, il percorso richiesto può risultare eccessivamente articolato oppure l'operazione può restituire un riscontro positivo senza produrre il cambiamento effettivamente atteso.
Dal punto di vista del codice, il comportamento può apparire corretto, ma dal punto di vista dell'utente il risultato rimane insoddisfacente.
Un metodo interessante consiste nel sottoporre all'agente un obiettivo senza anticipare la soluzione, chiedendogli di individuare autonomamente come completare l'attività e di documentare gli eventuali ostacoli incontrati. Questa modalità costringe il processo di verifica a confrontarsi con l'organizzazione reale del sistema, evitando di limitarsi alla conferma di un percorso già conosciuto.
L'AI può così contribuire a individuare problemi di organizzazione dell'interfaccia, passaggi ridondanti e incoerenze tra le capacità tecniche e la loro disponibilità operativa, trasformando parte del collaudo in un'attività di analisi funzionale.
Naturalmente, il comportamento di un agente intelligente non può essere considerato equivalente a quello di un utente reale, perché le modalità con cui interpreta le informazioni e individua i percorsi possono essere differenti. Tuttavia, la possibilità di eseguire esplorazioni ripetute e documentabili rappresenta uno strumento complementare alle tradizionali attività di testing e valutazione dell'usabilità.
La qualità delle verifiche conta quanto la loro automazione
L'utilizzo dell'intelligenza artificiale nelle attività di testing introduce anche nuove opportunità nella raccolta e nell'organizzazione delle evidenze, poiché gli agenti possono registrare le operazioni eseguite, confrontare gli stati applicativi e produrre documentazione che rende più semplice ricostruire le modifiche effettuate e i risultati ottenuti.
Questo aspetto diventa particolarmente utile nei processi iterativi, nei quali il codice viene modificato frequentemente e occorre accertare che i nuovi interventi non compromettano comportamenti precedentemente funzionanti.
Rimane tuttavia fondamentale distinguere tra l'esecuzione corretta di una procedura e la dimostrazione del risultato applicativo, perché una compilazione riuscita, una risposta positiva di un servizio o il superamento di un test eseguito in un ambiente simulato non costituiscono necessariamente una prova del corretto completamento di un intero processo operativo.
Quando gli agenti AI vengono impiegati sia nell'implementazione sia nella verifica, esiste inoltre la possibilità che un'interpretazione incompleta dei requisiti venga riprodotta anche nei test, determinando risultati coerenti con la soluzione sviluppata ma non con le esigenze originarie.
La definizione di criteri di accettazione espliciti e la richiesta di evidenze osservabili permettono di affrontare questa criticità, mantenendo i vantaggi dell'automazione senza rinunciare alla possibilità di controllare e contestare i risultati.
Non è necessario che ogni verifica sia eseguita manualmente, ma è importante che sia sempre possibile comprendere che cosa è stato effettivamente controllato, in quali condizioni e con quali risultati.
Verso un processo di sviluppo e validazione continuo
L'esperienza nell'utilizzo degli agenti AI suggerisce che il loro contributo più interessante non sia limitato alla produzione del codice, ma riguardi la possibilità di collegare attività che tradizionalmente vengono spesso affrontate in momenti differenti.
L'analisi di un sistema può condurre alla definizione di interventi architetturali, la loro implementazione può essere immediatamente accompagnata da verifiche funzionali e i risultati del collaudo possono diventare il punto di partenza per ulteriori miglioramenti, all'interno di un processo continuo nel quale sviluppo e validazione si influenzano reciprocamente.
In questa prospettiva, lo sviluppatore mantiene un ruolo centrale nella definizione degli obiettivi, nella valutazione delle alternative e nell'accettazione dei risultati, mentre gli agenti intelligenti contribuiscono all'esecuzione delle attività e alla produzione delle informazioni necessarie per prendere decisioni.
Non si tratta di sostituire le competenze umane, ma di utilizzarle in un contesto operativo differente, nel quale una parte crescente delle attività tecniche può essere automatizzata e l'attenzione può concentrarsi maggiormente sulla qualità complessiva del sistema.
L'intelligenza artificiale introduce quindi la possibilità di ripensare il rapporto tra sviluppo e collaudo, superando una visione nella quale la verifica rappresenta prevalentemente una fase successiva alla produzione del software.
Il passaggio oltre il Vibe Coding potrebbe essere proprio questo: non limitarsi a utilizzare l'AI per costruire applicazioni più rapidamente, ma impiegarla anche per comprendere meglio ciò che è stato costruito, verificarne il comportamento e guidarne il miglioramento continuo.