¿El desarrollo ágil considera la necesidad de mantener características?

¿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”.

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

Si por mantenimiento te refieres a la corrección de errores, entonces no es diferente a la planificación de otras funciones en Sprint. Puede considerar el error como una característica y planificarlo en el siguiente Sprint. Así es como la planificación de Sprint debe hacerse idealmente.

Sin embargo, el mundo está lejos de ser ideal. Si está hablando de la situación en la que cualquier error debe tratarse con prioridad y eso afecta su Sprint planificado. Entonces no estás solo.

En este caso, puedo sugerirle una metodología alternativa, Kanban. Lee sobre ello. De hecho, algunos equipos implementan con éxito un enfoque Scrumban, que es una combinación de Scrum y Kanban.

El mayor beneficio de Kanban es que limita el trabajo en progreso (WIP) para evitar cuellos de botella. Y, a diferencia de Scrum, no hay un ciclo de sprint en caja de tiempo , por lo tanto, un flujo continuo. Las características / errores en la parte superior del trabajo atrasado del equipo se manejan tan pronto como un recurso está disponible, suponiendo que no se haya alcanzado WIP.

Funciona de maravilla para mantener a todos felices, incluidos Team y PO.

Verifique Kanban y Scrum: aproveche al máximo un minibook disponible de forma gratuita en PDF. Ofrece una excelente visión general de ambas metodologías.

En el “tiempo anterior”, el mantenimiento era algo que hacía debido a un cambio que no emanaba del cliente. Los ejemplos típicos de cosas que causan mantenimiento pueden incluir el trabajo que emana de un sistema operativo o actualización de utilidad, una actualización de una plataforma integrada o algo por el estilo. Generalmente se considera “valor neutral” porque se trata más de prevenir una degradación del valor del producto, en lugar de un aumento del valor del producto.

A menudo, el mantenimiento se realizaba en un “expediente” o “lista de tickets” que estaba separado del cronograma de lanzamiento de entrega orientado al “proyecto” principal. Los equipos ágiles, al definir pequeñas características o historias, han hecho que la entrega funcional se parezca más a esto, y no al revés, por lo que el mantenimiento no necesita un “tiempo” especial para adaptarse a la otra actividad.

Lo que los equipos ágiles han hecho normalmente es incorporar sus “historias de mantenimiento” en una versión, que puede estar en una rama separada o en un equipo separado o en una versión separada de las “características”. Esto a menudo es necesario debido al lugar de donde proviene el mantenimiento: otro equipo, otro proyecto, otro cliente. Sin embargo, desde una perspectiva de planificación, no importa. El mantenimiento aún funciona, todavía cambia la base del código y las actividades requeridas siguen siendo las mismas.

Otras cosas que parecen mantenimiento son cosas que ahora generalmente están automatizadas, como la actualización de los índices de la base de datos y la actividad de archivo / purga, o la limpieza de archivos de registro antiguos, que una vez fueron realizados por los desarrolladores, pero ahora generalmente se realizan mediante scripts y herramientas. Incluso he observado algunos equipos que utilizan arneses de prueba en entornos de producción para activar algunas de estas actividades.

Mi conclusión es que a la planificación le importa menos de dónde proviene el trabajo que quién lo hace, cuándo debe hacerse y cómo afecta a otro trabajo en progreso o en el plan. El mantenimiento es solo otro tipo de trabajo que debe ser secuenciado y dotado de recursos.

“mantenimiento de características” puede considerarse evolución de características; Una característica evoluciona en 2 aspectos:

  1. Se agrega más profundidad, opciones o máscaras mejoradas (o se eliminan por simplicidad)
  2. errores o problemas corregidos

y ambos son esencialmente más historias que se pueden procesar en cualquier iteración o sprint posterior; y se discuten, priorizan, estiman, cortan y planifican.

More Interesting

¿Los programadores necesitan habilidades de presentación?

Cómo establecer la línea base para proyectos de software

¿Por qué la mayoría de los desarrolladores de software junior están presionados por más trabajo por una pequeña cantidad de dinero en comparación con otros puestos en la misma industria?

¿Qué tipo de equipo y software debería estar disponible en el laboratorio * perfecto * para el desarrollo de sistemas integrados?

¿Debería especializarme en informática o ingeniería de software? He oído que los ingenieros de software codifican hasta que ya no se pueden codificar y que CS se especializa en código hasta que funcione. ¿Cuáles son las principales diferencias y similitudes?

¿Hay ciertas formas de resolver problemas preprogramados en WolframAlpha?

¿Por qué Apple es primero una empresa de hardware y luego una empresa de software?

¿Cuáles son algunas clases y subsistemas que se pueden encontrar en el software de un panel de sistema de seguridad para el hogar?

¿La administración del control de versiones y los servidores de compilación forman parte de DevOps?

¿Está Apple explorando tecnologías de ciudades inteligentes y oportunidades de implementación y en qué medida?

Estoy en la escuela secundaria y tengo dificultades en mi clase de C ++. ¿Debo continuar programando y esperando hacer una carrera con esto?

¿Cuáles son las mejores universidades en Alemania para la ingeniería de software? ¿Cuáles son las mejores universidades en Alemania que enseñan en inglés y tienen buenas oportunidades de colocación para estudiantes internacionales?

Cómo desarrollar habilidades para resolver problemas en ingeniería de software

¿Cuál es la principal diferencia entre un investigador informático y un ingeniero de software?

¿Cuál es el alcance de una prueba unitaria?