Hay una cosa que siempre me he preguntado al leer sobre todas estas cosas de "desarrollo ágil" aquí en SE y otros sitios:
En ingeniería de software "tradicional", usted
- recopilar los requisitos del usuario,
- escribir una especificación basada en estos requisitos,
- entregárselo al cliente y facturarle el trabajo realizado hasta el momento,
- hacer un diseño técnico (aproximado), para que pueda estimar el costo de implementación,
- dar al usuario un presupuesto para la implementación,
- espere a que el cliente firme la especificación y acepte la oferta,
- diseñar, implementar, probar,
- cuenta.
Si, durante el proceso, los requisitos cambian, envía una oferta (con un precio) por los cambios deseados (o lo hace de forma gratuita si el cambio es pequeño, le gusta el cliente y el cliente no lo hace con demasiada frecuencia) .
Entonces, ¿cómo funciona esto (financieramente) en un proyecto ágil, donde los cambios frecuentes de requisitos son parte del proceso?
- ¿Escribe una oferta para cada cambio de diseño? (¿No sería esto un desastre?)
- ¿O negocia un precio fijo y espera que el cliente no cambie los requisitos con demasiada frecuencia? (Podría ser arriesgado, conozco a clientes que aprovecharían esta oportunidad para solicitar nuevas funciones durante años antes de aceptar que el proyecto se haya completado).
- ¿O simplemente le factura al cliente el tiempo total requerido? (Podría ser riesgoso para el cliente, que no conoce el costo por adelantado).