Parece que tus problemas son más generales.
El problema de la refactorización es tanto un síntoma como un posible alivio de parte del problema.
El responsable del software y el equipo asignan el tiempo del equipo
Desde mi experiencia, creo que puede estar encontrando un problema al que llamo "todo el mundo es un administrador de software". Los gerentes de producto, los gerentes de proyecto y, en ocasiones, los ingenieros y evaluadores de sistemas pueden ser conocidos por tratar de microgestionar a los desarrolladores que probablemente ya tengan un gerente de software con experiencia. Incluso puede tener algunos miembros en su equipo que creen que su función es administrar.
Si usted es el administrador de software, haga asignaciones para la refactorización que desea, o mejor aún, haga que su equipo le proponga una refactorización para su aprobación. Para no volver a utilizar el sistema de microgestión, es posible que tenga directrices sobre la edad / autor / tamaño / contexto del código que debe ser refactorizado y que puede ser refaccionado libremente frente a la necesidad de aprobación. Si un miembro de su equipo quiere refactorizar masivamente cuatro clases grandes de código antiguo complejo que no escribió que no son parte de su característica, su distracción de dos semanas es su problema, por lo que necesita la oportunidad de decir no.
Puede escabullirse, pero creo que es mejor construir sus estimaciones cuidadosamente con tiempo para el análisis, diseño, codificación, múltiples formas de prueba (al menos unidad e integración), refactorización y riesgo según lo juzgado históricamente y por La falta de experiencia o claridad asociada a la tarea. Si ha sido demasiado abierto con respecto al funcionamiento de su equipo (o tiene miembros en su equipo que lo son), puede ser conveniente limitar los canales de comunicación para que lo revisen y discutan recursos y resultados, no métodos.
Las primeras opciones del proyecto crean un ciclo vicioso para refactorizar
El mantenimiento del software es difícil. Es doblemente difícil si otros en la organización están haciendo elecciones a sus expensas. Esto está mal, pero no es nuevo. Ha sido abordado por Barry Boehm, uno de nuestros grandes escritores de software que presenta un modelo de gestión que describe como Theory W.
enlace
A menudo, los desarrolladores de software son golpeados para producir bajo el enfoque de gestión de Theory-X que dice que los trabajadores son básicamente flojos y que no se desempeñarán a menos que sean sometidos a la sumisión. Boehm resume y contrasta su modelo propuesto de la siguiente manera:
"En lugar de caracterizar a un gerente como un autócrata (Teoría X), un entrenador (Teoría Y) o un facilitador (Teoría Z), la Teoría W caracteriza el papel principal de un gerente como negociador entre sus diferentes constituyentes y un empaquetador de soluciones de proyectos con condiciones de éxito para todos los partidos. Además, el administrador también es un defensor de objetivos, un monitor del progreso hacia los objetivos y un activista en la búsqueda de conflictos de proyectos diarios de ganar-perder o perder, confrontándolos y cambiándolos a situaciones de ganar-ganar ".
Rápido y sucio a menudo es solo sucio
Boehm continúa señalando la razón por la cual las cosas son tan miserables para los desarrolladores del equipo de mantenimiento.
"La creación de un producto rápido y descuidado puede ser una" ganancia "a corto plazo y de bajo costo para el desarrollador y el cliente del software, pero será una" pérdida "para el usuario y el mantenedor". Tenga en cuenta que en el modelo de Boehm, el cliente es más un administrador de contratos en lugar de un usuario final. En la mayoría de las empresas, piense en el gerente de producto como un sustituto del cliente, o quizás en la persona que compra el producto para su lista de características.
Mi solución sería no lanzar el equipo de desarrollo original (o al menos el cable original) hasta que el código sea refactorizado para al menos cumplir con los estándares de codificación.
Para el cliente, creo que es razonable contar con el gerente de producto como un sustituto del cliente, y el grupo de personas recompensadas por entregar algo rápido y sucio ciertamente puede ampliarse, por lo que hay un gran número de miembros para hacer las cosas de manera incorrecta .
La refactorización no es negociable
No abandone su rol como administrador de software. Debe tener autoridad y discreción para usar el tiempo de su equipo en el proceso y las mejoras del producto. En ese rol, es posible que deba negociar sus elecciones para que su equipo sea más profesional. Sin embargo, con respecto al proceso, no negocies con el marketing, porque en mi experiencia, es un juego perdido. Negociar con la dirección de ingeniería. Demuestra que tienes visión. Crear un equipo de software profesional es una extensión de su función y es mucho más probable que se vea como un ganar-ganar.