¿Por qué fallan los proyectos de software?
La frustración es muchas veces una constante cuando se trata de abordar un proyecto de software, ya sea un proyecto grande o pequeños desarrollos, ya sea interno o externo. Es sorprendente que en un área aparentemente tan predecible, a base de combinaciones de unos y ceros, sea tan difícil hacer predicciones precisas, tanto en tiempo como en coste.
Lo cierto es que el desarrollo de software no es una ciencia tan nueva. Otras disciplinas, como la arquitectura o la fabricación naval, llevan desarrollándose milenios. Podríamos decir que el software comenzó sus andaduras alrededor de 1950, en la época en la que se construyó el Mark I y similares, que constituía el paso de máquinas de cálculo a lo que hoy conocemos por ordenadores modernos.
Hay un estudio basado en una encuesta de Standish Group que da una visión bastante clara de algunos factores que influyen en los problemas con proyectos de software.
Proyectos con problemas y % de respuestas | ||
1 | Falta de implicación del usuario | 12.8% |
2 | Especificaciones incompletas | 12.3% |
3 | Cambio en especificaciones durante el desarrollo | 11.8% |
4 | Falta de apoyo del Management | 7.5% |
5 | Incompetencia tecnológica | 7.0% |
6 | Falta de recursos | 6.4% |
7 | Expectaciones irrealistas | 5.9% |
8 | Objetivos poco claros | 5.3% |
9 | Tiempos no realistas | 4.3% |
10 | Tecnología nueva | 3.7% |
11 | Otros | 23.0% |
No me sorprenden las 4 primeras, que además están íntimamente relacionadas. Hacen referencia a la falta de implicación en general a la hora de afrontar los proyectos de software.
Es difícil obtener información del usuario/cliente a la hora de diseñar el proyecto. Esta fase es fundamental y requiere una capacidad de abstracción importante, pero en muchas ocasiones no se le da la relevancia que tiene. A esto se refiere el punto 1.
Sin esa información será difícil hacer unas buenas especificaciones concretas, y además será fácil que una vez iniciado el proyecto el usuario/cliente quiera cambiarlas o matizarlas, lo cual dará lugar a retrasos al tener que parar para volver a especificar o deshacer lo ya hecho. Tiene que haber un plan de gestión de cambios, que los valore y los impida si no están justificados.
Y es de vital importancia que la dirección del proyecto, del cliente, del usuario, de los desarrolladores… es decir, los altos mandos en general, den poder a los gestores del proyecto y den importancia y promoción al hecho de gestionarlo correctamente. A esto se refiere el punto 4.
Quizá sea debatible el orden de la lista que propone el Standish Group, pero creo que los factores más importantes sí están incluídos. Sólo añadiría la gestión y planificación del mantenimiento necesario una vez acabado el proyecto, algo que muchas veces se olvida o se minimiza.
En cualquier caso, al final todo se puede tomar con humor. Hay una viñeta que describe de forma muy gráfica todo este galimatías, la dejo por aquí enlazada en Flickr.
Referencias y más:
http://www.stylusinc.com/Common/Concerns/SoftwareProjectsFailure.php
http://en.wikipedia.org/wiki/Harvard_Mark_I
http://www.flickr.com/photos/cappellmeister/5921913/
Me viene a la mente, (todo un logro) a proposito del punto 3, que he sufrido una y otra vez, una gran frase que dice: es facil caminar sobre las aguas y terminar un proyecto de sw a tiempo en base a unas especificaciones si las aguas y las especificaciones estan congeladas. Demoledor.
Muy bueno el dicho, me lo voy a guardar y ten por seguro que lo utilizaré en algún momento ;-)
Lo realmente complicado es hacer que los actores estén implicados, hacer seguimiento periódico de las evoluciones y se tome en serio, cosa que no es fácil. De lo contrario se cae en el riesgo de que el proyecto se convierta en algo oscuro, complicado y difícil de entender por parte de la gente que no está involucrada directamente en el desarrollo.
Y eso también consume tiempo, que hay que tener en cuenta.
Creo que mucha gente, a la hora de acercarse a un proyecto de software, ya sea un estandar paquetizado o un desarrollo a medida, lo hacen con una actitud de factoría de sueños…
Los proyectos de software, los desarrollos a medida, creo que son necesarios única y exclusivamente en casos en los que no exista un software ya estandarizado que cubra por lo menos un 70 u 80% de las necesidades que crees que tienes para informatizar algo.
De software, lo que más conozco es el mundo de los ERP’s. Lo cierto es que la lisa que propone esta gente es bastante acertada. En la empresa donde trabajo, cuando comienza a haber problemas con alguna implantación suele ser, generalmente, por la falta de colaboración de los implicados y esto deriva directamente del punto 4, gerencia no ha marcado internamente las directrices de forma clara para implantar el nuevo sistema de gestión.
Un buen hilo, tío!! (ayer nos encontramos con tu hermana!!) jeje
Totalmente de acuerdo. Y si esto lo unes a una falta de cultura de gestión de proyectos, tienes todas las piezas ;-)
Esto me recuerda un proyecto de software relativo a un espacio virtual que tenemos pendiente, te diré algo en breve.
(Jejeje, sí, ya me contaron. El mundo es un pañuelo!!)
[…] resumen, se me ocurre que un proyecto de software está destinado al fracaso […]