Come posso convincere i project manager, i proprietari di prodotti, gli analisti di business, i clienti e vari altri stakeholder che il refactoring è una parte utile e produttiva del processo di sviluppo?
Come sviluppatori sappiamo tutti che i requisiti cambiano o non vengono mai spiegati completamente dall'inizio, e quindi il modo in cui abbiamo scritto un pezzo di codice in passato non ha senso ora e deve cambiare. Sappiamo che se ridisegniamo un codice ora ci salverà nel lungo periodo. Sappiamo che se manterremo pulito e ordinato il nostro codebase, miglioreremo la manutenibilità e alla fine porteremo a un codice migliore.
Ma comunque lo metto agli stakeholder, non riesco proprio a ottenere il valore. Per loro, il refactoring è una perdita di tempo non costruttiva (per sua stessa definizione - l'utente non dovrebbe vedere cambiamenti nell'applicazione). Per loro non fornisce alcun valore commerciale (o almeno non ha un valore aziendale immediato) perché non offre nuove funzionalità e resisterà strongmente a qualsiasi refactoring.
Non posso essere coinvolto in una base di codice in cui il refactoring non avviene perché sono già stato lì e ho visto come va a finire. Quindi invece lo introduco di nascosto quando lavoro su una funzione. Preferisco di gran lunga farlo apertamente in modo che le parti interessate possano avere un'idea più chiara del processo di sviluppo.
Qualche idea su come ottenerlo?