Antecedentes: tenemos un proyecto de desarrollo de productos de larga duración, que consta de diferentes características. El equipo de desarrollo consta de 15 desarrolladores y 5 ingenieros de control de calidad. Configuramos lanzamientos cada 5-7 meses. En cada versión, agregamos nuevas características o mejoramos/características existentes. Cada lanzamiento consta de 6-8 sprints de desarrollo (3 semanas cada uno) y 2-3 sprints de estabilización/corrección de errores puros.
Problema: Algunas de las características tardan varios meses o más en completar el desarrollo para estar en el nivel mínimo de entrega o etapa lista para producción. Los dividimos en tareas pequeñas y avanzamos en su desarrollo en cada sprint, pero está listo para la primera demostración solo después de 2-4 sprints y listo para control de calidad/producción después de 5-8 sprints. Esas características son complejas y generalmente consisten en desarrollar infraestructura nueva o mejorada, núcleo/servicios, lógica comercial, interfaz de usuario, Web y luego integración en monitoreo, informes, impresión, marketing, etc. Antes de que todo esté listo, la característica no puede considerarse como completa ( producción lista). Por otro lado, en la misma versión, tenemos pequeñas funciones o mejoras que son mucho más pequeñas y pueden estar listas para la producción en uno o dos sprints...
Pregunta: ¿Alguna idea/consejo sobre cuál podría ser un mejor enfoque si quisiéramos acortar nuestros lanzamientos?
Gracias pavel
Lo que creo que está sucediendo es que está llamando sprints al esfuerzo de desarrollo y luego tiene "sprints" para el control de calidad.
Creo que está utilizando un modelo en cascada en lugar de un modelo incremental. Intentaría diseccionar las tareas en backlog al tamaño mínimo y en cada sprint integrar el control de calidad, para que no espere hasta el sprint 5 a 8 para probar y regrese con las 2-3 semanas o sprints para la estabilización.
Al final de cada sprint, debe tener historiales de trabajo desarrollados y probados, luego, con una estrategia de administración de la configuración, puede implementar esa funcionalidad nueva o modificada en el entorno de estado y, después de la UAT, puede implementarla en el sistema en vivo, de modo que el sistema tenga nueva funcionalidad cada sprint, y al final de los "sprints" de desarrollo y prueba
Creo que está malinterpretando el ciclo de vida "sprint" y SCRUM con el ciclo de vida tradicional.
Creo que la respuesta aquí puede ser una buena herramienta. No sé qué tipo de solución utiliza para el control de versiones, pero creo que cambiar al Sistema de control de versiones distribuido podría ayudar. El principal cambio de mentalidad con el uso de DVCS es que no fusiona todo en un tronco, que tiene que estabilizar antes de pasar a la producción, pero puede agregar diferentes funciones en una versión basándose en la base de código distribuido.
Muchos equipos Kanban se enfrentan al mismo problema, aunque en menor escala y DVCS demostró ser una solución bastante buena.
ACTUALIZACIÓN (basado en un comentario): con DVCS cambia la mentalidad con respecto al trabajo con troncales/sucursales. Lea la introducción de Joel Spolsky a DVCS . También puede consultar el tutorial Mercurial de Joel para familiarizarse con DVCS.
Creo que el problema es que el alcance no está elaborado correctamente. ¿Hay 15 desarrolladores, 5 probadores y ningún analista? ¿Quién está trabajando con la documentación/análisis del alcance?
Necesita a alguien en esta función de " análisis de sistemas ". Necesita a esta persona para dividir el alcance en partes mucho más pequeñas que ahora.
Comenzaría echando un vistazo a la ruta crítica de su ciclo de entrega.
Planifíquelo con las diferentes duraciones de cada fase y luego vea dónde puede condensar o secuenciar mejor sus actividades.
Tengo que estar de acuerdo con muchos de los comentarios aquí. Parece que estás iterando una estructura en cascada y confundiéndola con Agile. No hay problema con un proceso iterativo en cascada, y creo que puedes encontrar soluciones en la forma en que inicias cada ciclo. Si piensa en cada ciclo como un nuevo proyecto, puede notar que se ha perdido un poco de la metodología. Si no tiene analistas, debe obtener algunos como dijo yegor256. Además, este es un excelente entorno para que realice sesiones de lecciones aprendidas e implemente sugerencias de cambio.
Creo que Pawelbrodzinski brindó la mejor respuesta... pero parece que usted/su equipo es reacio a la rama de código... otro enfoque sería liberar los cambios, que funcionan o no, con cada sprint, haciéndolos solo alcanzables por ciertos roles de usuario o enlaces (por lo que la base de usuarios actual no puede acceder antes de la finalización)... esto podría significar tablas duplicadas (algunas con una nueva estructura para admitir la nueva funcionalidad) y enlaces duplicados (uno a la funcionalidad anterior y otro a la nueva funcionalidad)... no es una buena solución o una que seguiría yo mismo, sino otro enfoque
yegor256
marca phillips
pavelre