Con qué frecuencia liberar en Scrum Sprint

10

Con qué frecuencia te sueltas durante un sprint. Solo al final del sprint o cada vez que una característica está lista. ¿Y cómo manejas las versiones de corrección de errores?

sangre esquimal
fuente
3
si liberas cada vez que se realiza una función, tal vez deberías mirar kanban en lugar de Scrum
David

Respuestas:

10

TL; DR: liberar siempre que sea apropiado

Hacemos lanzamientos siempre que haya valor en hacer un lanzamiento. A veces, eso significa hacer una versión después de que se complete una sola función o corrección de errores. A veces eso significa lanzar una colección de características y / o correcciones de errores.

Esto no significa que a menudo tenemos "emergencias" que requieren lanzamientos rápidos. Significa que hemos trabajado duro para facilitar los lanzamientos. Nuestro código se prueba, etiqueta y empaqueta con cada compilación. Utilizamos pruebas de aceptación automatizadas y, como resultado, hemos desarrollado una gran confianza en el código que pasa sus pruebas. Dado que nuestros paquetes están disponibles de inmediato a través de un repositorio local de yum, la implementación de una versión es trivial.

dietbuddha
fuente
10

Nunca durante Eso viola la premisa básica de un "sprint". Corres hasta que terminas lo que te comprometiste a terminar. Después de que termines, ya está hecho y realmente funciona. Luego puedes liberarlo.

El lanzamiento puede ser un tipo separado de sprint donde las cosas se empaquetan para su lanzamiento.

Las versiones de corrección de errores pueden ser solo carreras cortas. Muchos no consideran que tener un horario regular de sprints de la misma longitud sea una mala idea. Por lo tanto, la regla habitual es que las correcciones de errores son simplemente un trabajo de alta prioridad que ocurre durante el próximo sprint.

Si se trata de una emergencia, tiene demasiadas cosas en marcha, soporte y desarrollo, y debería considerar cambiar la organización para que sucedan menos cosas.

S.Lott
fuente
Entonces, ¿cómo se supone que los evaluadores deben probar continuamente?
Melbourne Developer
4

Si el trabajo al que se compromete el equipo es propicio para realizar múltiples lanzamientos dentro del sprint, libérelo con la frecuencia que desee.

Lo mismo ocurre con las versiones de reparación de defectos: si tiene sentido liberarlas, hágalo.

Matthew Flynn
fuente
Sí estoy de acuerdo. El mejor enfoque es desacoplar las versiones de la implementación de características y / o sprints. Los procesos (de lanzamiento) deben respaldar esto. Un sprint es un marco de tiempo. Se puede realizar un lanzamiento en cualquier momento si la versión que publica pasa el control de calidad. Las dos cosas pueden ser diferentes. ¿Cómo lograr esto? Una opción es utilizar el concepto "no hay basura en el tronco" para la gestión de sucursales.
Manfred
3

El último trabajo ágil en el que trabajé tenía lanzamientos cada sprint; el código se congeló cada dos jueves (sprints de dos semanas), y luego el producto fue empaquetado y publicado en un servidor UAT para que nuestros clientes trabajen. Esto fue durante el desarrollo inicial del producto; para un producto maduro, especialmente un programa distribuible y no una aplicación web, es probable que no desee cargar a sus usuarios con la actualización cada dos o tres semanas.

Prácticamente todos nuestros lanzamientos incluyeron una mezcla de puntos de historia y defectos (errores). Defectos contados como "horas no ideales"; Hay 5 horas ideales en un día de trabajo, lo que significa una codificación directa del nuevo trabajo puntual. Las otras tres o cuatro horas al día son reuniones, discusiones, diseño, a veces "picos" (investigación enfocada / desarrollo de prueba de concepto) y trabajo defectuoso; cosas que contribuyen a un mejor producto y son una parte necesaria del proceso, pero que simplemente no pueden ocupar todo el sprint de todo el equipo. La única vez que hicimos lanzamientos solo con defectos fue cuando no había trabajo de punto de historia disponible en la cartera de pedidos a partir de un IPM; luego simplemente programamos un sprint de control de calidad donde se nos indicó que "elimináramos tantos defectos como sea posible". Debido a que no tener requisitos listos para cumplir SIEMPRE es culpa de la OP (y la OP funcionó para los clientes), simplemente podríamos emitir un aviso de cambio de contrato y trabajar con lo que teníamos. Por supuesto, una vez que el trabajo real de la historia terminó y estuvimos en el desarrollo de la "garantía", los defectos eran todo lo que había.

En un proyecto ágil bien administrado, el agotamiento de los requisitos nunca debería suceder; el trabajo atrasado siempre debe tener un sprint de trabajo listo para comenzar. Pero, a veces, el PO se ve inundado por los requisitos de producción; a veces, los BA / evaluadores retrasan la publicación de historias en la cartera de pedidos de desarrollo, por razones relacionadas con la calidad de los requisitos o conflictos de historias; a veces un equipo decide que tienen que "punt" en una historia que no estaba bien definida o bien estimada, y no hay nada que pueda tomar fácilmente los ciclos restantes. En resumen, incluso en Agile, sucede una mierda.

KeithS
fuente
3
Creo que el punto de Agile es que ESPERAMOS que suceda algo.
Matthew Flynn
Si su proceso de compilación etiqueta automáticamente los paquetes del código, ¿no es necesario "congelar"? El trabajo puede continuar, la versión revisada puede ser expulsada, etc.
dietbuddha
El "congelamiento" fue simbólico; básicamente dijimos que la última versión para la cual CI había pasado a partir de las 5:00 PM del jueves era la versión de lanzamiento, y cortamos una rama SVN para esa revisión y seguimos adelante. Si no se comprometió para entonces o su confirmación no había pasado todas las pruebas de CI, no estaba en la versión.
KeithS
1

¿Qué quieres decir con lanzamiento? Si te refieres a PSP, probablemente producto enviable, tienes dos opciones:

  • Scrum por libro (o Scrum nivel 2) tienes PSP al final del sprint y eso es lo que muestras en una reunión retrospectiva
  • También conocí el término Scrum nivel 3 donde el equipo dominó sus herramientas como control de fuente e integración continua y pasé a la entrega continua. Dicho equipo puede tener PSP después de cada compilación nocturna (o cada compilación en el mejor de los casos). Tener PSP después de cada compilación no significa que se lo muestres al cliente después de cada compilación, sigue siendo solo una versión interna.

La principal diferencia entre el nivel 2 y el nivel 3 es que en el nivel 2 debe hacer un esfuerzo para hacer la PSP final al final del sprint, pero en el nivel 3 inicialmente pone algo de dinero y esfuerzo en sus herramientas y configuraciones y tiene la PSP preparada automáticamente todo el tiempo = no hay esfuerzo manual involucrado. Alcanzar completamente el nivel 3 es raro.

Ladislav Mrnka
fuente
¿son estos nombres oficiales de "niveles scrum"? Lo busqué en Google y no encontré nada.
David
@David: No creo que sea algo oficial. Es solo otro enfoque para medir la "madurez de Scrum": he encontrado esta presentación discutiendo esos niveles, pero la conocí en el curso CSM.
Ladislav Mrnka
0

No hay absolutamente ninguna regla en Scrum sobre cuándo se pueden implementar nuevas funciones. Cada equipo necesita tener una "definición de hecho", que siempre debe incluir algunos criterios sobre las pruebas. Una vez que una función está "lista", está lista para el mundo real y si no hay otras dependencias o condiciones que deban cumplirse antes de que pueda implementarse, entonces no hay razón para esperar el final del Sprint para desplegarlo.

Ninguno de los cuales significa que no se presentó en la reunión de Revisión / Planificación de Sprint. El concepto es que todo lo que el Equipo ha completado se muestra a la OP (y a otras PYME del cliente) para que puedan incorporarlo en su creciente comprensión del sistema a medida que evoluciona.

Dave
fuente
0

Después de un par de semanas, encontramos una buena solución que se adapta a nuestras necesidades. Decidimos lanzar cuando queramos. Cómo hacemos eso:

  1. Cuando alguien decide liberar la rama de desarrollo real, fusiona todos los cambios en la rama maestra, la etiqueta con un nuevo número de versión y la introduce en nuestro sistema de preparación.
  2. que nuestro control de calidad y todos los demás equipos reciben un correo electrónico con un registro de cambios real y prueban el sistema de preparación
  3. si encontraron errores, los reparamos en el maestro, lo empujamos a la puesta en escena y luego fusionamos el maestro nuevamente en la rama de desarrollo
  4. cuando el sistema de clasificación pasó el control de calidad, el maestro se activa

Eso es. Utilizamos git y maven como sistema de CI y tenemos una buena cobertura de prueba. Cuál es una de las razones por las que podemos hacer esto.

sangre esquimal
fuente
0

Responder una pregunta que tiene casi 2 años puede ser un poco redundante, pero con suerte para agregar valor a otros que vienen a esta pregunta, me gustaría agregar un 2cent más o menos. :)

Para responder a la pregunta: preferiblemente debe liberar lo que se comprometió en el sprint, al final de ese sprint. Al hacerlo, se vincula con todas las otras partes / procesos / pautas de scrum que están orientados a obtener el mejor valor comercial en el momento adecuado.

PERO las emergencias, los errores, los eventos inesperados, etc. pueden forzar su mano, que es donde el concepto de "Planificación de la liberación" podría ser útil. Con "Planificación de lanzamiento" no me refiero a la planificación de tipo cascada, sino más bien a la planificación de expectativas que podrían ayudar a gestionar la acumulación de productos y la prioridad de las historias en sprints ect.

Pero quizás el comentario de David sobre la pregunta es algo a tener en cuenta. Scrum no siempre es la respuesta correcta.

David 'el jengibre calvo'
fuente