Descomposición artificial en Scrum

Guía Scrum dice:

Los elementos de la Lista de Producto que puede realizar el Equipo Scrum dentro de un Sprint se consideran listos para la selección en un evento de Planificación de Sprint. Suelen adquirir este grado de transparencia después de las actividades de refinación. El refinamiento de la cartera de productos es el acto de desglosar y definir aún más los elementos de la cartera de productos en elementos más pequeños y precisos.

Pero no todas las tareas se pueden dividir en subtareas que se pueden completar durante un Sprint. Además, simplemente no tiene sentido descomponer cada tarea grande: algunas tareas son muy cohesivas y tratar de descomponerlas solo crea impedimentos artificiales para los desarrolladores. Insistir en tal descomposición sería contraproducente y artificial.

¿Parece que Scrum no aborda este problema de ninguna manera?

Ejemplos incluyen:

  • actualizar una biblioteca de software a una versión superior (requiere muchos pequeños cambios de código en todo el código base, solucionar problemas, depurar, etc.)
  • introduciendo un cambio arquitectónico
  • refactorización
  • investigando un error
  • configurar algún software
  • etc.
¿Tienes un ejemplo? ¿Quiere decir desglosar los PBI para que quepan en un solo Sprint, o desglosar un PBI más grande en un solo Sprint?
Ejemplos por favor. Toda la tradición de resolver problemas descomponiendo los problemas en subproblemas manejables es tan antigua como la humanidad. Ya sea que construyas una casa, corras un maratón, envíes un cohete a la luna, el problema se descompone al nivel de colocar piedras individuales, hacer pasos individuales, girar tornillos individuales, etc. ¿Qué problema real no se puede descomponer en partes que puedan hacerse en un tiempo limitado por un equipo limitado?
Cuando dices "esto no se puede desglosar de una manera útil", lo que realmente estás diciendo es "No veo una manera de desglosarlo de una manera útil". Esto podría significar que no existe una forma de desglosarlo, pero está lejos de ser una prueba de que no existe una forma de desglosarlo.
No saber cómo dividir tareas grandes en partes más pequeñas es un problema típico de un desarrollador junior para mí. Todo el mundo es así cuando empieza. Pero a medida que adquiere experiencia, fragmentar el trabajo en partes se convierte en una segunda naturaleza.
Suponga que usted es un "equipo" de un solo hombre que escribe una aplicación de software que le llevará 6 meses completar. ¿"Simplemente empiezas y el principio, continúas hasta llegar al final y luego te detienes" o dices "Está bien, esto es lo que haré en las próximas dos horas y luego tomaré un descanso para tomar café? " La única razón por la que "no puede" desglosar una tarea grande es porque no entiende cuál es la tarea.
Los ejemplos canónicos provienen de compiladores y traductores: una traducción de un idioma a otro podría no implementar ningún comportamiento del cliente a menos que implemente todos los constructores de términos. Un analizador JSON a menudo necesita manejar todos los tipos de valores JSON, por ejemplo. Existen lenguajes más grandes que los sprints típicos: un analizador XML enviado en un solo sprint tendrá errores.
Un analizador JSON se puede desarrollar de un tipo a la vez. Un compilador aún puede dividirse en partes y enviarse con características muy limitadas. Esto no significa que serán útiles, pero aún se podrán enviar.

Respuestas (4)

¿Parece que Scrum no aborda este problema de ninguna manera?

No, no lo hace.

Scrum es una guía. Aunque prescribe cosas, no prescribe muchas cosas. Esta es una de las cosas que quedan a discreción del implementador. Por ejemplo, solía proporcionar una muestra de 3 preguntas para hacer durante el día, pero finalmente se descartaron (probablemente porque muchos tomaron esas preguntas según lo prescrito y se centraron solo en ellas en lugar de pensar por sí mismos).

En ese párrafo la guía dice que se deben descomponer las cosas para que el equipo las entienda y pueda hacerlas en un sprint. Cuanto más pequeño, mejor, porque ese refinamiento aumenta la comprensión, minimiza las incógnitas y los riesgos, y evita hacer suposiciones sobre las cosas . No se menciona cuán pequeños o cuán grandes, solo que pueden caber en un sprint (aunque un consejo común que escuchará, y la regla general, es aproximadamente 1-2 días por PBI).

Por supuesto, la vida no sigue las reglas de Scrum todo el tiempo. Cuando gira algo por todos sus lados y aún no puede encajarlo en un sprint y entregarlo en un incremento, debe usar el sentido común para saber cómo manejarlo. A veces, se necesita más que un Sprint para hacer algo, s # sucede, por lo que lo aborda de una manera diferente (lo que decida el equipo con el PO). Pero la idea es que esto sea la excepción, no la regla .

Siento que esta es una "buena" respuesta, pero también hay una trampa incorporada. Creo que es muy fácil que alguien lea esta respuesta como "hazlo cuando sea conveniente" y eso sería desafortunado.
@Daniel: para ser honesto, si la gente hace esto solo porque es conveniente, dudo que primero busquen aprobación, se tropiecen con mi respuesta y digan "¡Sí! Este tipo dice que podemos. Hagámoslo todo el tiempo" :) He enfatizado algunas cosas en mi respuesta, así como también en la oración final, solo para tratar de aclarar que esto sería una excepción. Realmente no quiero reformularlo para decir que nunca debería haber una excepción, porque esa no siempre es la realidad para todos.
¡Ja! Ese es un muy buen punto.
Una adición podría ser darle la vuelta al segundo párrafo. Si cree que es una 'buena' idea respaldar tareas más largas que un sprint, reconozca que Scrum no le proporcionará ninguna restricción en los esfuerzos de ese desarrollador. Si está de acuerdo con que un desarrollador se vaya por más de 3 meses y regrese con una solución, ¡genial! Probablemente tenga otro sistema de retroalimentación que asegure que la alta dirección confíe en que su trabajo se realiza según lo programado, lo que complementa a Scrum. ¿Es ese sistema lo suficientemente ágil para las necesidades de su negocio?

Sé que hay una respuesta aceptada, pero me parece que tiene un poco de trampa, por lo que quiero proporcionar esta respuesta para otra vista.

He estado practicando Scrum durante aproximadamente 15 años y todavía tengo que encontrar una tarea que no pueda dividirse de manera útil en menos de un sprint. Esto ha sido en industrias que van desde la construcción hasta el marketing y la investigación en computadoras cuánticas. Sin embargo, me he encontrado con tareas que no pude desglosar en ese momento. En estos casos, creo que es importante intentarlo como en la vieja universidad, pero no obsesionarse con eso. Reconoce que no sabes cómo, luego ponte a trabajar. Sin embargo, el aprendizaje es una parte fundamental de Scrum. Cuando encuentre estos y termine esas tareas, mire hacia atrás y encuentre formas en retrospectiva en las que podría haber hecho piezas. Esto es mucho más fácil y así es como llegué al punto en que podría decirte cómo dividiría cualquier tarea que haya hecho en menos de un sprint y hacer que entregue algo útil.

Editar: Esto es para completar la idea de "útil". Quiero decir que hace progresar significativamente el producto sin trabajo adicional. Esto puede ser la eliminación de riesgos, la respuesta a preguntas comerciales, comerciales o técnicas, la funcionalidad del usuario y la atención de otras necesidades del usuario, como el rendimiento o la seguridad. Esto no incluiría la planificación, la lectura de tecnología u otras tareas parciales.

Y por "útil" supongo que no te refieres a útil para el negocio/usuarios finales. Porque con frecuencia veo tareas que no se pueden terminar en una semana. De hecho, muchos de ellos tardan varias semanas o incluso meses en desarrollarse antes de que sean útiles. Todavía puedo desglosarlos, por supuesto, si es necesario, pero no hará que las piezas individuales sean útiles para el usuario final o las partes interesadas. Entonces, sería genial si pudieras definir "útil" en tu respuesta.
@Daniel ¿Quiere decir que divide un PBI en tareas como: "eliminar el riesgo, responder preguntas técnicas o comerciales o de mercado, la funcionalidad del usuario y abordar otras necesidades del usuario, como el rendimiento o la seguridad"? Hacerlo no hace que el PBI inicial sea pequeño: el PBI inicial todavía no encaja en un sprint.

En primer lugar, los elementos de la cartera de pedidos generalmente no deberían ser "tareas" en absoluto. Siempre que sea posible, los elementos de la cartera de pedidos deben ser entregables, funciones u otros resultados. ¿Tiene un ejemplo de un artículo pendiente que no se puede dividir? La mayoría de los grandes entregables se pueden dividir.

Considere un sprint típico que consta de 10 días hábiles (2 semanas es probablemente la duración más común del sprint) y un equipo de 8 personas (los equipos Scrum suelen tener entre 3 y aproximadamente 10 personas). Eso significa que un elemento pendiente es algo que debería poder hacerse con menos de 80 días de esfuerzo. El esfuerzo de 80 días es un costo bastante grande y mucho trabajo para poner en riesgo de una sola vez. Si los elementos de su cartera de pedidos son realmente tan grandes, es casi seguro que vale la pena el esfuerzo de desglosarlos porque hacerlo reduce el riesgo de entrega y, en última instancia, mejora la productividad.

Si realiza una búsqueda de "división de historias", encontrará muchos ejemplos de formas interesantes de dividir los elementos pendientes.

Edité la pregunta y agregué algunos ejemplos de tareas que pueden no tener sentido dividir. Además, a menudo no tiene sentido trabajar juntos en una tarea; por ejemplo, no creo que todo el equipo deba investigar un error, un desarrollador suele ser suficiente.

Para complicar aún más la situación de la vida real, puede haber dependencias complejas entre las tareas identificadas, lo que refleja la arquitectura del sistema subyacente. Scrum es, y solo puede ser, una guía. Tómelo por las muchas ideas muy buenas que contiene, pero no lo adore.