Estoy convencido de que la cantidad de trabajo de rutina en el desarrollo de software es, y debería ser, relativamente pequeña, si no insignificante, y que este es el problema fundamental de la estimación de software.
Permítanme describir cómo llego a esta conclusión y decirme si la argumentación tiene fallas graves:
Todo lo que se puede estimar con alta precisión es el trabajo de rutina, lo que significa cosas que se han hecho antes. Todos los demás tipos de trabajo que implican investigación y creatividad no pueden estimarse realmente, al menos no con una precisión de, digamos, +/- 20 por ciento.
El desarrollo de software se trata de evitar tareas repetitivas. Uno de sus principios básicos es SECO (no se repita). Cada vez que un programador se encuentra haciendo cosas repetitivas, es hora de encontrar una abstracción que evite esta repetición. Estas abstracciones pueden ser cosas simples como extraer el código repetido en una función o ponerlo en un bucle. También pueden ser más complejos como crear un lenguaje específico de dominio. En cualquier caso, implementarlos implicará investigación (¿alguien ha hecho esto antes?) O creatividad.
De estos dos puntos extraigo la conclusión anterior.
En realidad, me he estado preguntando durante bastante tiempo por qué esta relación no se menciona en ninguna otra discusión, publicación de blog o artículo sobre estimación de software. ¿Es demasiado teórico? ¿Están equivocados mis supuestos? O es demasiado trivial, pero entonces, ¿por qué la mayoría de los desarrolladores que conozco creen que pueden hacer estimaciones con una precisión de +/- 20 por ciento o mejor?
fuente