El desarrollo de software ha venido marcado por la traslación de la gestión de proyectos industriales a los proyectos de creación de software. La situación creada casi siempre ha sido deficitaria en términos de satisfacción del cliente y de los desarrolladores. Realmente la fama nos precede y, o esperas algún retraso o problema en la funcionalidad, o crees que la estimación se ha cubierto demasiado las espaldas. Últimamente mi percepción, puramente subjetiva, de muchos profesionales del sector es que se les ha quemado demasiado pronto, y que hablan de su trabajo con verdadera apatía.
Veamos dónde se encuentra el software en su situación actual. Eli Goldratt habla de tres fases en el desarrollo científico. ¿podríamos situar la ingeniería del software en alguna de ellas? La primera fase es la Clasificación donde se busca una nomenclatura y se decide qué es lo que se somete a estudio y debate. En los inicios del desarrollo de software se optó por trasladar las técnicas clásicas de gestión de proyectos, antes de tener claro si eran aplicables o no. Ciertamente funcionan en un porcentaje de proyectos, pero otros caminos siguieron adelante bajo otros enfoques.
La segunda fase es la Correlación, donde existen evidencias de que un método funciona en la práctica. Seguramente podamos tener evidencias de que tanto metodologías tradicionales como ágiles pueden funcionar, pero hay que ver el origen de cada una para entender cual es la más cercana a la realidad del desarrollo.
La tercera fase es Efecto-Causa-Efecto, a la que se llega cuando se puede determinar con exactitud qué efectos son producidos por qué causas. Esto únicamente se puede saber prediciendo una teoría, comprobando el efecto y validando sus resultados. Si las implantaciones de CMMI-5 (por poner un ejemplo de certificación con una metodología subyacente generalmente más tradicional) hubiesen logrado hacer esto, ya tendríamos el problema resuelto, puesto que entonces sabríamos como desarrollar software correctamente con total certeza. Debemos dar ahora una oportunidad a las metodologías ágiles que se encuentran en fase de Correlación, para poder discernir si sus causas-efectos predicen con mayor exactitud los cambios en la evolución del software. Apuesto a que sí. Certificaciones como CMMI son compatibles con las metodologías ágiles, de hecho, éstas son probablemente una mejor base para lograrlas.
La popularización de esta movida ágil se encuentra en el manifiesto, creado por algunos de los gurús en el mundo del software, como Martin Fowler o Alistair Cockburn, y firmada por miles de personas como yo mismo:
Individuos e interacciones sobre procesos y herramientas
Software que funciona sobre documentación exhaustiva
Colaboración con el cliente sobre negociación de contratos
Responder ante el cambio sobre seguimiento de un plan
Esto es, aunque los elementos a la derecha tienen valor, nosotros valoramos por encima de ellos los que están a la izquierda.
¿Qué implican estas valoraciones? Para mi personalmente implican principalmente una cosa: confianza. El cambio de cultura en la aplicación de estos principios puede ser bastante importante, y el paso de un modelo basado en el control a uno basado en la colaboración es precisamente la llave del éxito.
Actualmente existen varias metodologías ágiles especificadas, y realmente alguna de ellas mucho anterior al manifiesto que ahora les ha dado fama. La más conocida, y que más se está expandiendo es probablemente Scrum. Es una metodología que únicamente trata la parte de gestión de proyectos, aparentemente sencilla, pero que recoge muy acertadamente los valores ágiles. Otra es Xtreme Programming (XP) , más centrada en los procesos ingenieriles de la programación, que ha hecho muy populares técnicas como el Test Driven Development, la Integración Continua o la Refactorización . Existen otras como FDD o EVO, más centradas en el valor de negocio ofrecido al cliente y su visión de negocio.
Básicamente todas intentan proporcionar valor al cliente de manera continua y temprana. Eliminan las grandes fases de análisis y concepción del proyecto, para poder ofrecer un producto funcional evolucionable a lo largo del tiempo, con entregas muy tempranas, que ayudan a discernir correctamente los requerimientos antes de que los cambios supongan problemas imposibles de solucionar en un tiempo razonable. La colaboración con el cliente elimina barreras de comunicación en este juego cooperativo del desarrollo. Bienvenidos a una nueva manera de crear software, donde el cliente y sus necesidades son el centro de los objetivos de los esfuerzos comunes de los desarrolladores.
En España llevamos un importante retraso con la utilización de estas metodologías, pero estamos ante una oportunidad única. La crisis requiere que los profesionales de la informática seamos capaces de aportar más valor a nuestro trabajo. La comunidad Agile-Spain que se acaba de relanzar hace unos pocos meses intenta difundir estas prácticas y convertirse en un lugar de encuentro donde los profesionales podamos discutir y aprender de estos temas. Dentro de ella tenemos muchas iniciativas preparadas que esperamos salgan a la luz pronto. Te invitamos a visitar nuestra web.
José Ramón Díaz es responsable de proyectos de desarrollo de software
Es autor del blog http://najaraba.blogspot.com/