Primero lo primero
Hace poco comentaba en un post de Rodrigo Corral sobre algunas de las desventajas de un método de estimación que el mencionaba como método ágil y rápido: el Plannig Poker. Luego, Rodrigo me responde con un post en el que intenta rebatir cada una de mis afirmaciones. Una excelente noticia es que al menos el capítulo 6 del libro Agile Estimating and Planning (by Mike Cohn) que trata, entre otras cosas, sobre Plannig Poker está disponible para leerlos en pdf desde acá.
- Lo primero que debo decir es que la utilización de Planning Poker con Wideband Delphi es como comer pan con pan. No se trata de técnicas complementarias. Debo recurrir para esto a la misma bibliografía que en su momento me recomendó Rodrigo para explicarlo, Cohn dice:
«The three most common techniques for estimating are
◆ Expert opinion
◆ Analogy
◆ Disaggregation
Each of these techniques may be used on its own, but the techniques should be combined for best results.»En otras palabras, usar dos métodos de analogía, o dos de opinión, o dos de descomposición es simplemente comer pan con pan que, según el dicho que repetía mi abuela, es comida de tontos. Yo recomiendo estidiar Wideband Delphi y luego leer el libro Agile Estimating and Planning (by Mike Cohn) para entender de que hablo.
- Lo segundo, esta técnica requiere de la participación de todos aunque Rodrigo dice en su respuesta que no necesariamente es así. Nuevamente Cohn dice: «Participants in planning poker include all of the developers on the team. Remember that developers refers to all programmers, testers, database engineers, analysts, user interaction designers, and so on. On an agile project, this will typically not exceed ten people. If it does, it is usually best to split into two teams.
Each team can then estimate independently, which will keep the size down.«
Para quienes no entiendan absolutamente nada de inglés, Cohn dice que sí es necesaria la participación de todos. - Tercero, es un método que consume más tiempo que otros métodos. Para este punto recurro a McConnel quien dice: «Because Wideband Delphi requires a meeting, it burns a lot of staff time, making it an expensive way to estimate. It is not appropriate for detailed task estimates.«, esto mismo aplica a planning Poker. Si solo porque dice Wideband Delphi y no Planning Poker alguien no cree que esto sea válido, puede hacer el siguiente experimento: trate de ponerse de acuerdo con un grupo de 6 o 7 desarrolladores sobre una estimación y luego utilice alguna tool como construx para hacer el mismo trabajo; luego calcule cuanto tiempo perdió con uno y otro método. No se trata de fe, se trata de realidad.
- Cuarto, yo digo que hace falta un moderador y Rodrigo piensa que no es necesario. De nuevo (nótese que no recurro nunca ni al ACM ni a la IEEE ni al SEI, solo a fuentes agradables) Cohn dice: «For each user story or theme to be estimated, a moderator reads the description. The moderator is usually the product owner or an analyst.«
Es posible darle diez mil vueltas a la existencia de alguien con el rol moderador pero quien sufre los método de estimación grupales sabe que este rol es imprescindible. Esto también lo deja ver McConnel cuando dice: «The coordinator should take care to prevent people with dominant personalities from unduly influencing the estimate.» solo que le llama coordinador. - Quinto y último gracias a Dios, yo comenté en el post de Rodrigo que los métodos de juicio arrojan mejores resultados cuando existen verdaderos expertos en el equipo. Rodrigo lo niega diciendo que esto no es cierto. Más allá de que este punto es indefendible, voy a citar a McConnel: «How many experts are enough? Studies in other fields have found that the use of 3 to 5 experts with different backgrounds seems to be sufficient (Libby and Blashfield 1978, Jørgensen 2002). In addition, it’s useful to find experts with different backgrounds, different roles, or who use different techniques (Armstrong 2001, Jørgensen 2002).»
Sobre estimaciones de «Expertos en la materia»
Voy a continuar esta entrada explicando cuales son las desventajas documentadas de los métodos de estimación grupales o «Expert Judgment in Groups» intentado, siempre que sea posible, recurrir a fuentes reconocidas y autorizadas que promueven técnicas de estimación ágiles.
Algo que comentaba era que, como variante del método wideband delphi, ese método de estimación compartía todas las desventajas propias de la familia de métodos conocida como «Expertos en la materia» (para más detalle de estas ventajas y desventajas vea: Métodos de Estimación – Resumen ) y que una de las desventajas más importante es que, me cito: «Arroja mejores resultados mientras más expertos «verdaderos» sean sus participantes. Si no son expertos…». Esto ahora que lo leo no parece una gran desventaja pero realmente lo es y lo voy a explicar.
Todos los métodos de la familia «Expertos en la materia» comparten una característica común no muy deseable: la subestimación.
Steve McConnell en su libro Software Estimation: Demystifying the Black Art menciona los trabajos de investigación de Michiel van Genuchten, que afirma que las estimaciones realizadas por los desarrolladores tienen un factor de optimismo de entre el 20% y el 30%, y de Boehm, Barry W que afirma que se encontró un factor de fantasía de 1.33 entre 100 proyectos estudiados. Esto quiere decir que los desarrolladores creen (escribo creen pero debería decir creemos) que pueden hacer las cosas un 30% más rápido de lo que realmente pueden. McConnell cita también al ex-Vice Presidente de Microsoft Office development Chris Peters quien observó que «You never have to fear that estimates created by developers will be too pessimistic, because developers will always generate a too-optimistic schedule». Por todo esto, McConnell termina dandonos un Tip (el 20): Don’t reduce developer estimates—they’re probably too optimistic already.
El problema de subestimar un proyecto
Pero, ¿cual es el problema con subestimar un proyecto?. El problema es que los estudios demuestran (por favor les recomiendo fuertemente leer el libro) que un buen líder de proyectos puede ingeniárselas para llevar a buen puerto (costo y schedule) un proyecto con una subestimación de hasta un 20% pero no más que eso. Pero como si esto fuera poco, las consecuencias de subestimar no son las mismas que las de sobreestimar un proyecto. Para esto voy a necesitar este gráfico:
Como puede verse, mientras que las consecuencias en los costos de sobreestimar son lineales (se cumple la ley de Parkinson), las consecuencias de subestimar los proyectos son mucho más graves. Por lo tanto, si bien parece totalmente anti-intuitivo (y según la idiosincrasia de tu empresa puede llegar a ser hasta perjudicial para tu salud), ante la duda, es mejor sobreestimar que subestimar una tarea.
El lector despierto entenderá que no estoy diciendo que haya que sobreestimar los proyectos sistemáticamente. Solo es preferible sobreestimar que subestimar.
Algunos problemas humanos
Siguiendo con el tema que nos toca, hay que notar tres cosas:
- Los desarrolladores no creen equivocarse por mucho en sus estimaciones. Esto es, por lógica, algo obvio por cuanto nadie puede no creer en lo que cree. El 30% de subestimación al que me refiero es producto de la convergencia de las revisiones en grupos, el error individual de los desarrolladores de manera individual ronda el 55%.
- Los desarrolladores pierden la dimensión del problema cuando estos crecen en tamaño. Así, no tendrán la misma precisión para estimar la intranet de una agencia de seguros que al estimar el sistema de control de tráfico aéreo de la UE. Esto es producto de muchos factores pero especialmente de la anti economía de escala del software y la ley de Metcalfe.
- El juicio de los expertos es más valioso que el de los no-expertos. Esto es algo peligroso por cuanto puede llavar a autoengaños. Experto es aquel que tienen basta experiencia en la tecnología a utilizar, que conoce muy bien el negocio y que cuenta con mucha experiencia en sistemas en algún aspecto similares al que se pretende desarrollar. No se es experto solo por contar con una certificación .Net y por programar desde los 12 años. Se es experto según el proyecto, en unos se es experto mientras que en otros no.
Una pequeña pruebita
Pensando en hacer esto un poco más curioso de leer, hice este problema:
Mariano es un excelente desarrollador web al que se le ha pedido que estime un proyecto de 21 tareas y vos (quien lee) sos su líder de proyectos. Mariano ha estimado el tamaño de las tareas y a partir de ellas calculó, basandose en los datos históricos de productividad que tiene en su cabeza, el esfuerzo que le requerirían esas tareas. El proyecto comenzó y Mariano quedó como único desarrollador por lo que las 21 tareas se desarrollan de manera secuencial.
Luego de 21 dias (31/03), Mariano tiene 4 dias de retaso pero esto no parece preocupate (recordá que sos el lider de proyecto) así que no tomas ninguna medida correctiva. Pero después de unos cuantos dias (24/5) Mariano acumula ya un mes de atraso (ya le pusiste mala cara y aún así no avanza). Es que Mariano aculuma pequeñas desviaciones fruto de haber sobreestimado su capacidad para realizar las tareas que se le han asignado.
No queda otra, el cliente sabe que el proyecto está atrasado y como buen cristiano «nos perdona». Eso sí, quiere saber cuando va a estar listo y no aceptará otro «problemita».
La pregunta es: según los datos que ves en el excel ¿cuando estará listo el software? ¿Que le decis al cliente?
Opciones:
- Estará listo para el día en que te comprometiste!.
- Tendrá un mes de atraso por lo que se entregará el 23/11/2008.
- De seguir con la productividad actual el proyecto se entregaría con algo más de dos meses de atraso.
- El proyecto se finalizará con suficiente seguridad con un atraso máximo de 3 meses.
- El proyecto no se entregará nunca pero nos aseguraremos de que Mariano no vuelva a trabajar en una empresa de software.
La respuesta la voy a poner en un comentario.
Como mejorar las estimaciones
Para contrarestar estas falencias es necesario la utilización de otros métodos que aporten otra perspectiva a la estimación. Lo ideal sería contar con la experiencia (los números) del esfuerzo que se requirió para desarrollar el sistema de control de tráfico aereo de la América, o no? (100 a 1 a que alguien piensa que no). Contar con cualquier información para comparar el proyecto o para dimensionarlos o para usarlo como parámetro de entrada en una tool de estimación será mejor que no tener nada.
¿Que tanto pueden aproximarse las estimaciones grupales como wideband delphi? Los números que muestran los experimentos realizados por McConnell dicen que mejoran las estimaciones en un 40%. De seguro que es un muy buen número ya que en proyectos con muchos factores desconocidos puede reducir el error desde 290% a 170%. No estoy siendo irónico, esta diferencia traducida en costos es enorme.
Recomendaciones
No obstante, la técnica que recomiendo para lograr un conocimiento suficiente de las probabilidades de cumplir con una estimación es la que describo en mi entrada sobre Estimaciones y Scheduling Avanzado. En ese post solo le doy mi visión a las recomendaciones realizadas por Steve McConnell en su libro de estimar utilizando rangos. Otros buenos complementos para iniciarse son Software Estimates – Managing Expectations via Ranges y Agile Estimating – Estimation Approaches de Mike Griffith en los que se explican de manera más sencilla los conceptos que se utilizan en mi post de estimaciones.
(Continuará…)
Lucas Ontivero