Tuve una entrevista con una empresa. Usan Scrum, pero no les gustan las estimaciones aproximadas durante la planificación del lanzamiento. Entonces, me preguntaron cómo hacer que la planificación de lanzamiento sea más precisa (no quieren más del 30 por ciento de desviaciones del plan).
Sugerí que hicieran lo siguiente:
Reunir requisitos.
Filtre los requisitos y cree el alcance.
Descomponga el alcance en "sustantivos" (elementos entregables). - es decir, estructura WBS
Descomponer "sustantivos" en "verbos" (se necesita trabajar para implementar "sustantivos").
Estimar "verbos" considerando riesgos.
Encuentre dependencias de "verbos" y colóquelas en una línea de tiempo. - es decir, diagrama de GANT
Calcular fecha de lanzamiento.
Como puede ver, es más complicado que el mapeo inicial de la historia y se parece más al estilo de "cascada pesada" que al estilo "ágil". Según entiendo la filosofía Agile, la precisión de la estimación de la fecha de lanzamiento final no es una prioridad alta, porque "responder al cambio sobre seguir un plan".
Volviendo a la lista de planificación: en Scrum implícitamente hicimos 1-3 pasos durante la Planificación de lanzamiento inicial y los pasos 4-6 durante cada Planificación de Sprint. Sugerí hacer todos estos pasos durante la planificación de lanzamiento explícitamente.
A pesar de que esta fue la primera (y única) forma que pensé para mejorar la precisión de un plan de lanzamiento, no me gusta mucho porque (en mi opinión) este tipo de planificación no se ajusta a la ideología de Agile.
Entiendo que las estimaciones precisas exigen más esfuerzo y no creo en estimaciones de alta calidad "milagrosas" sin esfuerzo. Pero tal vez pueda sugerirme otras formas (o algunos consejos) sobre cómo hacer que la planificación de lanzamiento sea más precisa sin tener una planificación complicada y pesada al estilo cascada.
No en vano, escucho mucho esa pregunta. El problema básico con la pregunta es que Agile no está de acuerdo con la idea fundamental de un proyecto de alcance fijo/línea de tiempo fija. En la pregunta que le hicieron, existe la suposición de que la fecha de finalización de un alcance establecido se puede conocer y el problema es que somos malos para conocerla (estimar). Eso no es realmente cierto. La fecha de finalización de un ámbito dado no es un punto conocido en el tiempo. Más bien, es un punto de cambio en el tiempo.
La mejora de las capacidades del equipo, la comprensión de las necesidades de los usuarios y una comprensión más sofisticada de la implementación a medida que avanza el proyecto en realidad mueve esa fecha.
Mire este video de Henrik Kniberg de 11:25 -> 14:45 (todo el video es excelente, pero esta parte es más relevante para esta pregunta). Hace un gran trabajo hablando de pronósticos y puede usar esto con los resultados de la Planificación de lanzamiento.
Puede ver que puedo establecer la fecha de finalización de su proyecto cuando lo desee si la fecha límite es lo que es realmente importante o podemos extender la fecha cuando el alcance esté terminado si eso es lo importante, pero configurar ambos es solo una suposición y una apuesta.
Sergey, los pasos que describe harán que su planificación de lanzamiento sea más precisa, pero no mejorarán la precisión. No caiga en la trampa de pensar que tener un proceso detallado y explícito durante la planificación del lanzamiento mejorará la precisión.
Es una trampa en la que estamos predispuestos a caer porque, como humanos, buscamos crear una sensación de control donde no lo hay. La única forma de hacer que la planificación del lanzamiento sea más precisa es realizar la planificación más cerca de la fecha de lanzamiento. De hecho, si haces la planificación el día del lanzamiento, tendrás una precisión muy alta ;).
Como Daniel hace un gran trabajo al explicar, Agile no está de acuerdo con el concepto de tiempo fijo/alcance fijo y respeta el hecho de que simplemente no podemos estimar con un alto grado de precisión al comienzo de un proyecto. Debe preguntarle a su gerencia qué tiene de especial la marca de desviación del 30 %.
Lo mejor que puede hacer durante la planificación del lanzamiento de Agile es:
Parece que sus entrevistadores estaban definiendo un "plan de lanzamiento" como un escenario de alcance fijo y fecha fija. Una forma sencilla de mejorar la precisión de esos planes en al menos un 30 %.
Hablando en serio, esto suena como una pregunta engañosa para un taller que ejecuta Scrum. Los proyectos de fecha y alcance fijos están casi condenados al fracaso para proyectos de cualquier complejidad apreciable (consulte Stacey Matrix a continuación para ver una ilustración de 'complejidad').
Es posible que pueda argumentar que los procesos o metodologías predictivos se pueden superponer a proyectos más simples o incluso complicados; sin embargo, la mayor parte del desarrollo de software está definitivamente en el rango complejo. Para obtener más información, consulte Cynefin Framework para obtener buenas definiciones de simple, complicado, complejo y caótico.
Primero, rompería la fecha fija y la disfunción del alcance; lanzaríamos en una fecha particular pero flexionaríamos el alcance de lo que lanzamos o lanzaríamos cuando se completara un alcance particular del trabajo. Además, el equipo de desarrollo se encargaría de desarrollar software de alta calidad y baja deuda técnica para que las versiones futuras no se ralentizaran o se hicieran cada vez más impredecibles debido a malas decisiones técnicas y recortes.
La Guía Scrum dice:
Scrum se basa en la teoría de control de procesos empíricos, o empirismo. El empirismo afirma que el conocimiento proviene de la experiencia y de la toma de decisiones en base a lo que se sabe. Scrum emplea un enfoque iterativo e incremental para optimizar la previsibilidad y controlar el riesgo. Tres pilares sostienen toda implementación de control empírico de procesos: transparencia, inspección y adaptación.
Para garantizar que la confiabilidad de los planes de lanzamiento mejore en un 30 %, insisto en que los equipos de desarrollo permanezcan lo más inalterados posible durante el transcurso del lanzamiento. Esto aumenta la estabilidad en el sistema y aumentará potencialmente la productividad en gran medida en comparación con los equipos que se reforman con frecuencia.
A continuación, trabajaría con el equipo para formar pronósticos basados en su progreso observado hacia el alcance (o la fecha) del lanzamiento después de 2 o 3 sprints del nuevo ciclo de lanzamiento. Este período de 2-3 sprints garantiza que se utilicen algunos datos significativos y empíricos para formar el pronóstico.
Por último, mantendría visualizaciones significativas del progreso de los equipos, teniendo en cuenta su rango colectivo de "cono de incertidumbre" para proporcionar estimaciones actualizadas a las partes interesadas a medida que surjan nuevos datos. Usaría matemáticas básicas como la " Calculadora de rango de velocidad " de Mike Cohn para estimar con precisión qué alcance se completaría dada una fecha o en qué fecha se completaría un alcance determinado.
Evitaré entrar en la comparación con un plan de lanzamiento de fecha fija y solo daré algunas sugerencias sobre cómo mejorar las estimaciones de las historias de los usuarios y las tareas relacionadas (una vez que sepa cuánto toman y la velocidad del equipo es bastante sencillo ver qué alcance puede lograrse en una versión determinada).
Pero ojo con la discusión: demasiada precisión puede perjudicar.
Pasar demasiado tiempo generalmente no aumenta la precisión de las estimaciones (¡y aburre al equipo!). Pasar demasiado tiempo estimando es realmente una forma de desperdicio. Al final, los equipos deben tener cuidado de cronometrar sus estimaciones y no intentar convertir esta heurística en una pseudociencia.
Hacer que la planificación de lanzamientos sea más precisa significa tener en cuenta las siguientes precauciones: Sin embargo, no puede evitar considerar un colchón del 15 al 20 %.
Comprenda los recursos y sus niveles de eficiencia [Esto es posible solo si está trabajando con el equipo durante mucho tiempo]
Mantener una ficha sobre las iteraciones y el control de calidad. [Esto es posible si se mantiene la comunicación y la disciplina con las partes interesadas].
Vigilando la próxima tecnología [Nunca se sabe qué puede hacer que su vida sea más fácil o más difícil]
Revisiones y Desarrollo manteniéndolos de la mano. [Mantener un control de calidad óptimo y ciclos de revisión]
Vigile de cerca los movimientos de la competencia [La evaluación continua de los desarrollos de la competencia lo mantendrá a la vanguardia en la visión del producto. Conozco algunos productos que fueron a las pizarras blancas después de que la competencia publicara contenido increíble.]
Haga una división de funciones con capacidad de alcance. Y priorice los más importantes en TOP.
Parece que estás en un entorno de baja confianza.
Si se encuentra en un entorno de baja confianza, debe realizar toda la planificación necesaria para comenzar. Una vez que comience y entregue, comenzará a crear confianza y erosionará la necesidad de una planificación tan detallada por adelantado. Tu respuesta es la única viable.
Esto es tan típico de las grandes organizaciones al comienzo de una transformación ágil, o estancada, que hay una sección completa sobre esto en la Capacitación profesional de Scrum.
Está la ideología, el entorno ideal de scrum, y luego está la realidad de su disfunción organizacional. Como esta organización parece necesitar trabajo y esfuerzo serios para seguir avanzando hacia la agilidad, debe preguntarse si ese es el esfuerzo que está dispuesto a contribuir.
Por mi parte, me encantan los desafíos...
Completamente de acuerdo con lo que dijo @Daniel y podría agregar un poco más: si el entorno (como distracciones no planificadas, horas de trabajo aproximadas disponibles, ...) es constante, entonces con el tiempo el equipo se dará cuenta de sprint velocity
que eso solo podría ayudar a estimar qué tan rápido un La historia puede ser entregada. Esto no es un contrato sino solo una estimación.
Y las estimaciones de las que estamos hablando son un máximo de días de hasta un período de sprint, no meses como se puede ver en la cascada.
Cuando agrega continuous delivery
a Agile, ni siquiera necesita (o mejor, no tiene sentido) crear estimaciones, ya que las historias van y vienen de la acumulación con casi minimal lead time
. Con la entrega continua, puede tener varios lanzamientos todos los días. Sin embargo, esto funciona con productos basados en software y es posible que no se aplique directamente a ningún otro tipo de productos.
Tob
Serguéi Kudryavtsev
Sr. Hinsh - Martin Hinshelwood
Geoff quema