Attualmente sto lavorando per una piccola azienda che ha pochi prodotti tecnicamente complicati. Sono l'unico e unico sviluppatore 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 commerciale e altri di quel tipo. Il problema è che, sebbene il codice sia in C #, è abbastanza procedurale. Non ci sono astrazioni, le classi vengono utilizzate solo dove Visual Studio le richiede, ad esempio i moduli. Le implementazioni di queste classi sono davvero terribili e il codice è davvero difficile da mantenere.
Per tutti questi anni passo il mio tempo per il refactoring. Nell'ultima versione, ci sono piuttosto astrazioni e simili. Ho dovuto reimplementare un certo numero di componenti da zero e sento davvero che l'aggiunta di nuove funzionalità o il cambiamento del comportamento di questi componenti è MOLTO più facile 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 funzionalità 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 posizioni nel codice che devo modificare. E dovrei anche trovare prima tutti questi 500 posti.
Qualche idea?