Gli assistenti AI per il coding sono ormai accessibili a ogni sviluppatore. Da soli, però, offrono un vantaggio limitato. I team che spediscono più velocemente con l'AI sono quelli che la integrano nel flusso di lavoro: come la configurano, quale contesto le forniscono, e dove tracciano il confine tra autonomia dell'AI e giudizio umano.
In webvise, l'AI è presente in ogni fase del processo di sviluppo. Rimuove le frizioni perché il tempo di ingegneria si concentri su architettura, decisioni di design e logica di business, anziché su boilerplate, refactoring ripetitivo e checklist di revisione manuali.
Pianificazione: esplorare prima di impegnarsi
I task complessi, come migrazioni di librerie, modifiche architetturali o funzionalità che toccano decine di file, iniziano in modalità pianificazione. Prima che venga scritto qualsiasi codice, l'AI esplora il codebase, mappa le dipendenze e propone un approccio implementativo. Questo è fondamentalmente diverso dall'assegnare un task all'AI sperando che il risultato sia corretto.
La modalità pianificazione è importante perché il costo del rework su una modifica di grandi dimensioni è elevato. Una ristrutturazione di microservizi che scopre dipendenze inattese a metà lavoro fa sprecare giorni. Far mappare all'AI l'intero grafo delle dipendenze e proporre i confini dei servizi prima che cambi una singola riga intercetta questi problemi in anticipo.
Per modifiche ben definite, come la correzione di un bug in un singolo file o l'aggiunta di un controllo di validazione, si passa direttamente all'esecuzione senza pianificazione. La chiave è adeguare l'approccio alla complessità: pianificazione per le decisioni architetturali, esecuzione diretta per i task chiari.
Configurazione del progetto: insegnare all'AI i propri standard
La cosa più efficace che si possa fare con un assistente AI per il coding è fornirgli il contesto giusto. Gestisco file di configurazione strutturati che comunicano all'AI i miei standard di codice, le convenzioni di test, i pattern API e i requisiti di deployment. Questo contesto viene caricato automaticamente a ogni sessione.
Non tutto il contesto è però sempre pertinente. Caricare le convenzioni API mentre si modifica un componente React spreca token e può confondere l'AI. Per questo uso regole per percorso specifico con pattern glob: regole che si attivano solo quando si modificano i file corrispondenti. Le convenzioni di test si caricano per i file `/*.test.tsx`, i pattern API per `src/api//*`, le convenzioni del database per i file di migrazione.
Questo approccio riduce il rumore e migliora la qualità dell'output. L'AI genera codice aderente agli standard perché li conosce, e conosce solo quelli pertinenti al file che sta modificando.
Sviluppo: raffinamento iterativo invece della generazione in un colpo solo
L'errore più comune con gli strumenti AI per il coding è trattarli come generatori one-shot. Si descrive ciò che si vuole, l'AI produce il codice, e lo si accetta o si ricomincia da capo. Questo approccio produce sistematicamente risultati peggiori rispetto al raffinamento iterativo.
Il mio flusso di lavoro è test-driven: scrivo prima la suite di test, coprendo comportamenti attesi, casi limite e requisiti di performance, poi lascio che l'AI implementi a partire da quei test. Quando i test falliscono, condivido i fallimenti specifici e l'AI corregge la propria implementazione. Ogni iterazione riduce il divario tra l'output e il requisito.
Per i requisiti ambigui uso il pattern a intervista: invece di procedere subito all'implementazione, chiedo all'AI di porre prima domande di chiarimento. In questo modo emergono considerazioni che il developer potrebbe non aver anticipato: strategie di invalidazione della cache, modalità di fallimento, problemi di concorrenza. Due minuti di domande possono evitare due ore di rework.
- Gli esempi concreti battono le descrizioni in prosa. Quando il linguaggio naturale produce risultati inconsistenti, 2-3 esempi di input/output chiariscono il requisito immediatamente
- I problemi correlati vanno in un unico messaggio. Quando più correzioni si influenzano a vicenda, è preferibile fornirle insieme affinché l'AI consideri le interazioni
- I problemi indipendenti vanno sequenzialmente. I problemi non correlati si affrontano uno alla volta con feedback mirati
Code review: sessioni indipendenti trovano più bug
Il codice generato dall'AI richiede comunque revisione. Vale la pena esaminare un pattern specifico: far revisionare il codice alla stessa sessione AI che lo ha scritto tende a produrre risultati peggiori rispetto a una revisione indipendente, perché il modello conserva il proprio contesto ragionativo ed è meno propenso a mettere in discussione le proprie scelte.
L'approccio che uso sono istanze di revisione indipendenti: una nuova sessione AI senza alcun contesto ragionativo dalla fase di generazione. Questo secondo sguardo intercetta problemi sottili che l'auto-revisione non coglie. Per le pull request di grandi dimensioni che toccano molti file, divido le revisioni in analisi per singolo file per i problemi locali, più un passaggio di integrazione separato che esamina il flusso dei dati tra i file.
I prompt di revisione indicano con precisione cosa cercare. Istruzioni vaghe come "controlla che il codice sia corretto" producono risultati inaffidabili. Criteri espliciti come "segnala bug logici e problemi di sicurezza, ignora le differenze stilistiche minori" riducono i falsi positivi e aumentano la fiducia degli sviluppatori nel processo di revisione.
Integrazione CI/CD: l'AI nella pipeline
La revisione AI viene eseguita automaticamente su ogni pull request come parte della pipeline CI. L'AI analizza le modifiche, produce risultati strutturati con posizione nel file, descrizione del problema, severità e correzione suggerita, e li pubblica come commenti inline nella PR. L'output strutturato garantisce che i risultati siano analizzabili automaticamente e integrabili nei dashboard di code review esistenti.
Due dettagli rendono questo meccanismo efficace in pratica. Il primo: quando le revisioni vengono rieseguite dopo nuovi commit, i risultati precedenti sono inclusi nel contesto, così l'AI segnala solo problemi nuovi o ancora irrisolti, evitando commenti duplicati che erodono la fiducia. Il secondo: i file di test esistenti sono inclusi nel contesto, affinché la generazione di test non suggerisca scenari già coperti dalla suite.
Gestione del contesto: la competenza che tiene insieme il flusso
Tutte le tecniche descritte dipendono da una gestione efficace del contesto. I modelli AI hanno finestre di contesto finite, e il modo in cui si riempie quella finestra determina la qualità dell'output. Alcuni principi applicati sistematicamente:
- Esplorazione incrementale. Si parte con ricerche mirate per trovare i punti di ingresso, poi si seguono gli import e si tracciano i flussi, senza caricare tutti i file in anticipo
- Delega a sottoagenti. I task di discovery verbosi vengono eseguiti in sotto-contesti isolati che restituiscono riepiloghi, mantenendo la conversazione principale focalizzata
- Persistenza strutturata dello stato. I risultati chiave vengono scritti in file di appunti e referenziati nelle query successive, contrastando il degrado del contesto nelle sessioni lunghe
- Compattazione del contesto. Quando il contesto si riempie con output verbosi dall'esplorazione, lo si compatta riassumendo quanto appreso prima di proseguire
I risultati
Questo flusso di lavoro contribuisce a consegnare tipicamente applicazioni pronte per la produzione in settimane anziché mesi, per gli ambiti accettati; i risultati crescono con la complessità del progetto. L'AI gestisce il lavoro di volume: generazione di boilerplate, scrittura dei test, code review, documentazione. Il focus rimane sulle decisioni che richiedono giudizio umano: architettura, user experience, logica di business e standard di qualità.
Il risultato è qualità più consistente a velocità elevata. Ogni pull request riceve una revisione approfondita. Ogni funzionalità ottiene test completi. Ogni componente segue le convenzioni stabilite. Gli strumenti AI non si affaticano, non tagliano angoli sotto pressione delle scadenze e non perdono il contesto, anche se richiedono prompt attenti e revisione.
Se sta sviluppando un prodotto e cerca un partner che unisca flussi di lavoro moderni basati sull'AI a un giudizio ingegneristico consolidato, si metta in contatto. L'obiettivo è spedire rapidamente senza compromettere la qualità, e sono disponibile a illustrare il processo nel dettaglio.
Le pratiche di webvise sono allineate agli standard ISO 27001 e ISO 42001.