La opinión general sobre el sector TI es que es un mundo de maquinas, de códigos, de exactitud. Puedo decir que parcialmente estoy de acuerdo, pero los que trabajan en este microuniverso, saben que muchas veces las apariencias son…puras apariencias y que mantener este mundo controlado requiere mucho más que experiencia o esfuerzo. El sector TI necesita, quizás más que otros sectores, esta organización y disciplina tanto a nivel de proyecto como a nivel de empresa. Desgraciadamente estos conceptos existen solo a nivel teórico, porque es una realidad que en muchas empresas, los desarrolladores no tienen ni la menor idea cuales son los objetivos del proyecto en cual están involucrados.
Los métodos de trabajo (elegidos conscientemente o no) son imprescindibles aunque algunos empresarios “olviden” utilizarlos. ¿Os suena familiar?:
1. Método Ad hoc - ¿Por qué utilizar un método de trabajo específico? Tenemos bastante experiencia para realizar un proyecto sin ser necesario estudiar y documentarnos sobre lo que ya sabemos. Empezaremos el trabajo ya! Sin organizar el equipo, sin objetivos, sin fechas de entrega, sin formación (que más da, aprenderán ellos haciendo las cosas) todo en conformidad con el famoso “a ver que sale” (De todas maneras, esperemos no quebrar muy pronto, ahora con la crisis…)
2. El método propio de trabajo. Basándonos en la experiencia acumulada hasta el momento en la empresa y adoptando un modelo de “buenas practicas” de la industria, hemos creado nuestro propio método. Hacemos proyectos, todo va bien, así que no tiene sentido centrarse en un método específico para controlar la calidad o la productividad, ya que tenemos clientes y no se quejan (demasiado). (La crisis no nos afecta de momento, sin embargo, esperemos salir adelante con lo que tenemos).
La otra opción sería documentarse y utilizar métodos concretos de trabajo:
1. Metodologías de reglas fijas – En esta categoría entrarían el CMMI (Capability Maturity Model ® Integration) y la gestión de proyectos según la metodología clásica, metodologías con normas bien establecidas y rigurosamente documentados.
2. Metodologías ágiles (Metodología Ágile o ágiles de desarrollo de software). Respetan algunos principios básicos y favorecen una adaptación continua a las necesidades reales de la empresa de manera que se sigue una misma estrategia y se cumplen los objetivos.
Cada uno de estos métodos puede funcionar. Las principales diferencias se notan, a lo largo del tiempo, a nivel de productividad y finalidad. Un método o metodología es más exitosa en cuanto su repetibilidad es mayor. Las dificultades adicionales surgen porque cada empresa es diferente, y la misma metodología puede generar resultados muy diferentes. La cultura de la organización y las personas que participan en la ejecución del proyecto son factores esenciales para que un método de trabajo funcione o no.
Presentaré brevemente las principales metodologías de trabajo, como alternativas:
1. Métodos tradicionales de gestión de proyectos – Son métodos inspirados en la gestión de los proyectos de la producción industrial y su organización permite el desarrollo de software en etapas sucesivas: el análisis de las necesidades y la transformación de las mismas en requerimientos funcionales, el diseño, desarrollo de aplicaciones, pruebas y puesta en producción.
Con el tiempo se observó que el método tiene un gran inconveniente: la evolución de las necesidades después del período de análisis se traduce en costes adicionales muy grandes. Básicamente, cualquier cambio solicitado por el cliente para resolver los problemas funcionales o cualquier idea nueva, son muy costosas. Dado que el contexto actual es muy dinámico, no se puede adoptar siempre este método de trabajo.
2. CMMI - Capability Maturity Model ® Integration (CMMI ®) - es un método de trabajo en sí mismo, utilizado para mejorar tanto los procesos de trabajo y productos y servicios resultantes. CMMI para el Desarrollo se encuentra en la versión 1.2 (de agosto de 2006) y está formado por 22 áreas de proceso con 5 niveles de madurez. Cada área (por ejemplo: Seguimiento del Proyecto y Control), contiene una serie de requisitos que pueden ser cubiertos por: un método de trabajo interno de la compañía, un método inspirado del método tradicional o la clase de métodos ágiles.
La ventaja de CMMI es que ofrece una forma de trabajar basada en reglas claras, que dan la posibilidad de controlar y mejorar cada proceso mediante los indicadores de rendimiento, lo que lleva a resultados sostenibles.
La desventaja es el énfasis en el método de trabajo y tiempo invertido en el mantenimiento del proceso - en otras palabras, el trabajo necesario para implementar el propio método.
3. Ágile - a diferencia de CMMI o de los Métodos tradicionales de gestión,
En Agile la atención se centra en el trabajo en equipo. Hay varios métodos ágiles, los más conocido son el SCRUM (http://www.proyectosagiles.org/que-es-scrum) y XP (Extreme Programming - http://www.extremeprogramming.org/what.html). Ninguno de estos métodos no ofrecen una “receta” particular para la organización del equipo y del proyecto, pero respeta los principios Agile (http://agilemanifesto.org/). Con su adopción se intenta minimizar los riesgos y maximizar la productividad.
La ventaja de Ágile está dada por la obtención de un software muy funcional en una fase temprana del proceso de producción. Trabajando con repeticiones cortas, existe la posibilidad de corrección de los cambios según el contexto y en función de la información obtenida. Se obtienen muy buenos resultados tanto en el contexto dinámico, como en el caso que las necesidades son estables.
La desventaja de este enfoque es que requiere un cambio de mentalidad sobre la manera de trabajar tanto en equipo como a través de la organización. Cambiar las actitudes es muy difícil de conseguir, por esto es muy difícil adoptar la metodología Agile.
Metodología y métodos de trabajo. ¿Qué elegir?
“There is no silver bullet”, (”No hay ninguna bala de plata”) como decía Frederick Brooks en 1986. Todos los métodos de trabajo tienen ventajas y desventajas. No se ha encontrado una receta para el éxito, válida y útil en cualquier situación. Sin embargo, para un proyecto específico en una situación determinada, seguramente podemos analizar y decidir acerca de una decisión informada sobre el método de trabajo que lleva la mayor parte de los beneficios. Sabemos lo que hay y lo que se debe evitar en su uso. Uno no tiene una panacea universal, pero se pueden obtener buenos resultados repetibles, eligiendo un método adecuado para nuestro contexto, y teniendo en cuenta que para tener éxito en proyectos de software se debe hacer más que seguir una receta “exitosa”. Finalizando con esto os deseo “Happy learning”, (¡Feliz aprendizaje! :)).
Mis saludos,
Simona Adriana Toma