Scritti · Coding agentico

Il fico strangolatore

Ho un legacy, da dove comincio? Metti una facciata davanti, devia una chiamata alla volta, spegni quel che resta.

Giugno 2026

È la domanda che arriva sempre, dopo i talk: "ok, mi hai convinto, ma io ho un legacy di dieci anni. Da dove comincio?". E le risposte istintive sono due, entrambe già viste fallire. La prima è il rewrite totale: fermiamo tutto, riscriviamo da zero, ci vediamo dall'altra parte. Chi ci è passato sa come va a finire: il sistema vecchio continua a cambiare mentre riscrivi, e insegui per sempre. La seconda è il restauro sul posto: miglioro il codice dov'è, un pezzo qua e uno là. Peggio ancora, nell'era degli agenti: ottieni una codebase dove vecchio e nuovo convivono mescolati, e l'agente, che impara dalla forma di quello che legge, impara il mescolato.

La risposta buona ce l'ha la botanica. Il fico strangolatore è una pianta vera: germoglia in cima a un albero ospite, cala le radici lungo il tronco, e quando le radici toccano terra inizia a fare da sé. Cresce intorno all'albero finché l'albero, semplicemente, smette di servire. Martin Fowler ci ha intitolato un pattern dopo averne visti in Australia, e il pattern dice: il sistema nuovo cresce intorno al vecchio, finché il vecchio muore di morte naturale.

La ricetta operativa sta in tre mosse. Uno: metti una facciata davanti. Un punto di passaggio unico attraverso cui entrano tutte le chiamate, che all'inizio le gira tutte al legacy, identiche a prima. Da fuori, nessuno si accorge di niente. Due: devia una chiamata alla volta. Ogni ticket che ti costringe a toccare il vecchio è l'occasione: l'operazione rinasce nel mondo nuovo, con le sue regole scritte, e la facciata da quel momento devia lì. La fetta abbandonata del legacy si tappezza di nastro e nessuno la tocca più. Tre: spegni quel che resta. Quando una zona del vecchio sistema rimane senza chiamate, si spegne da sola. Per fame, senza funerale.

Il pattern ha vent'anni, e per vent'anni ha avuto un difetto: la trasposizione era lavoro umano, lungo e noioso, e la tentazione di mollare a metà vinceva spesso. È qui che l'era agentica gli cambia i connotati. La trasposizione è esattamente il lavoro che un agente fa meglio: il processo è noto, il comportamento atteso pure, c'è il vecchio codice come riferimento e il mondo nuovo ha regole scritte che si caricano da sole quando l'agente ci mette piede (com'è fatto quel mondo nuovo l'ho raccontato in Your codebase is the actual prompt). Tu dici "trasponilo", lui traspone, tu verifichi. E c'è un effetto composto: ogni operazione trasposta rende il mondo nuovo più uniforme, e più il mondo nuovo è uniforme, meglio l'agente lavora sulla trasposizione successiva. Il fico cresce sempre più in fretta.

Una cosa onesta da sapere prima di cominciare: il lavoro a un certo punto si ferma, e si ferma prima della fine. Resta sempre un pezzo di legacy che nessun ticket tocca da mesi, e che quindi nessuno traspone. Va benissimo così. L'obiettivo del fico è che il flusso vivo passi dal mondo nuovo; l'archeologia completa è un vanto da conferenza, mica un requisito.

Mi piace questo pattern perché ha il pragmatismo giusto: niente abbattimenti, il fico avvolge l'albero e aspetta. E il parallelo regge fino in fondo: la facciata è il fico che si stringe intorno al tronco, ogni chiamata deviata è una radice che tocca terra. Con una differenza a vostro favore: l'albero vero continua a crescere mentre viene avvolto, il vostro legacy smette il giorno stesso. Da lì in poi il codice nuovo nasce tutto nel fico, e all'albero resta solo da spegnersi, una radice alla volta.