Dado que usted es nuevo en la tecnología relevante y no está familiarizado con la base de código existente de baja calidad en la que deberá trabajar, es probable que la estimación pueda variar en cierta medida en ambas direcciones. Pero informe al cliente sobre la última razón :-P
Primero, enumere la miríada de cambios / características que su cliente ha solicitado. Para cada requisito, haga una pequeña revisión del código e investigue sobre cómo implementarlo y probarlo. Debe invertir este tiempo sin retorno antes de dar una estimación.
Segundo, haga 3 columnas para la estimación: el mejor caso (25% de probabilidad), el caso promedio (50%), el peor de los casos (75%). Por las 2 razones mencionadas en el primer párrafo, puede elegir la peor estimación de caso. Luego puede agregar incluso un 20% de tiempo de búfer. Por ejemplo, para un requisito particular, su mejor estimación de caso es de 2 días, el caso promedio es de 4 días y el peor de los casos es de 5 días. Agregando un 20% de tiempo de amortiguación, su estimación es de 6 días.
Tercero, no dé un punto fijo de estimación, sino un rango. Para el ejemplo anterior, puede decirle al cliente que la estimación es de 4 a 6 días. Su cliente puede insistir en la estimación de toda la lista de cambios. En ese caso, puede sumar los mínimos y máximos de los rangos para todos los requisitos. Luego proporcione una estimación final en rango, digamos de 5 a 6.5 meses. Esto tiene la siguiente ventaja: puede exceder la estimación para un requisito, pero puede finalizar otro requisito antes. En total, se cancelan entre sí y la estimación final se mantiene.
Cuarto, a medida que finaliza cada requisito de usuario y entrega de forma incremental, revise sus estimaciones anteriores para cada requisito. Este es un proceso continuo y debe ajustar / refinar la estimación a medida que avanza con el proyecto y su experiencia crece. Si ve que la diferencia entre su estimación refinada y su estimación inicial está fuera de control, siéntese con su cliente de inmediato y discuta el asunto.
Aprendí estas cosas del libro "Estimación de software: desmitificar el arte negro" de Steve McConnell. Le estoy agradecido