I prodotti software tendono, per loro natura, ad aumentare di complessità.
Questo non è per forza di cose un male, o un problema, ma ogni sistema complesso richiede più risorse e tempo per essere gestito.
Il team di sviluppo spesso è troppo focalizzato sulle nuove funzionalità, su quanto c’è in backlog, sui bug da risolvere, per accorgersi se, nella codebase stanno iniziando a crescere le erbacce.
Dopo qualche anno di lavoro sul prodotto si forma quello che gli sviluppatori chiamano “debito tecnico”, inizia ad esserci una parte del codice chiamata “legacy” che si tocca con disaffezione.
Spesso, è capitato anche a me, anche il CTO si accorge tardi del formarsi di questa situazione: i task sono tanti, i refactoring si rimandano, ci si affida a librerie non proprio all’ultimo grido, si pensa al futuro anche se qualche radice è marcia.
Quando le erbacce hanno infestato il giardino è tardi: occorrono interventi pesanti per sistemare le cose, tempo, budget.
Mi accorsi del problema, ed era anche colpa mia, anni fa. Un software di contabilità che curavo aveva raggiunto il punto di non ritorno. Conveniva riscriverlo piuttosto che sistemare. Un guaio grosso. Mi comportai come da prassi di allora, ancora mi sento la coscienza sporca, cambiando lavoro e lasciando la patata bollente al mio successore.
L’esperienza insegna, la coscienza fa il suo per non ripetere errori simili, e quindi da allora cerco di dedicare del tempo all’attività laterale di giardiniere del software.
Vi lascio la mia breve lista sulle cose da fare:
- Dimenticati del software, della roadmap, delle cose da fare: affronta il progetto come se non l’avessi mai visto, osservalo dall’esterno con criticità, sii spietato.
- Scrivi tutto quello che non va, brevemente, dove ti pare.
- Isola e controlla i rami secchi, il codice inutilizzato, il codice che usa vecchie librerie, controlla i rami più vecchi del prodotto in cerca di reperti archeologici.
- Cerca di essere predittivo e indovinare le parti di codice che porteranno ad un collasso prima o poi, se lasciate nell’incuria.
- Dai un punteggio alle tue annotazioni, proponi un task per la loro soluzione a te stesso: fai lavorare il tuo giardiniere con il tuo architetto mentale interno.
- Conserva la tua lista gelosamente. Non ha senso fare riunioni noiose con tutto il team per affrontare tutti i problemi insieme: abbasseresti il morale di tutti.
- Estrai dalla lista, sulla base delle cose da fare, dei piccoli task di correzione e adeguamento, e aggiungili nel backlog di volta in volta. Piccole cose che si possono fare in breve tempo: questi miglioramenti faranno crescere il prodotto più rapidamente in futuro: non sono tempo perduto.
Così facendo, se sarai stato un buon giardiniere, il prodotto resterà moderno e longevo, sarà più semplice da mantenere e revisionare, le nuove funzionalità saranno più rapide da sviluppare.
Non avere paura di usare la cesoia, il concime, ed innaffia per bene.