Trabajo con una base de código que tiene más de 500K líneas de código. Está en grave necesidad de refactorización. Se han identificado esfuerzos de refactorización que llevarán más tiempo que el sprint normal de dos semanas. No se pueden dividir en tareas más pequeñas, como he visto sugerido en otras respuestas en este sitio. El producto debe funcionar al final de la iteración, y la refactorización parcial dejará el sistema en un estado inutilizable ya que la dependencia entre los elementos es horrible. Entonces, ¿cuál sería la mejor manera de abordar este obstáculo? Nuevamente lo menciono, dividirlo en partes más pequeñas no es una opción que ya se haya hecho.
Actualizar: La gente parece necesitar una explicación de por qué esto no puede encajar en un sprint de 2 semanas. Hay más involucrado en un sprint que solo escribir código. Tenemos una política de no código sin pruebas. Esa política no siempre existió y una gran parte del código base no los tiene. También algunas de nuestras pruebas de integración son todavía pruebas manuales. El problema no es que la refactorización en sí sea tan grande. Es por el hecho de que los pequeños cambios tienen un efecto en muchas partes del sistema, y debemos asegurarnos de que esas partes aún funcionen correctamente.
No podemos postergar ni extender un sprint porque tenemos revisiones mensuales. Por lo tanto, este cambio que se extiende más allá de un sprint no puede impedir que el otro trabajo se agregue a la revisión.
Refactorización vs Rediseño: El hecho de que nuestro proceso de desarrollo no sea lo suficientemente eficiente como para manejar esta refactorización en un ciclo de dos semanas no garantiza el cambio de nombre a un rediseño. Me gustaría creer que en el futuro podríamos realizar exactamente la misma tarea en un ciclo de dos semanas a medida que nuestro proceso mejore. El código en cuestión aquí no ha tenido que cambiar en mucho tiempo, y es bastante estable. Ahora, a medida que la dirección de la empresa se está volviendo más adaptable al cambio, queremos que esta parte del código base sea tan adaptable como el resto. Lo que requiere refactorizarlo. Basándose en las respuestas aquí, es evidente que faltan los andamios necesarios para que esta refactorización funcione en el marco de tiempo de los sprints normales.
Respuesta:
Voy a hacer el enfoque de bifurcación y fusión que Corbin March sugirió la primera vez para que podamos aprender más sobre estas áreas problemáticas y cómo identificar las pruebas faltantes. Creo que en el futuro, deberíamos adoptar el enfoque que Buhb sugirió para identificar las áreas en las que faltan pruebas e implementarlas primero, luego hacer la refactorización. Nos permitirá mantener nuestro ciclo normal de sprint de dos semanas, como muchos de los que hemos estado diciendo aquí debería ser siempre el caso de la refactorización.