Aprende a hacer estimaciones
Autor: Giovanni Asproni

Como programador debes ser capaz de proporcionar estimaciones a tus directivos, colegas y usuarios de las tareas que necesitas realizar, así ellos tendrán una idea razonablemente precisa del tiempo, costo, tecnología y otros recursos necesarios para lograr sus objetivos.

Para poder estimar bien es obvia la importancia aprender algunas técnicas de estimación. En primer lugar, sin embargo, es fundamental aprender qué son las estimaciones y para qué deberían ser usadas –por extraño que parezca, muchos desarrolladores y administradores no conocen esto–.

El siguiente diálogo entre un administrador de proyectos y un programador es nada atípico:

  • Administrador de Proyecto: ¿Puedes darme un estimado del tiempo necesario para desarrollar la característica xyz?
  • Programador: Un mes.
  • Administrador de Proyecto: ¡Eso es mucho tiempo! Sólo tenemos una semana.
  • Programador: Necesito al menos tres.
  • Administrador de Proyecto: Puedo darte dos cuando mucho.
  • Programador: ¡Es un trato!

Al programador, al final, se le ocurre un “estimado” que concuerda con lo que es aceptable para el administrador. Pero, ya que es una estimación del programador, el gerente lo hará responsable de ello. Para entender qué está mal en esta conversación necesitamos tres definiciones: estimado, fin y compromiso.

  • Un estimado es un cálculo aproximado o un juicio de valor, número, cantidad o extensión de algo. Esta definición implica que un estimado es una medición factual basada en datos concretos y experiencia previa; la esperanza y los deseos deben ser ignorados cuando se calcula. La definición también implica que, al ser aproximada, una estimación no pueden ser precisa, por ejemplo: una tarea de desarrollo no puede ser estimada para durar 234.14 días.
  • Un fin es una declaración de un objetivo deseable del negocio, por ejemplo, “el sistema debe soportar al menos 400 usuarios concurrentes”.
  • Un compromiso es una promesa de ofrecer una funcionalidad especificada a una determinado nivel de calidad en una cierta fecha o evento. Un ejemplo podría ser: “la funcionalidad de búsqueda estará disponible en la próxima versión del producto”.

Los estimados, fines y compromisos son independientes uno del otro, pero los blancos y cometidos deberían estar basados en estimados. Como Steve McConnell señala: “El propósito principal de la estimación de software no es predecir el futuro del proyecto, sino determinar si los fines son lo suficientemente realistas para que pueda ser controlado hasta lograrlo”. Por lo tanto, el propósito de una estimación es hacer una administración de proyecto adecuada y una planificación posible, permitiendo que los interesados hagan compromisos basados en fines realistas.

Lo que estaba pidiendo el administrador en la conversación anterior al programador era hacer un compromiso basado en un fin no declarado que el administrador tenía en mente, no dar un estimado. La próxima vez que te pidan proporcionar un estimado asegúrate que todos los involucrados sepan de lo que están hablando, y tus proyectos tendrán una mejor oportunidad de éxito. Ahora es el momento de aprender algunas técnicas…

Traducción: Espartaco Palma

Leer contribución original