La estimación puede ser un aspecto complejo de cualquier nueva iniciativa de software. Si proporciona una estimación demasiado alta, su proyecto podría cancelarse incluso antes de comenzar. En el caso opuesto, si es demasiado baja, su proyecto corre el riesgo de fracasar o verse sometido a una gran presión debido a la percepción de sobrecostos y plazos.

Si el proyecto en cuestión consiste en una inversión de capital en un nuevo almacén o en la mejora de las máquinas de la fábrica, a menudo es fácil preparar estimaciones precisas. Esto se debe a iniciativas altamente repetibles y de baja complejidad, donde los costes y plazos indicativos se pueden establecer fácilmente.

Sin embargo, para muchos proyectos de software, no se puede decir lo mismo. Existen innumerables ejemplos destacados de proyectos que fracasaron debido a una planificación deficiente, como el fallido sistema «NHS Connecting for Health» de 12 000 millones de libras esterlinas en el Reino Unido o el fallido sistema de control de tráfico aéreo de la FAA de 6 000 millones de dólares en Estados Unidos.

Este artículo analiza por qué los proyectos de software suelen adolecer de estimaciones demasiado optimistas, cómo gestionar las expectativas de las partes interesadas y qué técnicas utilizar para crear estimaciones significativas y útiles adaptadas a su estilo de ejecución.

¿Qué es la estimación?

Estimar significa «formarse una idea aproximada». En el contexto de la entrega de software, las estimaciones consisten en predecir el tiempo y el coste basándose en el conocimiento y la información disponibles en el momento de realizar la estimación. Cuanta más información se disponga, más precisa será la estimación.

Para obtener una estimación totalmente precisa, se necesita toda la información posible sobre los requisitos, el ritmo de entrega, los recursos y los acontecimientos mundiales. Por supuesto, no es posible predecir el futuro de esta manera, por lo que todas las estimaciones conllevan cierto grado de incertidumbre.

En situaciones donde la tarea, el entorno y los recursos son similares a los de un proyecto real anterior, se cuenta con un buen punto de referencia para estimar un nuevo proyecto. Sin embargo, los proyectos de desarrollo de software suelen consistir en requisitos muy específicos basados ​​en plataformas tecnológicas complejas, por lo que los plazos de entrega pueden variar entre distintas iniciativas.

Las mejores estimaciones considerarán diversos factores, como:

Composición de equipo (Recursos)

¿Qué equipos se requerirán para completar esta tarea, incluyendo desarrolladores, testers, ingenieros de plataforma, recursos de proyecto, gestión de cambios, capacitadores y gestión de equipos? ¿Provendrá de personal interno existente, nuevas contrataciones, contratistas o terceros?

Finanzas

¿Cuánto costará el proyecto de software y en qué moneda? ¿Qué proporción corresponderá a gastos de capital (CAPEX) frente a gastos operativos (OPEX)? ¿Con qué rapidez recuperará la organización el coste y en qué plazo (también conocido como ROI o TIR)?

Tareas y entregables de alto nivel

¿Cuáles son las tareas que deberán completarse como parte del proyecto? ¿Habrá una fase de compilación extensa, una migración extensa y un gran número de usuarios?

Timelines

Aunque no es posible ser exacto, un proyecto de 3 semanas es muy diferente a un proyecto de 3 años.

Participación de terceros

¿Cuáles serán los costos significativos de terceros? ¿Habrá costos de licencia y de alojamiento? ¿Se basarán en tiempo y materiales, o serán un costo fijo?

¿Porqué es importante la estimación?

Las estimaciones suelen ser un requisito previo

Al considerar una gran inversión de capital, la mayoría de los profesionales con visión comercial querrán saber «¿Cuánto tiempo llevará?», «¿Cuánto costará?» y «¿Cuándo empezaré a rentabilizar mi inversión?». De hecho, en las grandes organizaciones, las respuestas a estas preguntas suelen ser requisitos obligatorios impuestos por los responsables del presupuesto antes incluso de que los proyectos puedan comenzar.

Las razones culturales para esperar estimaciones son comprensibles. Se espera que cualquier organización que cotiza en bolsa proporcione previsiones trimestrales a sus accionistas para indicar cómo creen que se comportará la empresa durante el trimestre siguiente, considerando cualquier gasto de capital u operativo importante que aparezca en sus balances.

Las estimaciones proporcionan un lenguaje común

No elaborar estimaciones puede generar una brecha entre los proyectos de desarrollo de software y el resto de la organización. Existe un movimiento creciente conocido como «#NoEstimates» que argumenta que, dado que los proyectos de software suelen exceder el tiempo y el presupuesto, es una pérdida de tiempo invertir tiempo en predicciones que a menudo resultan incorrectas. Si bien muchos profesionales del software son plenamente conscientes de la naturaleza impredecible de la entrega de software a medida, a muchas organizaciones les resultaría desagradable que sus equipos no proporcionaran estimaciones de tiempo ni de coste.

Las estimaciones permiten la alineación en todo el equipo del proyecto

La estimación no sólo es importante como requisito previo para la aprobación del proyecto, sino que el proceso de creación de estimaciones tiene una serie de otros beneficios:

  • El proceso de estimación agrega estructura al trabajo de planificación y diseño del proyecto, lo que garantiza que considere áreas del proyecto que podría haber pasado por alto si no tuviera que considerar los cronogramas.
  • Las estimaciones brindan transparencia al equipo del proyecto y permiten que sus miembros cuestionen o validen las suposiciones. Por ejemplo, supongamos que algunos miembros del equipo pensaron que se desarrollaría una integración con un sistema preexistente, pero el equipo del proyecto no lo notó, pensando que se trataría de una carga de datos única. La publicación de las estimaciones permitiría que esto fuera transparente.

Puntos clave necesarios para la estimación de proyectos de software

Para estimar un proyecto de software, se requieren una serie de datos antes de poder crear una visión significativa.

Alcance del trabajo

El alcance cubre un amplio conjunto de temas como los siguientes:

A continuación, profundice en la perspectiva de los usuarios para:

  • Requisitos de usuario (a alto nivel). Esto es necesario para comprender la complejidad del sistema. Considere la diferencia de complejidad entre una aplicación que muestra a los usuarios una foto diferente cada día y un sistema de comercialización de petróleo. Si bien los requisitos de alto nivel se pueden comprender, algunos podrían requerir un esfuerzo y una complejidad adicionales considerables.
  • Requisitos no funcionales. Una aplicación que requiere estar disponible 24/7 para un millón de usuarios se diseñará y construirá de forma muy diferente a una aplicación interna que solo necesita estar disponible en horario de oficina.
  • Es importante considerar los factores externos. Estos suelen resumirse con la regla mnemotécnica «PESTLE», que significa, del inglés:
  • Political (Político)
  • Economic (Económico)
  • Social (Social)
  • Technological (Tecnológico)
  • Legal (Legal)
  • Environmental (Ambiental)

Aunque estos deberían estar contemplados en los requisitos, conviene revisarlos para comprobar si alguno de estos factores influye. Estos factores ayudarán a identificar cualquier grado elevado de cumplimiento, seguridad, informes o cambios futuros que puedan ser importantes a considerar. Por ejemplo, un sistema que gestiona historiales médicos tendrá requisitos de seguridad muy estrictos, cuyo incumplimiento podría acarrear multas considerables para la organización responsable.

Nobuzen articulo estimacion proyectos dibujo carga de trabajo

Stack Tecnológico

Un punto clave final importante para el proceso de estimación de un proyecto de desarrollo de software es la consideración del stack tecnológico.

  • ¿El proyecto utilizará una cantidad conocida de un lenguaje de programación moderno o existe el requisito de escribir en algo de naturaleza heredada (lo que significa que será difícil encontrar programadores y reemplazarlos)?
  • ¿Necesitamos tener en cuenta los elementos de la pila tecnológica que llegan al final de su vida útil durante el proyecto o que requieren esfuerzo para actualizarlos a la última versión?
  • ¿Estamos implementando el proyecto en nuestros propios centros de datos físicos, donde los plazos de entrega y los procesos internos podrían causar demoras, o en un sistema alojado en la nube, donde necesitaremos ingenieros de plataforma capacitados para configurar el entorno?
  • ¿Está el stack alineado con las competencias presentes en la organización y, si no, cómo se gestionará esto una vez que el proyecto pase a su fase de soporte y mantenimiento?

Técnicas de estimación del desarrollo de software

Cualquier equipo de proyecto requiere un conjunto de herramientas de estimación, con diferentes técnicas adecuadas para diferentes etapas del ciclo de vida del proyecto y para diferentes grupos de interesados. A medida que surgen más detalles a lo largo del proyecto, se pueden integrar estos datos y revisar las estimaciones.

Veamos algunas técnicas adecuadas, cómo usarlas y cuándo agregan valor durante el ciclo de vida del desarrollo de software.

Estimación de proyectos de software de arriba hacia abajo

Un problema recurrente al estimar proyectos de software es que, para algunos enfoques, es necesario contratar a un equipo de desarrollo para elaborar la estimación. Pero no se puede obtener la aprobación para contratar recursos hasta que se proporcione una estimación. La estimación descendente en proyectos de software es una técnica que se utiliza al principio del ciclo de vida del proyecto. Permite crear una estimación general sin la incorporación del equipo técnico.

Las estimaciones descendentes también permiten crear una visión general de los costos. Aunque no tengamos una visión completa de todos los requisitos del negocio. Recopilar los requisitos requeriría la incorporación de un analista de negocios para realizar entrevistas y documentación exhaustivas. Existen dos enfoques preferidos para la estimación descendente en proyectos de software:

  • Método de consenso/Delphi. Este método, propuesto originalmente por el ejército para pronosticar el impacto de los avances tecnológicos durante la Guerra Fría, permite el intercambio anónimo de opiniones y experiencias entre los mandos superiores e intermedios. Utiliza una ronda estructurada de entrevistas anónimas y el intercambio de respuestas entre los participantes para que el grupo concuerde y se una en torno a una única estimación.
  • Estimación por Prorrateo o Análoga. Se trata de un sistema empírico (basado en hechos) que compara el alcance del proyecto a estimar con el de otros proyectos de tamaño y alcance similares, asumiendo que las estimaciones serán comparables entre proyectos similares.

Pros y contras de las estimaciones de proyectos de arriba hacia abajo:

  • Los enfoques descendentes permiten obtener una estimación general de lo necesario para completar el proyecto. Esto suele ser suficiente para que las organizaciones puedan tomar una decisión sobre el retorno de la inversión.
  • La precisión suele ser baja en creaciones personalizadas, pero si existe un buen conocimiento de iniciativas similares, se puede mejorar.

Estimaciones de abajo hacia arriba

En la estimación de abajo hacia arriba: los proyectos se dividen en una serie de paquetes de trabajo que se estiman por separado tanto en términos de duración como de costos, antes de agruparse en una estimación general del proyecto.

Este enfoque se percibe como el más preciso para realizar estimaciones debido a que considera las tareas del proyecto a un nivel granular más bajo y, por lo tanto, se lleva a cabo con más información presente que en el enfoque de arriba hacia abajo.

Pros y contras de la estimación de abajo hacia arriba:

  • Tiende a ser más preciso que el de arriba hacia abajo.
  • Útil para desarrollar un cronograma y presupuesto detallados
  • Requiere más tiempo, esfuerzo y una mejor articulación de los requisitos del proyecto.

Estimaciones de tres puntos

Las estimaciones de tres puntos toman una muestra de tres eventualidades distintas como se indica a continuación:

  • Mejor posible caso (a)
  • Peor posible caso (b)
  • Caso más probable (m)

De estos tres conjuntos de estimaciones se deriva un promedio ponderado final según la siguiente fórmula:

(a+4m+b)/6 = Estimación

Esto garantiza que las estimaciones demasiado optimistas o demasiado pesimistas tengan menos peso que los resultados esperados, pero se incluyan en la estimación general. Para mayor precisión, se pueden recopilar múltiples estimaciones de diversas fuentes y promediarlas.

Agile vs Estimación Tradicional

Uno de los principios clave del manifiesto ágil es «Responder al cambio en lugar de seguir un plan». Por ello, las técnicas de estimación ágiles tienden a centrarse más en lo que se puede entregar a corto plazo que en lo que se puede entregar a largo plazo.

Aquí puede haber una fricción natural, ya que algunos profesionales ágiles pueden resistirse fuertemente a proporcionar estimaciones. Las enseñanzas de algunos marcos alientan activamente a sus certificados a negarse a proporcionar estimaciones por más tiempo que los siguientes sprints.

Las mentalidades ágiles también se adhieren a la idea de que el desarrollo de software debe realizarse con un enfoque incremental. Se focalizan en «prueba y aprendizaje», en lugar de adherirse a un plan de entrega a largo plazo. Se cree que, por lo general, no tenemos todas las respuestas de antemano. Por lo tanto, debemos valorar la nueva información por encima de apegarnos a una lista previa de entregables. Es es probable que esta nueva información genere más valor que el plan original sin fundamento.

Ventajas de la Estimación tipo Agile

La comunidad ágil ha adoptado un enfoque pragmático. Se ha basado en hechos para realizar estimaciones. Es mucho más probable que los profesionales sean un poco más cautos con respecto a las estimaciones que publican.

Esto significa que es probable que dichas estimaciones vengan acompañadas de importantes advertencias que subrayen la falta inherente de precisión. En tales enfoques y, más comúnmente, en lugar de proporcionar una duración de tiempo específica como “4 semanas”, podrían proporcionar una estimación de “3 a 6 semanas” para ilustrar el potencial de que se produzcan demoras.

Las estimaciones ágiles suelen ser bastante livianas y no requieren enviar páginas y páginas de documentación. Suelen consumir menos tiempo que los métodos más tradicionales.

Técnicas de estimación tipo Agile

  • Tallas de camisetas (T-Shirt Sizing). Utilizando una gama de tallas XS-XL (como en camisetas), el equipo asigna tallas a entregas de mayor nivel (a menudo conocidas como «épicas»). Se utilizan tallas de camisetas porque son deliberadamente imprecisas, al igual que una camiseta grande cubre una amplia variedad de formas y tallas corporales, lo mismo ocurre con la talla grande de una épica. Una vez que todas las épicas tienen tallas de camiseta, se puede asignar un tiempo indicativo a cada talla, lo que permite crear una estimación general.
  • El póker de planificación (Planning poker) es una técnica que se utiliza principalmente una vez que una iniciativa de entrega está en marcha. Es similar en algunos aspectos a la estimación Delphi mencionada anteriormente en este artículo, ya que las estimaciones se entregan a ciegas, solo que de forma mucho más sencilla. Alguien explica un entregable de tamaño adecuado (generalmente denominado «Historia de Usuario») y el equipo, una vez que lo comprende lo suficiente, usa cartas de póker con valores escritos para dimensionar el elemento. Todos revelan sus cartas a la vez para no verse influenciados por los demás, y el ciclo se repite con el siguiente elemento.
  • Horas-persona. Un enfoque que se puede utilizar es asignar días/horas de esfuerzo a los elementos de entrega. Esto suele hacerse a nivel de «Tarea» (el nivel más bajo del entregable). El uso de horas-persona para estimar ha caído en desuso, ya que suele ser impreciso debido al fenómeno de la «falacia de planificación», según el cual las personas tienden a ser demasiado optimistas al estimar.
  • Como se mencionó anteriormente, algunos equipos de entrega ágil argumentan que no se deben realizar estimaciones, ya que se trata de una pérdida de tiempo que podría dedicarse a la entrega. En cambio, intentan asegurar que todos los entregables se dividan en subtareas de tamaño similar y se logre un flujo constante de entrega. Este enfoque se utiliza mejor en el desarrollo continuo de productos en organizaciones con una cultura receptiva a este enfoque divergente.
Nobuzen articulo estimacion proyectos dibujo estimación carga de trabajo tipo agile

Conclusión

La estimación en proyectos de software es un tema complejo y amplio. Algo que se puede garantizar es que si se entrega considerablemente por debajo del plazo y el presupuesto, será menos probable que se reciba atención negativa que si se excede considerablemente. Dicho esto, las estimaciones demasiado altas podrían provocar que el proyecto nunca comience. También que los ejecutivos más astutos pierdan la confianza al darse cuenta de que las estimaciones han sido exageradas.

Existe una amplia gama de técnicas de estimación que se deben utilizar en la etapa correcta del ciclo de vida del proyecto. Deben tratarse de manera personalizada, dependiendo de la naturaleza del proyecto y la industria en la que trabaja.

Aunque las estimaciones a menudo pueden ser controvertidas, son una herramienta importante para iniciar un diálogo sobre las complejidades del desarrollo de software con las partes interesadas y el equipo del proyecto. Si logra involucrar a estas personas desde el principio e inculcar una cultura de pragmatismo, experimentación y transparencia cuando se modifiquen las fechas de entrega, tendrá una base prometedora para su proyecto.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *