Quando il codice "temporaneo" diventa permanente

Le soluzioni temporanee hanno una strana tendenza a sopravvivere per anni. Il problema non è scrivere codice imperfetto. Il problema arriva quando nessuno ricorda più perché esiste quella soluzione, ma tutti hanno paura di toccarla.

Non so quante volte ho scritto qualcosa pensando: poi lo sistemo. A volte succede davvero. Molte altre volte la funzionalità parte, arriva qualcosa di più urgente e quel pezzo di codice non proprio bellissimo rimane lì. Dopo un po’ nessuno lo considera più temporaneo.

E secondo me non significa necessariamente aver lavorato male. Il software viene sviluppato nel mondo reale, con scadenze, cambi di requisiti e problemi che magari vanno risolti oggi, non quando avremo trovato l’architettura perfetta. Anche perdere tre giorni per rendere elegantissima una cosa che forse tra una settimana verrà eliminata non mi sembra esattamente una grande idea.

Il divertimento arriva mesi dopo. Trovi un if che apparentemente non serve a nulla, lo togli e improvvisamente si rompe qualcosa dall’altra parte dell’applicazione. Vai a vedere la cronologia e scopri che era stato aggiunto per risolvere un problema specificissimo che ormai nessuno ricorda. Il codice magari è anche semplice. Quello che manca è il motivo per cui esiste.

Per questo negli anni ho iniziato ad apprezzare molto di più il contesto. Un commento che mi dice semplicemente cosa fa una funzione spesso non mi serve: posso leggere il codice. Mi interessa molto di più sapere perché è stata scelta quella soluzione strana invece di quella ovvia. A volte una riga di commento o un riferimento a una issue risparmia ore di investigazione in futuro.

Con l’AI questa cosa secondo me diventa ancora più importante. Oggi possiamo produrre parecchio codice funzionante in pochissimo tempo, ed è un vantaggio enorme. Però “funziona” e “so perché funziona” rimangono due cose diverse. Se devo mantenere quel codice per anni, almeno le parti importanti voglio capirle. Altrimenti sto semplicemente spostando il problema più avanti.

Non credo molto nel codice perfetto. Preferisco codice comprensibile, anche con qualche imperfezione, piuttosto che una soluzione geniale che dopo sei mesi nessuno ha il coraggio di modificare. Le scorciatoie esisteranno sempre. Basta lasciare qualche briciola di pane a chi dovrà ritrovarle in futuro. Anche perché, molto probabilmente, quel poveraccio saremo noi stessi.

Alessio

Consulente tecnologico, sviluppatore software e problem solver. Condivido esperienze e riflessioni pratiche su tecnologia, operations e prodotti digitali.