¿Qué quiere decir con “tiempo de mantenimiento”? ¿Qué quiere decir que “las características a menudo deben mantenerse”? Si estas son cosas discretas que debemos hacer, simplemente agréguelas al trabajo atrasado y hágalas. Preferiría mostrar una relación directa entre estos elementos y características valiosas, y parece probable que podamos relacionar una tarea de mantenimiento con una historia que hemos enviado anteriormente.
Suponiendo que he interpretado el “tiempo de mantenimiento” razonablemente bien, la respuesta corta a la pregunta es: “Sí, absolutamente”.
Si quiere decir “necesitamos corregir los errores que hemos enviado” (“errores”), trate de corregir un error en una función enviada previamente exactamente como enviar una nueva función, excepto que tal vez pueda acelerar un lanzamiento en lugar de esperar para el final de la iteración para enviar. Cuanto más se integre y menos costos de proceso de lanzamiento, menos necesitará tratar las soluciones de envío de forma diferente al envío de nuevas funciones. Me gusta pensar en “corregir un error” como “enviar la función correctamente esta vez”.
- ¿Cuál es la diferencia entre una aplicación, un software y un programa?
- ¿Cuál es la mejor manera de organizar T-SQL en términos de patrones de reutilización / comprobabilidad / diseño?
- ¿Qué cosas puedo hacer como ingeniero de software autónomo, además del código, para asegurarme de ser un mejor programador constantemente?
- ¿Qué herramientas de desarrollo utilizó el equipo de WhatsApp para crear la aplicación de mensajería?
- ¿Cuáles son los mejores recursos en ingeniería de requisitos de software?
El trabajo de mantenimiento se incluye en la categoría de “trabajo inesperado, a veces urgente”, y debemos buscar continuamente formas de reducirlo. Mientras tanto, agregamos tareas de mantenimiento a la cartera de pedidos a medida que las necesitamos _y_ calculamos cuánto tiempo dedicamos típicamente al trabajo de mantenimiento y retenemos gran parte de nuestra capacidad durante la planificación del sprint. Esto evita el error común de “prometer” una historia a un cliente a pesar de que anticipamos que algunos trabajos de mantenimiento en las características antiguas nos impedirán entregarla. Cuando retenemos la capacidad, reconocemos que necesitamos hacer este trabajo inesperado (en el sentido de que no sabemos qué tareas exactas debemos hacer) trabajar y planificar en consecuencia. En la planificación del sprint, podemos identificar fácilmente (por ejemplo) un 25% más de trabajo del que cabe en el sprint, de modo que sepamos qué hacer a continuación si este sprint es afortunado y tenemos menos trabajo de mantenimiento de lo normal.
Algunas empresas hacen esto innecesariamente complicado. Utilizan modelos basados en horas-persona por punto y número de empleados disponibles por día por sprint para “calcular” (adivinar) su capacidad para el próximo sprint. Creo que esto es principalmente un gran desperdicio de esfuerzo, pero es posible que trabaje en este entorno, por lo que debería tener una manera de lidiar con eso. Rastree el trabajo de mantenimiento real en horas, luego úselo para reservar capacidad. Si ha pasado 147 horas en los últimos 4 sprints, entonces reduce su capacidad para el próximo sprint en el equivalente a 37 horas. (Peor aún, el trabajo de mantenimiento tiende a no llegar de manera uniforme, por lo que es posible que prefiera hacer esas 74 horas. Esto provocará discusiones con los clientes / gerentes de proyecto en la planificación del sprint. Es por eso que no me molesto en absoluto).
Kent Beck abordó esto en la segunda edición de XP Explained (segunda edición) bajo el concepto de “Slack”, por lo que se puede decir que la planificación del trabajo de mantenimiento ha sido parte de XP durante casi 15 años. Por lo tanto, creo que el desarrollo de software ágil aborda el esfuerzo de mantenimiento directamente y con bastante destreza.
Kent Beck y Cynthia Andres. Embrace Change, 2nd Edition (The XP Series): Kent Beck, Cynthia Andres: 9780321278654: Amazon.com: Libros