Trabajo con una base de código que tiene más de 500 mil líneas de código. Tiene una gran necesidad de refactorización. Se han identificado esfuerzos de refactorización que tomarán más tiempo que el sprint normal de dos semanas. Estos no se pueden dividir en tareas más pequeñas como he visto sugeridas 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? Una vez más, menciono, dividirlo en pedazos más pequeños no es una opción, eso ya se ha hecho.
Actualización: Las personas parecen necesitar una explicación de por qué esto no puede encajar en un sprint de 2 semanas. Hay más cosas involucradas 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 de la base de código no los tiene. Además, algunas de nuestras pruebas de integración siguen siendo pruebas manuales. El problema no es que la refactorización en sí sea tan grande. Es con el hecho de que pequeños cambios tienen un efecto en muchas partes del sistema, y debemos asegurarnos de que esas partes sigan funcionando correctamente.
No podemos posponer o extender un sprint porque tenemos revisiones mensuales. Entonces, este cambio que se extiende más allá de un sprint no puede detener el otro trabajo que se agrega al hotfix.
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 cambiarle el nombre a un rediseño. Me gustaría creer que en el futuro podríamos realizar exactamente la misma tarea dentro de 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á adaptando más al cambio, queremos que esta parte de la base del código sea tan adaptable como el resto. Lo cual requiere refactorizarlo. Con base en las respuestas aquí, se está haciendo evidente que faltan los andamios necesarios para que esta refactorización funcione en el marco de tiempo de los sprints normales.
Responder:
Voy a hacer el enfoque de ramificació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 a las que les faltan pruebas e implementarlas primero, luego hacer la refactorización. Nos permitirá mantener nuestro ciclo de sprint normal de dos semanas, como muchos aquí han estado diciendo que siempre debería ser el caso para la refactorización.