Actualmente estoy trabajando para una pequeña empresa que tiene pocos productos técnicamente complicados. Soy el único desarrollador para uno de ellos. Hace aproximadamente un año, obtuve la versión heredada del producto y comencé a "apoyarlo".
El cliente solo habla de nuevas características, valor comercial y otros de ese tipo. El problema es que, aunque el código está en C #, es bastante procesal. No hay abstracciones, las clases solo se usan donde Visual Studio las requiere, por ejemplo, formularios. Las implementaciones de estas clases son realmente horribles y el código es realmente difícil de mantener.
Durante todo este año paso mi propio tiempo para refactorizar. En la última versión, hay bonitas abstracciones y cosas así. Tuve que volver a implementar una serie de componentes desde cero y realmente siento que agregar nuevas funciones o cambiar el comportamiento de estos componentes es MUCHO más fácil que para otros.
El problema es que paso mi propio tiempo. Realmente me gustan los resultados, pero no me gusta trabajar 12 horas por día. ¿Alguna vez has estado en una situación similar? ¿Qué debería probar? Ya he intentado discutirlo, pero aún no he tenido éxito.
Solo tengo miedo del momento en que decidimos implementar la nueva característica que requiere muchos cambios en el código heredado. Eso podría ser impactante para el cliente: ¿por qué necesita 8 horas para cambiar estos íconos? Al cliente simplemente no le importa que haya 500 lugares en el código que necesito cambiar. Y también debería encontrar primero estos 500 lugares.
¿Algunas ideas?