Kent Beck, figura iconica dello sviluppo software, offre una riflessione profonda sulla programmazione assistita dall'IA nel suo articolo "Augmented Coding: Beyond the Vibes." Traccia una distinzione fondamentale tra due filosofie d'uso dell'IA: l'"augmented coding", in cui la qualità del codice, la complessità, i test e la loro copertura restano una priorità (valori simili alla programmazione manuale tradizionale), e il "vibe coding", caratterizzato dall'indifferenza verso la qualità del codice, con un'attenzione rivolta unicamente al comportamento del sistema.
Progetto BPlusTree3: uno studio di caso
Beck documenta la sua implementazione di una libreria B+ Tree in Rust e Python, investendo circa 110-130 ore in 4 settimane su tre versioni, delle quali le prime due abbandonate a causa dell'accumulo di complessità. Il progetto mirava a dimostrare che l'augmented coding può produrre "codice di libreria pronto per la produzione, competitivo in termini di prestazioni" tramite l'IA generativa.
Supervisione attiva e segnali d'allarme
Anziché un'accettazione passiva, Beck adotta un monitoraggio vigile: "ha osservato i risultati intermedi del genio con maggiore attenzione, pronto a intervenire e a fermare uno sviluppo improduttivo." Identifica tre segnali d'allarme critici: cicli di implementazione, l'introduzione di funzionalità non richieste (anche se ragionevoli), e la manipolazione dei test (disattivazione/eliminazione per simulare il successo).
Innovazione metodologica: il pivot linguistico
Di fronte a un blocco causato dal modello di memoria a ownership di Rust che crea "complessità composta," Beck impiega una strategia non convenzionale: fa prima scrivere il codice in Python, poi lo traslittera in Rust tramite il Remote Agent di Augment. Questo "esperimento rischioso" riesce a "sbloccare il genio" e accelera significativamente i progressi.
Risultati di performance
Le librerie generate raggiungono benchmark competitivi: "più veloce nella scansione per intervalli (iterazione su un elenco di chiavi)" rispetto a BTreeMap di Rust e SortedDict di Python, sebbene "un po' più lenta in alcune operazioni." L'estensione C per Python generata dall'IA raggiunge prestazioni "quasi altrettanto veloci" quanto la struttura dati nativa di Python.
Principi rigorosi del TDD
Il system prompt di Beck impone una metodologia rigorosa di Test-Driven Development: ciclo obbligatorio Red → Green → Refactor, "prima il test più semplice che fallisce," implementazione minima per superare i test, separazione rigorosa tra modifiche strutturali e comportamentali ("Mai mescolarle nello stesso commit").
Evoluzione professionale
Beck affronta l'ansia della sostituzione: "Sì, la programmazione cambia con un genio, ma resta programmazione. Per certi versi un'esperienza di programmazione molto migliore." I benefici concreti includono l'eliminazione dello "yak shaving" (compiti di configurazione tediosi), decisioni più consequenziali: "Prendo più decisioni di programmazione consequenziali all'ora, meno decisioni noiose e banali," e l'automazione dei test di copertura che altrimenti richiederebbero ore di risoluzione di problemi ambientali.
Divario di qualità persistente
Nonostante il successo funzionale e prestazionale, Beck esprime un'insoddisfazione qualitativa: "Mi sento bene riguardo alla correttezza e alle prestazioni, meno bene riguardo alla qualità del codice. Quando provo a scrivere il codice come un programma letterario, c'è semplicemente troppa complessità accidentale." Questa sfida residua suggerisce che l'IA richiede ancora una guida umana per l'ottimizzazione della semplicità, confermando che l'augmented coding resta una collaborazione uomo-macchina piuttosto che una sostituzione.