Attualmente sto lavorando per una piccola azienda che ha pochi prodotti tecnicamente complicati. Sono l'unico editore per uno di loro. Circa un anno fa, ho ottenuto la versione legacy del prodotto e ho iniziato a "supportarlo".
Il cliente parla solo di nuove funzionalità, valore aziendale e altre di questo tipo. Il problema è che, sebbene il codice sia in C #, è abbastanza procedurale. Non ci sono astrazioni, le classi sono usate solo dove Visual Studio le richiede - Moduli, per esempio. Le implementazioni di queste classi sono davvero terribili e il codice è davvero difficile da mantenere.
Per tutto quest'anno ho trascorso il mio tempo libero per il refactoring. Nell'ultima versione ci sono astrazioni e cose simili. Ho dovuto reimplementare una serie di componenti da zero e sento davvero che aggiungere nuove funzionalità o modificare il comportamento a questi componenti è MOLTO più semplice che ad altri.
Il problema è che passo il mio tempo. Mi piacciono molto i risultati, ma non mi piace lavorare 12 ore al giorno. Sei mai stato in una situazione simile? Cosa dovrei provare? Ho già provato a discuterne, ma non ho ancora avuto successo.
Ho solo paura del momento in cui decidiamo di implementare la nuova funzione che richiede molte modifiche al codice legacy. Questo potrebbe essere scioccante per il cliente: perché hai bisogno di 8 ore per cambiare queste icone? Al cliente non importa che ci siano 500 posti nel codice che ho bisogno di cambiare. E dovrei anche trovare prima tutti questi 500 posti.
Qualche idea?