33. Estimación, riesgos y seguimiento del proyecto

33.1 Introducción

Desarrollar software implica tomar decisiones con información incompleta. Al iniciar un proyecto, muchas veces no se conocen todos los detalles del problema, el alcance puede cambiar y aparecen dificultades técnicas o de coordinación. Por eso, estimar, gestionar riesgos y hacer seguimiento son actividades esenciales.

Estas actividades no garantizan que todo saldrá exactamente como se planeó, pero ayudan a anticipar problemas, ordenar el trabajo, comunicar expectativas y tomar decisiones oportunas.

33.2 ¿Qué es estimar en software?

Estimar es realizar una aproximación razonada sobre el esfuerzo, el tiempo, el costo o la complejidad de un trabajo antes de ejecutarlo completamente.

Una estimación no es una promesa exacta ni una adivinanza. Es una predicción basada en información disponible, experiencia, supuestos y nivel de incertidumbre.

Idea clave: una buena estimación comunica tanto el valor esperado como la incertidumbre que existe alrededor de ese valor.

33.3 ¿Qué se puede estimar?

En un proyecto de software se pueden estimar distintos aspectos, según la decisión que se necesita tomar.

  • Esfuerzo necesario para realizar una funcionalidad.
  • Duración aproximada de una tarea, iteración o entrega.
  • Costo económico de un proyecto o cambio.
  • Cantidad de personas necesarias.
  • Complejidad técnica de una solución.
  • Riesgo asociado a una modificación.
  • Capacidad del equipo para una próxima iteración.

33.4 Incertidumbre en las estimaciones

La incertidumbre es mayor cuando el problema es nuevo, los requerimientos están poco definidos, la tecnología no se conoce bien o existen dependencias externas. A medida que el equipo aprende y avanza, las estimaciones pueden ajustarse.

Por eso, una estimación temprana debería expresarse con prudencia. No es lo mismo decir "tardará exactamente 10 días" que decir "probablemente entre 8 y 14 días, si no cambian los requerimientos principales".

33.5 Estimación de esfuerzo y duración

El esfuerzo representa la cantidad de trabajo requerido. La duración representa el tiempo calendario que transcurre hasta completar ese trabajo. No son lo mismo.

Una tarea puede requerir 16 horas de esfuerzo, pero durar una semana si la persona responsable también atiende reuniones, soporte, revisiones o dependencias de otros equipos.

33.6 Factores que afectan una estimación

  • Claridad de los requerimientos.
  • Experiencia del equipo con el dominio y la tecnología.
  • Complejidad del diseño y de las integraciones.
  • Calidad del código existente.
  • Disponibilidad de personas y recursos.
  • Dependencias con proveedores, clientes u otros sistemas.
  • Necesidad de pruebas, documentación, despliegue y capacitación.
  • Riesgos técnicos, organizacionales o de negocio.

33.7 Técnicas simples de estimación

Técnica Descripción Uso típico
Juicio experto Se basa en la experiencia de personas que conocen trabajos similares. Estimaciones iniciales o tareas conocidas.
Analogía Compara el trabajo actual con uno anterior de características parecidas. Proyectos con referencias históricas.
Descomposición Divide el trabajo en partes más pequeñas y estima cada una. Funcionalidades medianas o grandes.
Estimación por rango Expresa un mínimo, un valor probable y un máximo razonable. Trabajos con incertidumbre.
Estimación relativa Compara tamaños o complejidad entre tareas. Equipos ágiles y planificación iterativa.

33.8 Descomponer para estimar mejor

Una tarea grande suele ser difícil de estimar porque contiene muchas incógnitas. Dividirla en partes más pequeñas ayuda a descubrir actividades ocultas, dependencias y riesgos.

Por ejemplo, "implementar pagos" puede incluir diseño de interfaz, integración con proveedor, validaciones, pruebas, manejo de errores, registro de transacciones, seguridad, documentación y despliegue.

33.9 Estimar no es comprometer sin condiciones

Una estimación debe indicar los supuestos bajo los cuales fue realizada. Si el alcance cambia, si aparece una dependencia nueva o si se descubre un problema técnico importante, la estimación puede dejar de ser válida.

Por eso, el equipo debe comunicar cambios de contexto a tiempo y ajustar la planificación cuando la realidad del proyecto lo exige.

33.10 ¿Qué es un riesgo?

Un riesgo es un evento o condición incierta que, si ocurre, puede afectar negativamente los objetivos del proyecto. Puede afectar plazo, costo, calidad, alcance, seguridad, satisfacción del cliente o continuidad del trabajo.

No todos los riesgos tienen la misma importancia. Algunos son poco probables pero muy graves; otros son frecuentes pero de bajo impacto.

33.11 Tipos de riesgos en proyectos de software

Tipo de riesgo Ejemplo
Técnico La tecnología elegida no soporta el rendimiento requerido.
De requerimientos El alcance cambia frecuentemente o las reglas no están claras.
De equipo Una persona clave no está disponible durante una etapa crítica.
De integración Un servicio externo no responde como se esperaba.
De negocio La prioridad del proyecto cambia por decisiones de la organización.
De calidad Se acumulan defectos porque las pruebas se postergan demasiado.

33.12 Gestión de riesgos

Gestionar riesgos implica identificarlos, analizarlos, priorizarlos, definir acciones y revisarlos durante el proyecto. No se trata de eliminar toda incertidumbre, sino de evitar que los problemas importantes sorprendan al equipo demasiado tarde.

  • Identificar: reconocer qué podría salir mal.
  • Analizar: estimar probabilidad e impacto.
  • Priorizar: concentrarse en los riesgos más relevantes.
  • Responder: evitar, reducir, transferir o aceptar el riesgo.
  • Monitorear: revisar si el riesgo cambió o si apareció uno nuevo.

33.13 Respuestas ante riesgos

Respuesta Descripción Ejemplo
Evitar Cambiar el plan para que el riesgo no ocurra. No usar una tecnología experimental para un sistema crítico.
Reducir Disminuir probabilidad o impacto. Hacer una prueba técnica temprana antes de comprometer una solución.
Transferir Pasar parte de la responsabilidad a otro actor. Contratar soporte especializado para una plataforma compleja.
Aceptar Reconocer el riesgo y convivir con él si el impacto es tolerable. Aceptar una demora menor en una función no crítica.

33.14 Seguimiento del proyecto

El seguimiento permite comparar el avance real con lo planificado, detectar desvíos y tomar decisiones. No consiste solamente en preguntar si una tarea está terminada, sino en entender el estado del trabajo, los bloqueos, la calidad y los riesgos activos.

Un buen seguimiento evita que los problemas se acumulen en silencio hasta el final del proyecto.

33.15 Indicadores de seguimiento

  • Tareas completadas y tareas pendientes.
  • Trabajo bloqueado y causas de bloqueo.
  • Defectos encontrados y corregidos.
  • Cambios de alcance solicitados.
  • Riesgos abiertos y acciones asociadas.
  • Avance respecto de hitos o iteraciones.
  • Capacidad real del equipo frente a lo planificado.

33.16 Comunicación del estado

El estado del proyecto debe comunicarse con claridad. Ocultar problemas para evitar conversaciones incómodas suele generar consecuencias peores. Informar a tiempo permite renegociar alcance, modificar prioridades, agregar apoyo o ajustar fechas.

Un informe de estado útil no necesita ser extenso. Debe responder qué se completó, qué está en curso, qué está bloqueado, qué riesgos existen y qué decisiones se necesitan.

33.17 Ejemplo práctico

Supongamos un sistema de turnos médicos. El equipo estima que la funcionalidad de recordatorios llevará entre 6 y 10 días porque debe integrarse con un servicio externo de correo. Uno de los riesgos es que el proveedor limite la cantidad de mensajes por hora.

Para reducir ese riesgo, el equipo realiza una prueba técnica temprana, define mensajes de error claros, registra intentos fallidos y planifica una alternativa si el proveedor no cumple las condiciones necesarias.

33.18 Errores comunes

  • Tratar estimaciones tempranas como compromisos exactos.
  • No aclarar supuestos y dependencias.
  • Estimar solo programación y olvidar pruebas, revisión, documentación y despliegue.
  • No actualizar estimaciones cuando cambia el contexto.
  • Gestionar riesgos recién cuando el problema ya ocurrió.
  • Hacer seguimiento solo por porcentaje de avance sin analizar bloqueos ni calidad.
  • Comunicar problemas demasiado tarde.

33.19 Buenas prácticas

  • Descomponer el trabajo antes de estimar tareas grandes.
  • Expresar estimaciones con rangos cuando existe incertidumbre.
  • Registrar supuestos, dependencias y exclusiones.
  • Revisar riesgos periódicamente, no solo al inicio.
  • Hacer visibles bloqueos y decisiones pendientes.
  • Comparar estimaciones con resultados reales para aprender.
  • Comunicar el estado con datos, contexto y acciones propuestas.

33.20 Qué debes recordar

  • Estimar es aproximar esfuerzo, duración, costo o complejidad con información incompleta.
  • Una estimación debe comunicar incertidumbre y supuestos.
  • Un riesgo es una condición incierta que puede afectar los objetivos del proyecto.
  • El seguimiento permite detectar desvíos, bloqueos y problemas de calidad.
  • Planificar no elimina la incertidumbre, pero ayuda a tomar mejores decisiones.

33.21 Conclusión

La estimación, la gestión de riesgos y el seguimiento permiten conducir un proyecto de software con mayor claridad. Ayudan a transformar incertidumbre en información útil para planificar, priorizar y comunicar.

En el próximo tema veremos mantenimiento, evolución y soporte del software, etapa en la que el producto continúa cambiando después de su primera entrega.

Volver al índice