archivo

Archivo de la etiqueta: técnica de estimación

Cuando nos planteamos una estrategia de desarrollo basada en ciclos de vida iterativos e incrementales, como tenemos por ejemplo en las metodologías ágiles, se suele plantear la entrega de evoluciones del producto en períodos constantes de tiempo. Esto es lo que en algunas metodologías se conoce con el nombre de sprint.

La cantidad de trabajo que cabe en una entrega no deja de ser una combinación de estimaciones, ya que por un lado tenemos el parámetro velocity, que constituye la cantidad de unidades de trabajo que puede asumir el equipo de proyecto en una iteración (y que no podemos considerar estable, hasta que se hayan completado algunas de ellas) y por otro la estimación de esfuerzo de las diferentes historias de usuario o casos de uso que se van a implementar en este ciclo, pudiéndose utilizar para ello diferentes técnicas, como por ejemplo Planning Poker.

Contingencias en un proyecto de desarrollo de sofware puede haber muchas, así como errores en las estimaciones, por lo que no siempre será posible implementar lo previsto en cada iteración. Ante esto, hay diferentes opciones, por un lado está el overtime y será el equipo de proyecto en consenso con el cliente el que determine si merece la pena invertir ese tiempo extra, debiéndose tener en cuenta si se ha acudido recientemente al mismo.

Kent Beck cuando describe los principios y recomendaciones de la programación extrema indica que el overtime es un recurso que se debe utilizar solo en causas muy justificadas y de manera muy espaciada y yo estoy totalmente de acuerdo con él.

Otra opción será replanificar la fecha de entrega o entregar los hitos cerrados a la fecha de finalización del ciclo. La metodología en unos casos determinará qué camino utilizar. Soy de la opinión de que si las iteraciones se producen en períodos constantes de tiempo, no se debe romper el ritmo, sin embargo si no lo son, sí que se puede abrir la puerta a la replanificación.

También habrá que tener en cuenta las demandas del proyecto y el tiempo entre iteraciones. Por ejemplo, si no ha dado tiempo de corregir una incidencia y la siguiente iteración no es hasta dentro de cinco semanas, tal vez sí que habría que plantear un cierto retraso en la entrega.

Planning Poker, descrita inicialmente por James Grenning en 2002, es una técnica de estimación de esfuerzo de tareas concretas o historias de usuario utilizada con frecuencia en metodologías ágiles.

Es una técnica de estimación en la que participan los diferentes integrantes de un equipo de proyecto (o al menos una parte lo suficientemente representativa del mismo) y tratan de alcanzar un consenso sobre el tiempo que requiere la realización de la tarea.

La ventaja principal de este tipo de técnicas es que en el error o en el acierto cada cual ha expresado su opinión y es parte de ella, lo cual es un antídoto para la desmotivación provocada por predicciones imposibles en aquellos casos donde se imponen unas planificaciones realizadas por una persona o un grupo reducido de ellas que en la mayoría de los casos no han tenido en cuenta la opinión de los perfiles que van a ejecutar el trabajo.

El nombre de la técnica viene dado por la utilización de un mazo de cartas por cada una de las personas que participan en el proceso de estimación. La numeración elegida para las cartas y que representa una unidad de esfuerzo (o de tiempo) puede variar en función del equipo de trabajo, de la organización que decide estimar sus proyectos de esta forma, etc…

Son frecuentes los siguientes juegos de cartas:

– Uno que contenga la secuencia de Fibonacci: 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89. ¿Por qué la utilización de este tipo de secuencias u otras similares? Tiene como objeto representar la incertidumbre de realizar estimaciones sobre hitos de larga duración o que requieren un gran esfuerzo (se puede apreciar que conforme la secuencia va creciendo hay mayores diferencias entre los números, esto suele derivar a que cuanta mayor incertidumbre exista sobre un determinado desarrollo la estimación elegida será bastante más conservadora).

– Una que contenga la secuencia: 0, 1/2, 1, 2, 3, 5, 8, 13, 20, 40, 100 y opcionalmente el el símbolo ? que significa no estoy seguro o una taza de café que significa, necesito un descanso.

– Una que utilice un juego de cartas estándar con la secuencia: As, 2, 3, 5, 8 y Rey. El Rey significa que la tarea resulta complicada de estimar.

El procedimiento de estimación tiene una dinámica sencilla:

– Un moderador que coordina la sesión y que no participa en la valoración.

– El jefe de proyectos que ayuda al moderador y toma nota de los acuerdos y aspectos más interesantes que surjan en la reunión.

– Para cada historia de usuario o tarea que se evalua, se elige al desarrollador que tenga un mayor conocimiento de la misma para realizar una breve exposición.

– A continuación el resto de participantes en el proceso de valoración pueden realizar consultas con el objeto de aclarar aquellas dudas que les puedan surgir. En todo este proceso no se debe adelantar las ideas que tiene cada uno con respecto a la estimación de esfuerzo de la tarea, de esta manera se pretende impedir que opiniones de unos influyan sobre las de otros.

– El jefe de proyectos va anotando lo más significativo del diálogo que se produce.

– Una vez finalizada esta primera ronda se procede a la estimación del esfuerzo por parte de cada uno de los participantes. Para ello, eligen una carta de su baraja, la ponen boca abajo y una vez hecho esto por parte de todos, se procede simultáneamente a ponerlas boca arriba.

– Aquellas personas que hayan realizado las estimaciones más altas y las más bajas, procederán a dar una explicación de por qué han realizado esa elección, una vez hecho esto se iniciará otra ronda de diálogo.

– Una vez finalizada esta fase, se procede de nuevo a realizar una estimación y así sucesivamente hasta que se alcance una solución de consenso.

– Si no se alcanza un acuerdo, se puede dejar la evaluación de la tarea para otra ocasión, intentar negociar un consenso por parte del moderador u ofrecer un mayor peso a la opinión de la persona responsable de realizar la tarea o de que la tarea se ejecute correctamente en tiempo y forma.

– Con el propósito de evitar que cada estimación se prolongue excesivamente se suele utilizar un reloj que delimita el tiempo dedicado a cada uno. Una vez finalizado el tiempo, se podrán tomar decisiones como las indicadas en el párrafo anterior.

Estudios realizados han llegado a la conclusión que esta técnica produce estimaciones menos optimistas que otras y que además suelen resultar bastante precisas.