SCRUM y la refactorización

A cuenta de la refactorización y SCRUM, he estado buscando opiniones y me he encontrado con esta en Stack Overflow. Es la más votada. Estoy prácticamente de acuerdo con todo lo que dice. Más abajo está la traducción al español.

Enlace original: http://stackoverflow.com/questions/2456310/scrum-and-refactoring

Pregunta

If everything in scrum is all about functional things that a user can see is there really any place for refactoring code unrelated to any new functional requirements?

Respuesta

I don’t think that this has as much to do with Scrum as it does with project management philosophy.

Regardless of whether a project uses Scrum or not, many project managers do not like developers spending time on “unnecessary” things like code refactoring or restructuring that doesn’t directly advance one of the outstanding functional requirements. It’s not “work that yields results” like normal development, it’s “work that prevents a delay of results later”. Given the typically short time-lines used for Sprints, the benefit is often hard to see and nearly impossible to quantify.

Keeping code maintainable needs to be an item on your burn-down list (if you use a Scrum). It is just as important as new development. While it may not seem like something that is “visible to the user”, ignoring it increases your technical debt. Down the road when the technical debt piles up enough that your code’s lack of maintainability slows down development, the delays in new feature development will be visible to customers.

It’s all a matter of management/philosophy. Instead of looking at refactoring and maintainability enhancements as “extra” work that doesn’t impact customers, it should be viewed as a time investment to prevent customer-visible delays (and potentially bugs as well) down the road. Developers can sometimes see these benefits more clearly than managers can; if your manager doesn’t understand the disadvantages of neglecting maintainability, you might want to grab several other developers and have a chat with your manager.


La respuesta traducida

No creo que esto tenga mucho que ver con SCRUM, más bien tiene que ver con la filosofía de la gestión de proyectos.

Con independencia de si un proyecto usa SCRUM o no, muchos directores de proyecto no ven bien que los desarrolladores echen horas haciendo cosas “innecesarias” como la refactorización de código / reestructuración,  las cuales que no tienen un impacto directo en el avance sobre alguno de los requerimientos funcionales pendientes. No es “trabajo que produce resultados”, como el desarrollo normal; es “trabajo hecho ahora para evitar posteriores retrasos”. Dadas las restricciones de tiempo en intervalos cortos que requieren los sprints, los beneficios son a menudo difíciles de ver y prácticamente imposibles de cuantificar.

Hacer que el código sea mantenible necesita ser un elemento en tu lista de burn-down (si usas SCRUM). Es igual de importante los nuevos desarrollos. A pesar de que no sea algo “visible para el usuario”, ignorarlo aumenta la deuda técnica. Con el paso del tiempo, cuando esta la deuda técnica se amontona lo suficiente como para evidenciar la falta de mantenibilidad, el desarrollo se va haciendo más lento y con ello los retrasos en las nuevas funcionalidades se van haciendo cada vez más patentes para los clientes.

Es una cuestión de gestión/filosofía. En lugar de mirar la refactorización y la mantenibilidad como un trabajo “extra” que no tiene impacto en el cliente, debería ser visto como una inversión de tiempo para prevenir, a la larga,  retrasos para el cliente, así como potenciales bugs.

A veces los desarrolladores ven más claramente estos beneficios que los gestores de proyecto. Si tu gestor no entiende las desventajas de descuidar a la mantenibilidad, podrías reunir a unos cuantos desarrolladores y mantener una charla con él.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s