¿Cómo se programan las fechas de entrega en Scrum?

Me he encontrado con un problema constante. Cuando se inicia un proyecto, el cliente normalmente tiene una lista de funcionalidades para integrar en la aplicación. Como equipo, nos gustaría seguir Scrum. Pero lo siguiente que pide el cliente es una fecha de lanzamiento.

El cliente tiene sus propios plazos para acudir al mercado. Por lo tanto, es válido que necesita saber una fecha para poder informar al resto del negocio cuando llegue la solicitud.

Dado que el equipo no puede planificar más de un sprint a la vez, normalmente no hay visibilidad en la fecha de finalización. El cliente dice: "Ya le dije exactamente qué funcionalidad necesito. Dígame cuándo puede crear esta aplicación".

¿Cómo lidias con una situación como esta en Agile o Scrum?

En la mayoría de las situaciones, puede emitir un MVP (producto mínimo viable) en 1 o 2 días y un prototipo funcional en el primer sprint.

Respuestas (7)

TL; DR

La planificación ágil de lanzamientos se basa en ciclos de capacidad normada y de longitud fija que operan en funciones planificadas dinámicamente y con alcance dinámico. En Scrum, la planificación del lanzamiento con fecha fija debe manejarse controlando el alcance para cumplir con los plazos, ya que no puede tener fechas límite de fecha fija y de alcance fijo simultáneamente. Esto rara vez es un problema práctico, pero puede ser político en talleres no ágiles.

Cómo realizar una planificación de lanzamiento ágil

La planificación ágil de lanzamientos se basa en iteraciones. Para hacer una planificación de lanzamientos basada en el calendario o en el tiempo en Scrum:

  1. Todo el Product Backlog recibe una estimación aproximada, generalmente a nivel de épicas en lugar de historias de usuario detalladas.
  2. Se determina una longitud fija de Sprint. 2-4 semanas son valores comunes; esta duración no debe cambiar durante el ciclo de vida del proyecto sin volver a calcular la capacidad de Sprint y ajustar los cronogramas de lanzamiento.
  3. La velocidad se calcula con base en el desempeño anterior del equipo, o en una "suposición fundamentada" si aún no se dispone del desempeño anterior.
  4. Se aplica un factor fudge para el cono de incertidumbre. Esto suele ser 0,6 para equipos nuevos o para proyectos con grandes conos de incertidumbre durante la planificación inicial del proyecto, pero los factores de elusión son inherentemente variables y se pueden ajustar para adaptarse al conocimiento actualmente disponible sobre el dominio del problema, el equipo y los recursos disponibles.
  5. Se calcula una velocidad de planificación, p estimated velocity * fudge factor.
  6. El número de iteraciones para una versión se calcula utilizando las siguientes variables y fórmulas:

    • e = estimación agregada de todos los elementos de la cartera de productos
    • v = velocidad de planificación
    • i = iteraciones estimadas para el lanzamiento, redondeadas al número entero más cercano
    • e / v = i
  7. El valor i se puede volver a convertir en un calendario o una estimación de tiempo multiplicando las interacciones por la duración de los Sprints en semanas o meses, p i * 2.

Un ejemplo trabajado

Supongamos que tiene una cartera de pedidos total de 200 puntos de historia y planea usar una duración de Sprint de dos semanas. La velocidad histórica de su equipo es 20, pero este es un proyecto completamente nuevo con un gran cono de incertidumbre, por lo que su factor de riesgo es el multiplicador estándar de 0,6; como resultado, su velocidad de planificación es de 12 puntos de historia por Sprint después de aplicar el factor de fudge.

Por lo tanto, su plan de lanzamiento para todos los elementos de la cartera de productos sería:

200 / 12 = 17 Sprints

Luego convierte esto en un calendario o tiempo estimado con:

17 * 2 = 34 weeks

Con base en esta información, el cronograma de su proyecto indicará que tomará aproximadamente 34 semanas enviar todas las funciones que se encuentran actualmente en el Product Backlog. Esta es una estimación basada en la información actualmente disponible, y debe tratarse como un valor de planificación en lugar de una garantía irrefutable.

Ajustar el alcance durante los puntos de inflexión de inspección y adaptación

A medida que avanza el proyecto, el cono de incertidumbre se estrecha y el equipo puede hacer estimaciones más precisas sobre la cantidad de trabajo restante en la cartera de productos. Además, un equipo Scrum que funcione correctamente será más preciso al medir su velocidad a medida que avanza el proyecto, por lo que los cálculos del cronograma de lanzamiento deben rehacerse de vez en cuando para "ajustar" el cronograma en función de datos más precisos a medida que se vuelve. disponible.

Además, el propietario del producto puede agregar o eliminar el alcance (en forma de elementos de la cartera de productos) a lo largo del proyecto. Esto ampliará o reducirá el alcance del proyecto y, obviamente, tendrá un impacto en el cronograma estimado. Cambiar el alcance del proyecto generalmente debería desencadenar un nuevo cálculo de la fecha de lanzamiento cuando eso suceda.

Finalmente, Scrum se esfuerza por proporcionar un producto potencialmente entregable al final de todos y cada uno de los Sprint. Si bien es posible que no tenga todas las funciones en el sentido de que contiene el 100 % de todos los elementos pendientes, el producto debe estar en un estado estable y liberable durante la Revisión del Sprint para que la organización pueda optar por enviarlo antes si hay valor suficiente en el producto. para justificar el envío en su estado actual. Este "recuperar" el valor ganado para enviar un producto viable mínimo que se considere "suficientemente bueno" puede brindarle a la empresa (no solo al equipo de Scrum) una ventaja ágil significativa.

¡Oh, esto es genial @codegnome! Solo una aclaración. Cuando dice que la velocidad del equipo según el historial es 20, cada uno de los miembros del equipo puede ser de diferentes equipos. Si bien se pueden conocer las velocidades de su equipo anterior, ¿cómo calculo la velocidad del nuevo equipo?
@Tivep En ese caso, adivina. Lo importante es que reconozca que es una estimación improvisada con fines de planificación y no la trate como un valor de precisión de alta confianza.
El "reintegro" temprano asume que el PO y todo el equipo han entendido MVP correctamente y han estado trabajando en esto antes que nada; esa es una declaración/suposición importante y diría que existe más en las aulas de Scrum que en el mundo real.
Siempre veo este tipo de cálculos donde se piensa que la velocidad es constante. Si bien el hecho es que debería ver un aumento gradual a lo largo de los sprints, a medida que el equipo se vuelve competente en la implementación de funciones, además, las historias posteriores pueden aprovechar algunas de las funciones existentes para implementar. Por ejemplo, para agregar la primera función de autorización de, digamos, 'Soporte', se necesitará la implementación del marco Auth, pero luego agregar una nueva función 'Administrador' no sería el mismo esfuerzo. Sin embargo, ambos relativamente pueden tener puntos similares. Por lo tanto, la velocidad idealmente debería aumentar. Esto invalida la fecha de lanzamiento proyectada.
@Pat No. La velocidad no debe aumentar continuamente una vez que alcanza un óptimo estable. Las historias que requieren menos esfuerzo tampoco deben tener el mismo valor en puntos. Los comentarios no son para una discusión extensa, así que convierta su comentario en una nueva pregunta vinculada si desea una respuesta más completa.

Tienes datos históricos de tu equipo

La única herramienta que tiene en Scrum para ayudar en esta situación es su velocidad. Creo que conoce su velocidad, cuántos puntos de historia hace en un sprint, verifica la acumulación de productos y planifica cada historia de usuario. Con estos dos, tendrá una estimación de una posible fecha de entrega.

delivery in weeks = ((number of point in backlog) * (number of weeks of a sprint)) 
   / velocity

Esto es muy inexacto, pero según lo que tiene, eso es todo lo que puede hacer.

Si tiene un propietario del producto (PO), debe negociar las entregas con el cliente en función de su progreso y las historias de usuario entregadas. El PO debe averiguar qué historias de usuario son imprescindibles para que su cliente inicie su negocio. Es un subconjunto de toda la cartera de productos y, por lo tanto, la fórmula anterior debería proporcionar una mejor estimación, porque la incertidumbre es menor que para toda la cartera de pedidos.

Alternativa, puede verificar sus datos históricos y ver cuánto tiempo tomó entregar una aplicación similar, verificar los riesgos que ve y proporcionar una estimación usando esto.

time to deliver the previous app + 
   sum(additional length of each risk when they happen)

Alternativa dos, puede probar la forma en que Kanban maneja estas situaciones: http://zsoltfabok.com/blog/2013/02/when-will-it-be-done/

No tienes datos históricos de tu equipo

En caso de que no conozca la velocidad y no tenga datos históricos, puede intentar hablar con su cliente y averiguar cuáles son las características más importantes. Siéntese con su equipo y calcule el proyecto a la antigua usanza.

Mientras tanto, puede intentar mostrar los beneficios de la entrega continua a su cliente . Las conversaciones frecuentes y la entrega continua son la clave de Agile , recomiendo comenzar con ellos + la estimación inicial. Si su cliente los entiende y los beneficios (las entregas frecuentes son muy útiles cuando uno programa proyectos upstream), será beneficioso para todos.

gracias por eso. Pero piense en un nuevo equipo y un nuevo cliente. Así que en realidad no sé la velocidad. Sin embargo, pedir una fecha estimada de puesta en marcha sería una solicitud válida del cliente. Las aplicaciones similares son complicadas porque cuando trabajas con nuevas empresas, cada una garantiza la singularidad de su aplicación por el bien de la financiación.
He actualizado mi respuesta en función de la nueva información que ha proporcionado.
@Tivep, consulte este enlace mountaingoatsoftware.com/blog/… - Mike Cohn ha guiado - cómo abordar cuando el equipo no tiene datos de velocidad

Zsolt tiene buenos titulares, le doy mi voto.

Scrum funciona muy bien para fechas de lanzamiento fijas, siempre que reconozca una realidad simple. Que estando con Scrum puedes tener una de dos verdades.

1- O haces todo el trabajo del backlog. Simplemente no sabes cuándo.

2- Liberas en una fecha específica con el trabajo que has logrado completar para esa fecha.

Si su cliente (o jefe interno) le da una fecha fija, entonces tiene que enviar, luego usa técnicas como las que habla Zsolt y estima cuánto trabajo puede hacer. Al comienzo del desarrollo, mi pauta general es que no te comprometas con más del 50 % de lo que crees que puedes hacer. Esto se debe a que la ley de Hofstadter establece que siempre se subestimará el trabajo a realizar, incluso cuando se tenga en cuenta la ley.

Luego, la alegría de Scrum es que a medida que avanza en el proyecto, podrá usar su velocidad para refinar su predicción de lo que entregará. Para cuando haya completado 2/3 del desarrollo, tendrá una idea sólida de lo que se enviará.

Esto significa que debe asegurarse de que el trabajo pendiente esté bien ordenado. Entregue las cosas más importantes primero y luego las cosas menores. Entonces, si no envía todo, no se está perdiendo las cosas de MVP.

Si su cliente dice "Pero todo debe enviarse", tiene un problema diferente. Scrum no solucionará eso, debe agilizar la cadena de valor. Recomiendo Innovation Games Pode el árbol de productos y compre una característica si se enfrenta a esto.

Nota: Una cosa que noté en su publicación es que mencionó "Dado que el equipo no puede planificar más de un sprint a la vez". Esta es una bandera para mí. Los equipos deben trabajar fuera del sprint normal con el propietario del producto para preparar el trabajo pendiente y planificar el trabajo futuro. Para cuando llegue a un sprint, ya debería tener una buena idea de lo que hará en el sprint. Tengo un equipo que acaba de trabajar con su Product Owner y tiene un plan de trabajo (cambiará) para los próximos ocho sprints (4 meses). Un tema aparte de este, solo algo que quería traer a su pensamiento.

La idea de Scrum es que un equipo se concentre en entregar lo que un cliente quiere. Para hacer esto, hacemos un trabajo, lo demostramos, escuchamos los comentarios y luego nos adaptamos. Este enfoque reconoce que es difícil para un cliente obtener sus requisitos desde el principio. Es mucho más fácil construir un producto exitoso cuando tienes retroalimentación y adaptación constantes.

Si un cliente desea fijar el alcance y la fecha de finalización del proyecto, no obtendrá todos los beneficios del enfoque Scrum.

Sugeriría hablar con sus clientes y venderles la idea de que el enfoque de Scrum les da la oportunidad de dar forma al producto como ellos quieren. Habrá cierta incertidumbre sobre la fecha de finalización, pero esto se compensa con el valor de obtener el producto correcto.

Por supuesto, habrá algunas situaciones en las que el cliente tiene una fecha límite difícil. En esas situaciones, trabajamos para reducir la acumulación priorizada de requisitos en la medida de lo posible en el tiempo permitido. Si el cliente introduce nuevos requisitos a medida que avanza el proyecto, puede reducir el nivel de la lista. En efecto, lo que se entrega y cuándo se entrega dependerá tanto del cliente como del equipo de entrega.

Existen dos métodos para pronosticar las fechas de entrega de su cartera de pedidos:

  1. Scrum confiable .
  2. Pronóstico de rendimiento.

Scrum confiable

Es muy similar a lo que Todd describe en su respuesta, pero más preciso, porque:

  • pronostica su fecha de finalización no solo por la velocidad histórica promedio, sino que tiene en cuenta su desviación, porque la velocidad saltará de un sprint a otro.
  • De manera similar, tiene en cuenta las estadísticas de cuántas Historias de usuario nuevas se agregan a su cartera de pedidos por parte del Propietario del producto, ¡y puede afectar drásticamente sus fechas de entrega!

Por lo tanto, vaya al enlace a continuación, mire el video y descargue el archivo de Excel que hace los cálculos por usted; todo lo que necesita es simplemente poner los elementos de su trabajo pendiente, sus estimaciones y en qué sprint se completaron o agregaron.

Pronóstico de rendimiento

Es una técnica, cuando ni siquiera necesita estimaciones para los elementos en su trabajo pendiente: simplemente coloca "1" como estimaciones en su archivo Reliable Scrum para todas las Historias de usuario en él, y luego obtiene un pronóstico preciso de cuándo se ejecutará su trabajo pendiente. ser completado.

Parece magia, pero en realidad funciona muy bien, porque, de hecho, tiene en cuenta el tiempo necesario para completar los elementos de trabajo. Es decir, no se ve afectado por el ruido de las estimaciones expertas no precisas de los elementos de su cartera de pedidos.

Cuando comparé ambos métodos en 5 proyectos, se demostró que ambos métodos funcionan muy bien y el último produce resultados aún más precisos que el primero.

Para obtener más información, consulte el video de Troy Magennis . No es necesario que comprenda la teoría subyacente, solo sepa que usar Reliable Scrum con "1" como estimaciones para los elementos de su cartera de pedidos funciona muy bien.

Creo que es este tipo de situación histórica lo que llevó al valor Agile

colaboración del cliente sobre la negociación del contrato

También tome nota de

Responde al cambio sobre el siguiente plan

El PO tiene un problema de compromiso con el cliente que debe resolver antes de que el trabajo pueda comenzar para evitar un lío costoso.

El padre de Scrum , Jeff Sutherland , ideó un patrón de Scrum, 'Cambio gratis y dinero por nada' . Si bien es poco probable que su organización o sus clientes estén listos para suscribirse a dichos contratos Agile, vale la pena revisarlos para comprender cómo la OP debe comprometerse con el valor de optimización del cliente y el ROI.

¿Podrías dar un poco más de detalle por favor? En stackexchange tratamos de evitar respuestas de solo enlace.