Atualmente, estou trabalhando para uma pequena empresa que possui poucos produtos tecnicamente complicados. Sou o único desenvolvedor de um deles. Há cerca de um ano, obtive a versão legada do produto e comecei a "apoiá-lo".
O cliente fala apenas sobre novos recursos, valor comercial e outros desse tipo. O problema é que, embora o código esteja em C #, é bastante processual. Não há abstrações, as classes são usadas apenas onde o Visual Studio as requer - Formulários, por exemplo. As implementações dessas classes são realmente terríveis e o código é realmente difícil de manter.
Durante todo esse ano, passo meu próprio tempo na refatoração. Na versão mais recente, existem abstrações bonitas e tal. Eu tive que reimplementar vários componentes do zero e realmente sinto que adicionar novos recursos ou alterar o comportamento desses componentes é MUITO mais fácil do que para outros.
O problema é que passo meu próprio tempo. Gosto muito dos resultados, mas não gosto de trabalhar 12 horas por dia. Você já esteve em situação semelhante? O que devo tentar? Eu já tentei discutir isso, mas ainda não obtive sucesso.
Estou com medo do momento em que decidimos implementar o novo recurso que requer muitas alterações no código legado. Isso pode ser chocante para o cliente: por que você precisa de 8 horas para alterar esses ícones? O cliente simplesmente não se importa com a necessidade de alterar 500 lugares no código. E eu também deveria encontrar todos esses 500 lugares primeiro.
Alguma ideia?