Antes de llegar demasiado lejos, permítanme decir que la Estimación de software: desmitificar el arte negro es un recurso excelente para las personas que miran y piensan en las estimaciones. Las dos imágenes a continuación son de ese libro y son el núcleo de las ideas que se presentan a continuación.
Como ha notado, las estimaciones son una parte importante para poder predecir y planificar el trabajo con precisión. No tener estimaciones hace que el negocio se quede ciego sobre cuánto tiempo tomará algo. No es raro que las empresas tengan una idea completamente equivocada sobre cuánto tiempo tomarán las cosas: lo que piensan que es fácil lleva de seis a ocho semanas y lo que se cree que es difícil es un truco del viernes por la tarde.
Lo primero es dar una estimación. Una estimación en sí misma no es un número único, eso es un compromiso. "Cuánto tiempo tomará ABC" -> "Aproximadamente 5 días" significa que son aproximadamente 5 días. Sin embargo, una buena estimación es un rango en el que tiene un 90% de confianza de que lo tendrá en ese rango. Si quiere decir "Estoy 90% seguro de que tomará entre 1 y 5 días", dígalo. No trabaje desde "Creo que tomará entre 1 y 10 días, por lo que 5 días es probablemente el promedio", eso no es una estimación y se equivocará el 50% del tiempo.
Bueno, el 50% o más de las veces, los programadores son notorios subestimadores para los tiempos de tareas.
Considere el cono de incertidumbre:
Imagen de http://www.construx.com - artículo completo en http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/
Tenga en cuenta que la primera estimación en ese rango es 16x. Esto es similar a decir "Creo que tomará entre una tarde y dos semanas", pero aún no lo sabes. A medida que avanza un poco con el diseño, el rango se reduce a 4x. Esto no significa que tomará una semana, significa que en su lugar estaría diciendo "después de ver esto un poco, tomará entre tres semanas" - sí, la estimación aumentó, pero también el rango de la estimación se fue abajo.
Con cada estimación que brinde, debe estar 90% seguro de que la estimación está dentro de ese rango. Puede estar equivocado: el 10% del tiempo caerá fuera de ese rango.
Hay muchas formas de estimar el tamaño de los proyectos. Comparándolo con proyectos pasados, usando un proxy (creo que tomaría 1000 líneas de código que tomarían tanto tiempo para escribir), usando puntos de función (para convertir a LOC ...), obteniendo estimaciones de varias personas y luego refinándolo iterativamente ... algunos funcionan para algunos proyectos, algunos funcionan para otros proyectos.
Un capítulo muy importante en este libro que mencioné en la parte superior es el n. ° 23 que se ocupa de las políticas de estimación y de gerentes y ejecutivos.
La clave para una estimación es el proceso iterativo de refinarlo después de trabajar un poco en él.
Dar una estimación demasiado precisa demasiado pronto en el proceso puede ser muy propenso a errores. Si no está seguro al respecto, brinde la estimación amplia y luego regrese con otra estimación después de un período de tiempo para una mayor introspección del problema y posiblemente describiendo cómo lo hará, observando cuánto código lo escribió El último problema similar y otros factores que afectarán la estimación.
Las estimaciones requieren un poco de reflexión: no emitir las estimaciones de puño. Estos a menudo tienen grandes errores asociados con ellos en comparación con lo que se necesita cuando lo piensas un poco.
De cómo responder cuando se le pregunta por una estimación?
Qué decir cuando se le pide un presupuesto
Dices "volveré a llamarte".
Casi siempre obtiene mejores resultados si ralentiza el proceso y pasa algún tiempo siguiendo los pasos que describimos en esta sección. Las estimaciones dadas en la máquina de café (como el café) volverán a atormentarte.
Del Capítulo 4 de Estimación de Software:
Tenga en cuenta que en esto, las estimaciones después de un poco de revisión son sistemáticamente menos salvajes y propensas a errores que las estimaciones fuera de lugar. No te salgas de las estimaciones. Siéntese y piense en la tarea y calcúlela después de pensar un poco en ella.