Realmente no pretendo atacar otras respuestas, pero ¿nadie más está escribiendo pruebas automatizadas aquí?
Aquí hay una lectura divertida de Martin Fowler para cualquiera que esté haciendo Scrum sin las prácticas adecuadas de ingeniería de software. Robert C. Martin también dice mucho sobre esto aquí .
Entonces, a mi respuesta ... En resumen, es así:
Sí, el código de refactorización "al azar" está permitido en Scrum , siempre que el equipo decida que debe hacerse. (Después de todo, es autoorganizado)
Y ahora por la larga respuesta:
Es evidente que dejar más y más deuda técnica después de cada Sprint es una receta para el desastre. Pronto, todos disminuirán la velocidad a medida que el código se vuelva más desordenado; cada cambio será más difícil de realizar porque el código está tan enredado y desordenado que lleva más tiempo encontrar los lugares para cambiar que realizar el cambio real. Se vuelve aún peor si tiene que hacer un cambio en un módulo grande y desordenado del que no sabe nada, se hace imposible ganar / mantener la productividad al agregar / cambiar personas en el proyecto, y así sucesivamente.
Si un equipo desea mantener estable su velocidad, debe poder mantener limpia la base del código para incrementar continuamente el software. La refactorización es una práctica obligatoria si desea mantener su velocidad durante todo el ciclo de vida del proyecto, y si desea mitigar el riesgo de agregar / cambiar personas en el proyecto, y si desea poder realizar cambios en los módulos, no sabe nada sobre, y así sucesivamente.
Sin embargo, refactorizar es una actividad muy peligrosa. Repito, es una actividad muy peligrosa . Es decir, a menos que tenga suficiente cobertura de prueba para poder cambiar de forma segura y libre la base del código. Si puede presionar un botón para verificar si nada se rompió, la refactorización se convierte en una actividad muy segura; tan seguro, de hecho, que es parte del ciclo de TDD , que es la práctica que le permite crear dicho conjunto de pruebas en primer lugar.
Pero, como los equipos en Scrum se autoorganizan, al final su equipo debe decidir qué es lo correcto. Espero haberte dado algunos argumentos en caso de que tengas que convencer a alguien. (Preste especial atención a los enlaces en el primer párrafo, y a cualquier otro artículo al que apunten)