Nuestro analista de negocios y líderes de proyectos nos dicen los requisitos del cliente como Historias. En cada planificación de Sprint, a nosotros (los desarrolladores) se nos pide que juguemos a la planificación del póker.
Nos pidieron a todos que consideráramos la "Complejidad" en lugar del "Esfuerzo". Estamos realmente confundidos y estamos perdiendo el tiempo en nuestras reuniones. Un desarrollador planteó una pregunta: '¿Qué deberíamos realmente querer considerar? ¿Se trata del cambio de código / DDL que tenemos que hacer en este requisito (estimación de tiempo) o se trata de si hemos entendido o no el requisito?
Pero, ¿qué quieren decir realmente ellos ("analista de negocios y líderes de proyectos" con "entender el requisito" y "levantar una tarjeta")?
Además, tenemos reuniones de corte para equipos scrum individuales, donde cada desarrollador da una estimación del tiempo para la tarea dada para cada equipo scrum. Entonces, ¿de qué tipo de cosas están hablando realmente en Planning Poker?
¿Alguien puede explicar esto usando un ejemplo? Trate de diferenciar de lo que realmente están hablando cuando dicen "Complejidad" y "Esfuerzo".
Respuestas:
Considere el punto de vista del Gerente de Proyecto
Al pedir complejidad, quieren un número que puedan comparar con tu próximo sprint para encontrar tu velocidad como equipo. También pueden estar tratando de usarlo para agregar su resultado con las estimaciones de otros equipos para proporcionar una estimación general de cuándo se realizarán todas las historias.
El gerente del proyecto está buscando una estimación de cuándo se terminará el proyecto, o si son flexibles en otros lados del triángulo tiempo-función-costo, qué otros elementos pueden extraerse para que se ajuste al tiempo restante. Esto no es irrazonable. Las decisiones comerciales deberán tomarse en base a esta estimación. El problema es que es realmente difícil estimar esto para el software. La planificación del póker es una de las formas de ayudar con este problema. En lugar de verlo como simplemente sumar el número de puntos de la historia, más bien piense en él como una función más compleja de estimar lo mejor que pueda, hacer el trabajo, medir cuánto tiempo tardó, iterar y luego extrapolar.
La discusión es más importante que un número.
Me parece que la parte más importante de las reuniones para señalar historias son las discusiones que surgen. Si alguien en el equipo no está seguro de sugerir un número, entonces probablemente no entiendan completamente la historia y es necesario que haya más discusión. Del Manifiesto Ágil "Colaboración del cliente sobre la negociación del contrato". En lugar de solo especificar un contrato escrito como una historia de usuario y decir que el equipo falló si no hacen exactamente lo que quieres, siempre es mejor hablar sobre lo que realmente quiere el cliente hasta que lo entiendas.
Complejidad vs esfuerzo
Para abordar su pregunta específica sobre la complejidad frente al esfuerzo, todos parecen tener una opinión diferente al respecto. Mountain Goat , que son las personas que hacen las cartas de planificación de póker que tienen cabras detrás de ellas y cuyo dueño Mike Cohn es grande en el mundo de Agile / Scrum, dice que debería ser un esfuerzo y no una complejidad.
Normalmente no se considera una medida de tiempo (vea el ejemplo a continuación para un contraejemplo) ya que las personas son malas para estimar el tiempo, con otros factores que afectan el número que dan: por ejemplo, presión para mantener el número bajo para que pueda ajustar más características adentro, presión para dar un número más alto para tener algo de espacio si se encuentra con un problema. La creación de software es difícil. Cuando construyes tu casa número 100, puedes estimar cuánto tiempo te llevará, ya que has construido 99 casas antes de eso. Si el software que está creando es el mismo que los programas anteriores que ha creado, puede copiar y pegar, cualquier proyecto de software que valga la pena es diferente y, por lo tanto, tendrá problemas que no previó al principio.
Al igual que con las estimaciones de tiempo que contienen presiones ocultas, una medida de esfuerzo también tiene problemas. Si un desarrollador junior estima una alta complejidad, puede sentir que se está dejando abierto al ataque como si no fuera lo suficientemente bueno de otros que le darían una estimación más baja. Esto no solo es perjudicial para sus estimaciones, sino también para las personas del equipo.
Los números de planificación del póker no son "número de días" o alguna otra medida de tiempo, son una medida relativa para poder comparar dos historias de usuarios. Lo primero que debe hacer en un nuevo equipo es establecer una línea de base. Elija una historia de usuario que esté en el medio del rango de complejidad y acuerde como equipo un número en el medio del rango que desea asignar. Ahora todas las demás historias de usuarios pueden numerarse en relación con esta. He descubierto que esto lo hace mucho más fácil.
Razones por las que no puedes dar un estimado
Cuando los gerentes de proyecto le preguntan cuándo se realizará un proyecto, deben comprender la complejidad de la pregunta que están haciendo. Los programadores no son trabajadores de fábricas, donde su productividad se puede medir multiplicando qué tan rápido escriben por cuánto tiempo trabajan. Están encontrando respuestas a los problemas y eso es difícil. Al jugar al poker de planificación, primero identifica quién en el equipo siente que no puede responder a la pregunta de qué número asignar y luego analiza por qué no pueden responder esa pregunta. Creo que hay al menos cuatro razones:
Conclusión
Creo que el punto realmente debería ser la discusión, pero si realmente necesitas darle un número a alguien, entonces trata de hacerlo uno que sea independiente de qué miembro del equipo trabaje en él y en qué orden se trabajen las historias. El objetivo es llegar a un registro anterior que tenga prioridad, por lo que está trabajando en ellos en el orden correcto y con el tamaño adecuado, para que el Gerente de Proyecto pueda ver aproximadamente cuántos más puede encajar antes de la fecha límite. Debería poder detenerse al final de cualquier iteración y enviar con todas las funciones completadas que se habían iniciado.
Advertencia
Puede estimar el tiempo para completar las tareas dentro de su equipo todo el tiempo que desee, siempre y cuando mantenga los números para usted mismo. Una vez que permita que cualquier número escape del equipo y sea visto por otras personas, harán cosas con ese número que no tenía la intención. Intentarán utilizarlo como varios días para completar las tareas. Intentarán mantenerlo en la clasificación de complejidad relativa y preguntarle por qué le tomó más tiempo completar una historia de usuario que otra con la misma cantidad de puntos. Agregarán sus números y los compararán con los números de otros equipos y le preguntarán por qué el otro equipo está "haciendo más trabajo" a medida que completan más puntos de la historia dentro de un período de tiempo. Usted puede'
Aparte
El conjunto de números de planificación del póker se distribuye normalmente de manera tal que las brechas entre los números se hacen cada vez mayores. Creo que esto está destinado a disuadir a las personas de discutir si una historia de usuario es un 16 o un 17, si es más grande que un 13, simplemente conviértalo en un 20.
Ejemplo
Sé de al menos un equipo que solo usa los números 1, 2, 3 y 4 para planificar el póker. Ellos, en contra de lo convencional y contrario a la discusión anterior, los definen como días de programación (en realidad emparejan los días de programación, es decir, cuántos días les tomaría a dos programadores trabajar juntos en la misma máquina para completar la historia del usuario). Si el equipo piensa que tomaría más de 4 días completar una historia de usuario, entonces no se señala la historia y se le pide al propietario del producto que trabaje con el equipo para desglosar la historia o especificarla más exactamente para que pueda estar dentro de este rango para una futura reunión de planificación. Pero esto es ágil avanzado y probablemente solo debería ser utilizado por personas que ya tienen experiencia en el uso de otras técnicas.
fuente
Creo que las respuestas de Frank y Encaita lo cubren bastante, pero hay algunas cosas adicionales a considerar:
¿Por qué usar puntos de historia?
El objetivo de estimar con puntos de historia es dar la relativa complejidad de desarrollar características para su aplicación. Una manera sencilla de pensarlo es tomar una historia que tenga en el próximo sprint, por ejemplo, un cambio de URL. Sabes que esto es simple en términos de complejidad y tiene criterios de aceptación claramente definidos, por lo que todo el equipo está de acuerdo en que incluso con las pruebas es un 1 (usando la escala Fibo).
La siguiente historia a estimar es agregar un conjunto de datos de usuario y visualizarlos en el front end. Ahora, como desarrollador, sabes de inmediato que esto es mucho más complejo que cambiar una URL. Usted discute la historia y los criterios de aceptación y tiene muchas preguntas y puede ver varias soluciones potenciales para hacerlo. Los otros desarrolladores y QA también están de acuerdo en que es muy complejo. Entonces, todos están de acuerdo en que es una historia de 34 puntos. Vale la pena señalar que la escala Fibo también le permite indicar cuánta confianza tiene en la estimación: cuanto mayor sea la brecha entre los números, menor será la confianza que tenga en su estimación
En este punto, su maestro Scrum debería saltar y decir que esto como una sola historia es demasiado grande y debe dividirse en historias más pequeñas de menor complejidad. Puede abordar esto haciendo lo que se conoce como SPIKES: esto es solo un tiempo reservado para investigar algo. Entonces, para este ejemplo, usted y los otros desarrolladores acuerdan que desea 4 horas para discutir e investigar las posibles soluciones técnicas.
Para acortar una larga historia, divide esa gran historia en otras cuatro historias de 5, 8, 8 y 13 puntos. No recuerde que estas estimaciones tienen que ver con la complejidad relativa: no tienen que sumar la estimación original y además tiene más información ahora para hacer una estimación más precisa.
Luego, como equipo, acepta que para este sprint tratará de completar la historia de 13 puntos, una historia de 8 puntos más el cambio de URL de 1 punto que ya había identificado. Entonces un total de 22 puntos. El próximo sprint obtienes 27 puntos, el siguiente sprint obtienes 18 puntos. Después de 3 sprints puedes comenzar a tener algo de confianza en tu velocidad (la velocidad es la cantidad de trabajo que tu equipo puede hacer en un sprint). Para obtener la velocidad, toma el promedio de los sprints anteriores. Entonces, en este ejemplo, el promedio es (22 + 27 + 18) / 3 = 22.3, así que redondee al más cercano en la escala Fibo que es 21.
Ahora, para el próximo sprint, solo apunta a conseguir 21 puntos.
No se obsesione con el cálculo exacto de su historia: no es una ciencia exacta. Sabes que un cambio de URL es mucho menos complejo que agregar datos, así que solo puntúalo en consecuencia.
Además, discutir estas cosas en equipo es bueno. Revise sus estimaciones durante la revisión del sprint y discuta si estaba contento con ellas o no, y luego transmita esto a la próxima sesión de planificación del sprint.
Todo el equipo estima
Todo el equipo debe estar de acuerdo en una estimación única para cada historia. Una función no se realiza hasta que esté lista para producción. Simplemente obtener el código escrito no se hace de ninguna manera. En mi experiencia, los equipos Scrum han sido mucho más efectivos cuando trabajan en equipo. Tome un ejemplo del equipo con el que estoy trabajando en este momento. Cuando me uní, estaban haciendo todas las reuniones de sprint y planeando póquer, pero durante el sprint el proceso fue 1. Los BA / Propietarios de productos definen los requisitos como historias con criterios de aceptación y pruebas de aceptación 2. Entregan estos requisitos al desarrollador que luego escribe el código 3. El desarrollador tiene el código fusionado en la rama de desarrollo para el control de calidad para la prueba 4. Prueba de control de calidad, luego comienzan a hacer preguntas y las pruebas fallan, por lo que vuelve al desarrollo.
¿Qué falta aquí? No hay suficiente discusión por adelantado y cada miembro del equipo solo vio su propia tarea. Ahora el BA / PO, los desarrolladores y el control de calidad se reúnen antes de escribir cualquier código para discutir los requisitos en detalle y hacer preguntas por adelantado, luego continúan la discusión durante el sprint. Esto es mucho más eficiente y conduce a soluciones de mejor calidad.
La planificación del póker ayuda a este proceso porque obliga al equipo a discutir la característica y a acordar, como equipo, cuán compleja es la entrega de esa característica. En el desarrollo de software tradicional, el Project Manager era responsable de la entrega del proyecto, pero cualquier persona con experiencia en ese enfoque sabe que no funciona porque la mayoría de las veces, las personas no se hacen responsables de su parte en la entrega de la aplicación. En Agile no debería necesitar gerentes de proyecto porque el equipo se responsabiliza en su conjunto por la entrega de la aplicación.
Estimación puntual de tareas
Mi punto de vista de haber trabajado con equipos que estiman el tiempo en tareas y equipos que solo estiman puntos de la historia es ¡NO HAGA ESTIMACIONES DE TIEMPO! En realidad son solo una pérdida de tiempo. No son tan precisos como los puntos de la historia porque son específicos de las personas, no del equipo, y cada individuo tendrá una idea diferente de la estimación del tiempo (encender la llama).
Los puntos de la historia aceptan que las cosas, es decir, los requisitos, cambian todo el tiempo, por lo que realmente necesita un indicador de lo que el equipo puede completar en un sprint.
Una vez que comprenda la velocidad, puede medir sus entregas a tiempo porque sabe lo que puede hacer en cada sprint, por ejemplo, cada dos semanas sabe qué características se pueden entregar. Su scrum master y los propietarios de los productos deberían tener sesiones de estimación para mirar hacia el futuro en los sprints, luego puede obtener un indicador de cuánto trabajo realizará en los próximos meses. Esto permite a los propietarios de productos tomar decisiones de priorización sobre qué características incluir en la aplicación final.
Los desarrolladores me han pedido que calculemos el tiempo de las tareas para planificar, pero en realidad no estoy de acuerdo con este enfoque (de hecho, estoy totalmente en desacuerdo con este enfoque) porque no es exacto, por ejemplo, ¿qué significa esto realmente me llevará 4 horas? un desarrollador puede incluir solo el tiempo de la tarea en sí, ¡otra persona puede agregar tiempo para preparar tazas de té!
Las estimaciones de tiempo siempre se entregan a otra persona con fines informativos y también enfatiza demasiado los elementos individuales de la entrega de una función frente al esfuerzo de todo el equipo.
La estimación no es el mayor problema.
Como comentario aparte, calcular la estimación no es el mayor problema que creo que los equipos tienen que resolver. Lo más importante es trabajar juntos como un equipo para hacer las cosas durante el sprint, de modo que no entregue todo para probar el último día. Desea ver un conjunto constante de características durante el sprint de 2 semanas. La dinámica del equipo que expliqué anteriormente es una gran parte de esto. La estimación del punto de la historia lo ayudará a planificar esto porque verá cuáles son las grandes historias que deben desglosarse en otras más pequeñas que puedan entregarse a las pruebas regularmente.
fuente
Wikipedia explica bastante bien la planificación del póker . Permítanme resumir algo de lo que hay allí con un enfoque en su caso:
¿Por qué planificar póker?
En primer lugar, todos deberían estar al tanto de por qué están haciendo un póker de planificación en lugar de una estimación "normal". La razón es en realidad bastante simple: todos nosotros apestamos mucho cuando se trata de estimar el tiempo para una tarea. Casi todos los estudios han revelado que el cerebro humano es simplemente incapaz de estimar tareas que requieren una cantidad de tiempo razonable. (También es una razón por la cual los boletos que superan los 2-3 días en su estimación no tienen ningún valor en términos de su estimación).
¿Por qué la complejidad más que el esfuerzo?
Esto va de la mano con lo anterior. El esfuerzo generalmente significa tiempo , y eso apesta. En cambio, la complejidad es difícil de cuantificar objetivamente, lo cual es bueno en este caso. Es tu instinto lo que te dice que esta historia será compleja. Para alguien más puede ser menos complejo. Pero no necesita cuantificar exactamente cuán complejo es realmente. No es necesario obtener este número
X
de complejidad, en oposición a un esfuerzo cronometrado, en el que eventualmente tiene que aceptar que llevaX
días o algo así.¿Por qué esconder las cartas?
Las cartas con tu complejidad guestimate se juegan ocultas y luego se revelan todas a la vez. Esto se hace para garantizar que las opiniones de otras personas no lo influyan antes de hacer su propia estimación inicial. Si todos tienen el mismo instinto en términos de complejidad, entonces ya está. Si se producen números muy diferentes, sabes que hay algo que discutir oculto allí. De esta manera, puede lidiar muy rápidamente con historias para las cuales todos tienen la misma idea de la complejidad / esfuerzo requerido.
¿Por qué los números de Fibonacci?
Los números en sus tarjetas son típicamente números de Fibonacci o algún otro tipo de secuencia con muchas lagunas en los números. Esto es para obligarlo a confiar plenamente en su instinto. Si tiene que elegir entre 8 y 13, es mucho más una afirmación que ir por 9 o 10. Además, como se mencionó anteriormente, las grandes diferencias son dónde están los problemas ocultos, por lo que al aumentar las brechas, aumenta la posibilidad de detectar estos problemas mejor
¿Por qué funciona esto en absoluto?
Curiosamente, las primeras veces que haces un póker de planificación no funcionará. Es tan simple como eso. ¿Qué significa "3" o "5"? No existe una definición de lo que significa cada número (¡a propósito!) Y depende de todo su equipo descubrir el significado real detrás de cada uno de estos números. Solo después de que haya aceptado estimar sus historias en estos números, y después de haberse dado cuenta de varios de estos, tendrá una mejor idea de cuándo debería aumentar un 5 y cuándo es un 8.
Una vez que combina esto con el concepto de velocidad y mide el progreso de su carrera a través de estos puntos de la historia, tiene una escala completamente nueva de eficiencia que es más o menos independiente de las estimaciones de tiempo tradicionales.
Sin embargo, para mí personalmente, el punto más beneficioso de planificar el póker es que al usar números de Fibonacci en lugar de estimaciones de tiempo, es mucho más fácil detectar incertidumbres. Con las estimaciones de tiempo clásicas, no está obligado a tomar decisiones tan "extremas" (debido a las brechas de números), por lo tanto, las estimaciones pueden estar bastante juntas y el equipo puede creer falsamente que entendieron la historia lo suficientemente bien.
Ejemplo
Un ejemplo simple de lo que generalmente sucede es que se presenta una historia y luego la persona A presenta una objeción. Es algo así como "por favor, no olvides que esta función afecta a X y esto puede significar que es más costosa de lo que pensamos hasta ahora". El principal problema es que siempre hay esta persona A en la mesa. Siempre hay algo por lo que alguien está preocupado. Si tiene una discusión abierta por adelantado, no tiene idea de cuán preocupante es esta cosa X.
Si realiza estimaciones ocultas en función del tiempo, entonces mejora un poco. Pero aún así, una persona A con una objeción válida puede no ser un valor atípico claro en su estimación todavía. Por otro lado, con la planificación del póker, la persona A tiene que pensar más sobre cuánto es un problema real X. Para dos problemas diferentes, no puede distinguir adecuadamente su importancia por el "texto de objeción hablado" anterior. Incluso con estimaciones de tiempo, es bastante difícil ver cuál es más un problema. La esperanza de usar el poker de planificación aquí es que termines con una objeción que sea solo 2-3 puntos diferente de las estimaciones de los demás, pero la otra objeción que terminó a 5 u 8 puntos de la mediana puede ser la incertidumbre más importante de tu planificación de sprint.
fuente
Después de docenas de iteraciones en mi equipo, descubrimos que los puntos de la historia son principalmente sobre la dirección de proyectos a mediano plazo. Permiten que la propietaria del producto se proyecte 2 o 3 sprints por delante y esencialmente tome decisiones comerciales y de alcance sobre un lanzamiento, en función de una velocidad promedio.
Hemos descubierto que los puntos de la historia no son tan útiles a nivel de sprint, porque no hay 2 sprints similares y es imposible predecir cuánto trabajo se hará. En consecuencia, decidimos que no deberíamos obsesionarnos con la parte de la estimación y simplemente tomar sesiones de planificación de póker como pretextos para la conversación sobre las características.
Esto coincide con un punto hecho por Mike Cohn aquí .
Como nota al margen, esto es cierto para un equipo determinado, pero no hay una regla sobre cómo los puntos de la historia lo ayudarán. Le recomiendo que primero se apegue a la metodología, pero trate de averiguar rápidamente por sí mismo si son útiles y de qué manera. Las retrospectivas lo ayudarán a reflexionar sobre eso.
fuente
El problema fundamental aquí es que está roto. El primer ministro quiere usar el póker de planificación para tener una idea de la complejidad de cada historia, con la intención de saber aproximadamente cuántas historias pueden encajar en un sprint (la velocidad del equipo).
Como resultado, es un "no basado en el tiempo" que está "basado en el tiempo". No es de extrañar que todos se confundan.
Hay maneras de hacer que esto funcione para usted. Primero olvídate del esfuerzo y enfócate en la complejidad. Olvídate de todo el tiempo que puede tomar desarrollar y enfocarte en las áreas que afecta cada historia. Si tiene una historia que actualiza la base de datos, el código del servidor, el código del cliente y la documentación del cliente, puede decir que es una historia de 4 puntos. Si es solo un cambio en el DB sql, entonces es una historia de 1 punto. Esto le brinda una forma más comprensible de descubrir la relativa complejidad entre las historias. (Tendrá que encontrar algunas métricas que tengan sentido para sus circunstancias, tal vez los requisitos de cobertura de prueba o la complejidad de la interfaz de usuario)
Sin embargo, mi opinión en general es que es una pérdida de tiempo inútil que simplemente fomenta la planificación de sprints como si fueran proyectos de mini cascadas. ¿A quién le importa cuántos puntos de historia puedes incluir en un sprint? Si tienes historias sobrantes al final de un sprint, solo hazlas en la próxima. Teniendo en cuenta eso, también podría hacer que su cartera de pedidos sea del tamaño de cada historia destacada que tenga y gradualmente ir reduciéndolas con el tiempo. La entrega lleva el tiempo que sea necesario (pero será más rápido si no se molestó en perder el 20% de su tiempo en las reuniones de planificación acumulada y sprint). Al final del proyecto, a nadie le importa cuántos puntos de historia se entregaron. Lo que le importa a la gente es el proyecto entregado.
fuente
Además, el apuntamiento de la historia del usuario le da a la empresa un aviso en términos de si algo necesita ser renegociado. Si tiene un mes para completar algún trabajo que obtuvo como 100, entonces podría estar en problemas. También te da la oportunidad de dividir una historia épica en algo más pequeño que todavía tiene valor y se puede completar en un sprint.
fuente