¿Por qué fracasan los desarrollos IT?

En Cultura IT hablamos constantemente con referentes de tecnología de diferentes industrias y con todos llegamos a discutir sobre los mismos desafíos: llegar en tiempo y forma con los deadlines de los proyectos sin necesidad de reformular la cotización inicial ni el alcance. 

Existen muchos motivos por los cuales los proyectos terminan extendiéndose, pero a continuación resumimos los más determinantes.

 

Estimación y tiempos acordados

Existen técnicas para estimar y acercarse bastante a una buena cotización. Tener una mala estimación de tiempos y costo afecta a ambas partes, a vos como cliente y al proveedor de IT. 

Es importante verificar lo siguiente:

  • ¿Cuántos encuentros se realizaron para hacer un pre-análisis?
  • ¿Cuánto tiempo se invirtió en recibir y aplicar feedback?
  • ¿La estimación se hizo según la documentación entregada, o fue más allá de los requisitos?

 

Si al preguntar lo anterior alguno de estos puntos no estuvo presente durante el proceso, puede ser un indicio de que el proyecto tiene un alto riesgo de sufrir cambios durante su ejecución, y estos cambios van relacionados directamente a tiempo y costo.

Para complementar las preguntas anteriores, creamos un project charter que se puede descargar en este link.

Riesgos & Contratiempos

En proyectos de software, hay distintos tipos de riesgos de diferentes categorías:

De los usuarios: Incluyen la falta de compromiso de la alta gerencia de la organización y la insuficiente participación de los usuarios. Estos factores no siempre están al alcance del líder del proyecto.

Conectar la solución que se está construyendo con los usuarios finales es vital para evitar riesgos innecesarios en el proyecto. 

Como hablamos con Gustavo Colman en esta nota, las necesidades en UX (experiencia de usuario) y el time to market para sacar un producto que resuelva necesidades claras son conceptos que trascienden a todas las demás aristas de la definición del proyecto.

Del líder del proyecto: La incapacidad para juzgar el alcance del sistema y con la pobre identificación de la funcionalidad requerida. La vinculación entre las áreas suele depender del Project Leader, si este no tiene la suficiente capacidad de leer el impacto de tecnología en el negocio, se desvincularán los stakeholders.

De la ejecución del proyecto: Staff de desarrolladores inadecuado, metodología de desarrollo inapropiada, fallas en la definición de roles y responsabilidades, pobre planeación y control del proyecto.

 

Calidad y más calidad

El aseguramiento de la calidad es una etapa primordial en tu proyecto de software, dado que en esta etapa se permite validar todos los puntos de quiebre y cruciales en la operación de un negocio dado y hacia el cual está encaminado el software.

Es muy importante que se destine un % del tiempo del desarrollo del proyecto para las pruebas que el departamento de QA (Quality Assurance) ejecuta. Estimar un tiempo menor al 30% no es recomendable, dado que no se puede realmente garantizar que el software pueda realizar todo lo esperado de la manera correcta.

Como cliente estás en todo tu derecho de pedir resultados de al menos las siguientes operaciones realizadas en esta fase, ya sea en proyectos de cascada o en metodologías SCRUM / Sprint. 

Cualquier plan, diseño, ejecución y validación de pruebas integrales y pruebas automatizadas, son conceptos esenciales, dado que garantizan que la labor de prueba humana fue ejecutada correctamente, o bien ayuda a localizar errores a otro nivel.

Finalmente, nosotros recomendamos validar que el proveedor seleccionado cuente con un área o equipo de QA que se responsabilice de seguir una metodología para evitar que los errores aparezcan cuando el producto ya está en operación. 

Muchas veces, en este punto la corrección es mucho más costosa por el esfuerzo que representan los ajustes tanto en la parte operativa como en la parte de los datos.

 

Tecnologías Sin Comunidad

Las buenas tecnologías o herramientas siempre tienen su momento de despliegue, algunas se quedan y otras simplemente deciden pasar de moda. Es muy importante que al momento de que tu proveedor decida la herramienta o tecnología para la construcción de tu proyecto te lo comunique y te haga saber las razones por las cuales la ha seleccionado, tu labor es estar básicamente de acuerdo en costos que pueda generar por licenciamiento, soporte que el proveedor pueda ofrecer, aceptación de la misma, compatibilidades, etc.

Cuando entrevistamos a Matías Leguizamo de Rebanking, comentó lo siguiente en cuanto a la selección de tecnologías:

“Cuando al inicio de estos proyectos se quiere hacer todo, siempre lo seguro son tecnologías open source como Java. En este caso, Java es nuestra piedra angular, y por ahora el mayor jugo se le sacó a la parte de mobile. Tienen una buena comunidad y documentación para poder llevar a cabo el desarrollo con gente que conozca de esa tecnología. 

Dado que todo proyecto inicia como algo chico y termina siendo gigante, es necesario contar con el respaldo de la comunidad, ya sea con frameworks, librerías o herramientas, es fundamental tener un stack que te permita realizar un tracing. Por otra parte, hay una cuestión de madurez, prefiero ir hacia tecnologías de moda que tengan suficiente recorrido. Este tema es más que importante porque impacta de manera directa en la velocidad de desarrollo, dado que estamos en un ecosistema ágil, es necesario usar herramientas ágiles para tener más velocidad y más agilidad para encarar cambios. Para este aspecto, hacemos mucho A/B Testing desde el punto de vista técnico para tener feedback de usuarios y optimizar producción.”

Es importante documentar y comparar las tecnologías que propongas como cliente o bien que ellos como proveedores ya hayan previamente evaluado.

También es sumamente bueno ver la aceptación en el mercado y nivel de conocimiento, dado que esto indica la factibilidad de que más adelante puedas realizar ajustes o mejoras.