Uno de los problemas más graves en el desarrollo de aplicaciones, sobre todo en los desarrollos a largo plazo, se produce cuando se realiza la estimación, los factores que la rodean como los plazos, personas que conforman el equipo de trabajo, nivel de formación, necesidades y otros factores hacen que este sea uno de los procesos más complicados de realizar.
La mayoría de las veces, las empresas suelen fijarse en desarrollos similares para realizar una estimación, otras simplemente tiran un dado al aire, lo multiplican por un factor determinado para evitar pillarse las manos y se lo ofrecen al cliente.
Lógicamente, muchos proyectos realizados de esta forma no cumplen las expectativas o simplemente fracasan, en otros, los menos, el cliente ha pagado un sobreprecio por la solución. Cuando esto sucede se suelen producir daños colaterales, la empresa que, inicialmente ha estimado mal el proyecto, traslada la presión y la culpa al equipo de desarrollo que en muchos casos ni siquiera participa de las decisiones comerciales.
¿Cómo se puede estimar un proyecto, del que es prácticamente imposible conocer todas sus interioridades, porque un análisis a fondo nos llevaría casi más tiempo que el propio desarrollo, y del que desconocemos muchas de las implicaciones que tiene a lo largo del proceso de implantación?
A veces el cliente acostumbra a hacerse una idea equivocada, de una solución que desconoce, que en muchos casos ve por primera vez cuando se realiza el proceso de implantación, es decir cuando el proyecto está prácticamente terminado. Este, cuando ve la aplicación observa que hay algunas cosas que no le gustan y procede a cambiarlas, los cambios se producen una vez el desarrollo a finalizado y suelen provocar que gran parte del proyecto se tenga que volver a reconstruir, con el consiguiente coste, difícil de repercutir y que genera numerosos problemas dañando la relación empresa-cliente.
Pienso que una estimación a largo plazo es completamente imposible de realizar en base a un análisis exhaustivo, en cambio será mucho más sencillo estimar lo que vamos a realizar a corto plazo. Creo que se debe cambiar la forma de vender software, ya que estos errores se arrastran a lo largo de todo el proyecto.
La venta de software debería basarse en ideas como las que proponen las metodologías agiles. El cliente debe formar parte imprescindible del equipo de trabajo, del que recibiremos el feedback y nos ayudara a lo largo del proceso de desarrollo, la entrega paulatina de pequeños «módulos» completamente funcionales que conformaran la solución, permiten que el cliente pueda probar parte de su aplicación, observar el progreso que se va realizando y alterar o mejorar su funcionamiento a lo largo de todo el proceso de desarrollo, los pequeños cambios y propuestas de mejora se producirán de forma paulatina evitando rehacer gran parte de la aplicación. El cliente ira pagando de forma progresiva el trabajo realizado, contento, porque sabe que su aplicación va cumpliendo los objetivos acordados y que además está abierta a sufrir cualquier tipo de variación si es necesaria a lo largo del proceso de desarrollo.
Cambiar el hábito de vender una aplicación que normalmente puede sufrir muchos cambios, es algo muy difícil de comprender para las empresas y todavía más difícil para los clientes que quieren comprar un desarrollo de software, esto fundamentalmente se debe a las malas experiencias que han tenido y quieren a toda costa cerrar un presupuesto y obtener un compromiso serio por parte de la empresa.
Creo que el proceso para convencer un cliente, pasa simplemente por realizar las primeras entregas de software, cuando el cliente observa que se esta entregando parte de su aplicación, y que paga únicamente por aquello que ya tiene, las dudas desaparecen. Si el módulo desarrollado es lo suficientemente independiente puede comenzar a amortizar la inversión de manera inmediata y no esperar a que se encuentre finalizada completamente.
Las gestión de estas pequeñas entregas de software que se van realizando, conformaran una estimación final mucho más real que cualquier estudio pormenorizado, y nos dará una visión del progreso mucho más real, proporcionándonos además un dato muy importante, la velocidad real de nuestro equipo de desarrollo, que nos ayudara a mejorar la estimación de las siguientes fases del proyecto. Estas estimaciones recogerán todas las desviaciones que se produzcan a lo largo del proceso conformando así parte del proyecto.
Os recomiendo la lectura de los posts de Rodrigo sobre estimaciones agiles y Scrum.
http://geeks.ms/blogs/rcorral/search.aspx?q=estimaci%c3%b3n
http://geeks.ms/blogs/rcorral/search.aspx?q=scrum