Historia de larga duración

TL; DR: la historia genuinamente larga se arrastra de sprint a sprint. ¿Qué hacer?

Tenemos una historia que está tardando mucho en completarse debido a los diversos factores externos involucrados.

Cada sprint gana algo de progreso en la historia, pero está claro que no llegará muy lejos en un período de tiempo razonablemente corto.

La estimación puntual de la historia es promedio para nuestro equipo y la historia no está bloqueada.

Como los factores externos solo pueden hacer progresos prácticos en la historia cada pocos días, la historia se atasca un poco en la columna de Desarrollo.

¿Qué se debe hacer con esta historia?

He considerado convertir el trabajo en un elemento RAID. No estoy seguro de que esto sea apropiado. Suponga que no lo es.

Para los interesados...

La historia realmente lleva mucho tiempo porque implica el desarrollo de un código para un entorno en un país lejano. El proceso requerido para probar el código en desarrollo implica un viaje de ida y vuelta a través de múltiples zonas horarias y recursos de respuesta lenta. En gran medida una cosa humana, pero también impactada por la necesidad de reunir pruebas de valores que tardan días en recopilarse. (Como si la tarea fuera medir físicamente la deriva continental).

¿Por qué el voto negativo? ¿Cómo puedo mejorar la pregunta?
Sí, soy consciente de que esta es una de esas preguntas molestas. Espero que aquellos que lo lean traten de evitar el intento de volver a enmarcar la pregunta, la situación o argumentar que "esto no debería suceder".
Si bien no voté en contra, sospecho que el voto en contra se debe a que está implementando un antipatrón sin justificarlo ni explicar cómo trató de solucionarlo (y por qué no funcionó para usted). "¡Sé que estoy haciendo lo incorrecto y planeo seguir haciéndolo! ¿Cómo puedo hacer que me duela menos?" suele ser un imán de votos negativos.
Supongo que no tiene sentido hacerlo ahora solo para recuperar ese punto... No digo que quiera apegarme al antipatrón, solo que no puedo pensar en un mejor enfoque que dividirlo de esa manera. como perder el enfoque de una sola historia en una sola tarea práctica. Acepto su razonamiento, por supuesto.
Las preguntas siempre se pueden limpiar y mejorar, siempre que no invaliden la pregunta original o sus respuestas. ¡Esto no solo ayuda a los futuros visitantes a encontrar buenas preguntas de cola larga que se aplican a ellos, sino que las ediciones de preguntas también permiten cambiar los votos heredados previamente bloqueados para reflejar sus mejoras!
FWIW, creo que la pregunta subyacente es buena, por eso dediqué tiempo a responderla extensamente. Solo necesita un poco de TLC de tu parte o de la comunidad para convertirse en un imán de votos a favor. :)
Gracias chicos. Definitivamente actualizaré la pregunta un poco más tarde; Solo necesito considerar una mejor redacción.

Respuestas (3)

TL;DR

Se supone que un artículo bloqueado debe ser inspeccionado y abordado; no pretende ser una piedra de tropiezo perpetuamente inamovible. Si descompone su historia en tareas basadas en el esfuerzo, el elemento "negociable" de los criterios INVEST le permite intercambiar pequeñas dependencias dentro y fuera de su flujo para dejar espacio para un trabajo en curso (WIP) más procesable.

Dividir historias que dependen del tiempo en tareas impulsadas por el esfuerzo

Como los factores externos solo pueden hacer progresos prácticos en la historia cada pocos días, la historia se atasca un poco en la columna de Desarrollo.

En Scrum, la estimación se basa en el nivel de esfuerzo, no en el tiempo. Hay una serie de otras preguntas y respuestas sobre este tema, por lo que no lo extenderé, excepto para decir que las tareas de ejecución prolongada no son inherentemente tareas de alto esfuerzo.

Scrum se basa en el time boxing, por lo que arrastrar una sola historia de Sprint a Sprint es siempre un marco antipatrón. Sin duda, hay casos en los que un esfuerzo iniciado en una iteración no dará sus frutos hasta una iteración futura, pero eso no elimina la obligación de cronometrar sus historias o limitar el trabajo en curso.

Como enfoque pragmático, considere dividir su historia de usuario en historias o tareas que traten el inicio de un proceso como algo distinto de recopilar los resultados o iterar en el elemento de trabajo. Si bien los cortes verticales son un objetivo ágil general, en Scrum el time boxing tiende a producir resultados más consistentes debido a la teoría de colas: los tamaños de lote más pequeños, los límites WIP y las colas más cortas son simplemente más eficientes.

Como ejemplo, en lugar de una "historia" como:

Embiggen el whatchamacallit durante 4 Sprints.

considere dividir la historia principal en historias de Sprint Backlog como:

# Historia
inicial Como miembro del equipo,
quiero iniciar el script de ampliación como un trabajo en segundo plano
para que pueda continuar ejecutándose hasta su finalización.

# Historia de seguimiento
Como miembro del equipo,
quiero revisar el registro de aumento periódicamente
para saber cuándo se termina el guión.

# Collection Story
Como miembro del equipo,
quiero capturar los resultados del script de ampliación
para que esté disponible para otras historias que tengan datos de ampliación como dependencia.

En este ejemplo, es probable que cada historia tenga un nivel de esfuerzo muy bajo. Ejecutar un guión, mirar un archivo de registro o recopilar los resultados completos son tareas pequeñas o tareas que probablemente tengan un tamaño de 0 o 1/2 punto, individual o colectivamente. Esto significa que, si bien las historias/tareas tienen una dependencia lineal (por ejemplo, no puede inspeccionar o usar los datos antes de que se recopilen), cada elemento del trabajo pendiente puede caber en una sola iteración. Además, debido a que no se encuentra en el estado "en progreso" indefinidamente, evita abusar de sus límites WIP.

Intercambio y reordenación de elementos pendientes

En muchos casos, tales historias/tareas pueden quedarse en la cola "Listo" de Sprint o Kanban hasta que alguien las saque. Luego se pueden manejar rápidamente y mover a "Listo" o regresar un poco más abajo en la columna "Listo" para dejar espacio para otras tareas activas en el Sprint. Siempre que su Objetivo de Sprint actual no se vea comprometido al mover una tarea de nuevo a "Listo" o al dejarla sin hacer por completo, este es un enfoque perfectamente legítimo. ¡Los resultados de tu cadena de tareas no son realmente necesarios hasta que tu Sprint Goal depende de ellos!

Ni Kanban ni Scrum evitan que un elemento de trabajo se elimine de los carriles de natación en curso. Mientras se ordena el Product Backlog, un Sprint Backlog o un tablero Kanban representa con mayor precisión un flujo de proceso coherente, no una cola FIFO estricta. Por lo tanto, si bien la regla es que no debe exceder su límite WIP, no hay nada que le impida modificar sus límites WIP o eliminar elementos del flujo en lugar de simplemente bloquearlos indefinidamente. Se supone que se debe abordar un elemento bloqueado; no pretende ser un obstáculo perpetuamente inamovible a lo largo del Sprint o del ciclo de vida del proyecto.

Sin embargo, ¿las historias como "Como miembro del equipo" son realmente ágiles? Estas historias no aportan ningún valor al usuario final, ¿verdad? Solo para el desarrollador/miembro del equipo, pero este enfoque es exactamente cómo los equipos terminan entregando el software que les gusta en lugar del software que es útil para los usuarios, que es lo realmente importante. ¿Pensamientos?
@Paz La pregunta que está haciendo no es directamente relevante para esta pregunta y respuesta en particular, pero se ha preguntado y respondido muchas veces en este sitio. Busque preguntas y respuestas relacionadas, y si todavía tiene preguntas al respecto, no dude en abrir una nueva pregunta y vincular a las preguntas/respuestas relacionadas que no abordan sus inquietudes.

debido a los diversos factores externos

es la causa Eso es lo que hay que tratar.

El Equipo Scrum está formado por un Product Owner, el Equipo de Desarrollo y un Scrum Master. Los Equipos Scrum son autoorganizados y multifuncionales. Los equipos multifuncionales tienen todas las competencias necesarias para realizar el trabajo sin depender de otros que no forman parte del equipo.

La guía Scrum

El contexto es el rey, por lo que sin conocer detalles específicos, una idea rápida (con una referencia que se me ocurre en este momento) es Slicing para aislar las dependencias externas que no se pueden eliminar por completo.

¿Y si fuera simplemente que la tarea de desarrollo es ejecutar un script que recopila información y que el script tarda más en ejecutarse que el sprint?
Una vez más el contexto es el rey. ¿Por qué es valiosa esa información? ¿Se puede separar en varios scripts para recuperar primero información de mayor valor? ¿Tiene sentido cambiar la duración de la iteración? ¿Se está utilizando el enfoque incorrecto para planificar, ejecutar y evaluar el esfuerzo?

Tradicionalmente, el equipo lleva la historia a través de los sprints hasta que cumple con su definición de hecho (ya sea que se lance a vivir, pase las pruebas de aceptación, lo que sea). No intente asignar algunos de los puntos a un sprint y algunos a otro, manténgalo simple y asegúrese de que cuando termine, todos los puntos se agreguen a esa iteración.

La razón por la que esto funciona desde el punto de vista de la velocidad es porque la velocidad se basa en la velocidad promedio de varios sprints. Tus logros en los sprints anteriores parecerán poco impresionantes, pero cuando asignas los puntos al sprint en el que se completó la historia, el promedio asegurará que los números salgan bien.

Tengo muchas dudas de que esta historia no se pueda dividir, en mi experiencia, la mayoría de las historias se pueden dividir en componentes que duran 5 días o menos.

Idealmente, el equipo debería completar todo lo que acuerden en la planificación del sprint.

¿Algunas cosas a tener en cuenta al ver por qué esta historia requiere tantos sprints para completarse?

  • ¿El equipo está haciendo demasiado trabajo?
  • ¿Está entrando demasiado trabajo no planificado?
  • ¿Es la historia demasiado grande y necesita ser dividida?
  • ¿La historia no es importante (y todos la conocen y, por lo tanto, la ignoran silenciosamente) y debería ser abandonada?

Sin embargo, si como usted dice es realmente imposible, entonces no se preocupe demasiado y simplemente reclame los puntos cuando haya terminado.

TLDR

Los números deben resolverse por sí solos, pon tu esfuerzo en averiguar por qué la historia no se completa.

La tarea es muy importante, no se puede acelerar y no se puede dividir. No es la complejidad de la tarea, sino simplemente el tiempo que lleva hacer físicamente el trabajo. Se agregó una pequeña explicación en la publicación.
@MattW He intentado agregar más detalles a mi respuesta. Si puede decirme específicamente lo que le preocupa (supongo que son los cálculos de velocidad de sprint), es posible que pueda refinar aún más.