Llegamos a ustedes gracias a:



Columnas de opinión

Evaluación del software Agile para desarrollo de programas

Por: Sue McKinney, vicepresidente desarrollo, transformación e integración de IBM

[26/05/2009] Probablemente no se haya dado cuenta, pero lo cierto es que detrás de los aspectos más cruciales de nuestra vida cotidiana suele ocultarse algún tipo de software; desde el cajero automático donde retiramos dinero, hasta las tarjetas que nos entregan los supermercados y otros negocios para acumular puntos y ganar descuentos. Por lo tanto, proveer software de alta calidad de manera eficiente es indispensable para el negocio de todas las industrias, y muy especialmente para los usuarios finales. Los ciclos de producción de 18 meses ya pasaron a la historia, y los negocios buscan ahora nuevas formas de reaccionar más ágilmente y adaptarse con mayor velocidad a las cambiantes demandas del mercado.

Pese a la exigencia de programas de desarrollo de software eficiente, buena parte de los proyectos de desarrollo que se ejecutan actualmente todavía funcionan y dependen de una metodología tradicional, que les exige definir todos los requerimientos desde el principio dejando muy pocas, o ninguna, posibilidades de cambio. El problema con este enfoque es que la mayoría de los involucrados no son precisamente adeptos de definir sus necesidades. Si combinamos esta situación con el dinámico ritmo de los avances tecnológicos, el resultado es desalentador. La firma estadounidense de investigación Standish Group descubrió que 90% de los proyectos de software se completan tardíamente, 66% se consideran fracasos y un 30% son reformulados.
Como quizá ya sabe, Agile development (*) es una metodología de proceso que permite a las compañías despachar software más rápidamente. Es un método gradual y colaborativo, orientado a producir software de alta calidad con eficiencia en costos y en los plazos adecuados.
En un inicio, las aplicaciones en que podía utilizarse Agile eran más pequeñas en alcance y generalmente estaban restringidas a los negocios. Actualmente, el panorama ha cambiado de manera significativa. Dado el interés de las compañías por aplicar este tipo de desarrollo a un espectro más amplio de proyectos, Agile debe adaptarse para lidiar con las diferentes complejidades técnicas, organizativas y de negocios que enfrentan en nuestros días las empresas de desarrollo de software.
Para analizar adecuadamente el costo de una transición a Agile, es importante sopesar costos contra beneficios, teniendo en cuenta al mismo tiempo cualquier reducción en los riesgos de desarrollo. Por ejemplo, adoptar la metodología Agile implica cambiar la manera en que los ingenieros invierten su tiempo, así como la forma en que asumen todas las actividades de desarrollo de software. A continuación he resaltado algunos puntos para explicar por qué el cambio de percepción es tan grande:
    * Personas e interacciones (en lugar de procesos y herramientas)
    * Software de trabajo (en vez de documentación exhaustiva)
    * Colaboración del cliente (y ya no negociación de contratos)
    * Reaccionar al cambio (en vez de seguir un plan)
También hay que considerar el papel que jugaremos como directores. La mayoría de managers de programas Agile y de lean development tienen  un estilo que podríamos llamar manos a la obra: permiten que los miembros del equipo se encarguen de aspectos específicos de cada proyecto con la intención de favorecer el tipo de ambiente que se necesita para habilitar una transición exitosa hacia Agile y lean development.
Agile incrementa la eficiencia de entrega de software del equipo de trabajo, lo cual a su vez se refleja en la satisfacción del cliente y en los ingresos. En general, la eficiencia consiste en eliminar de una actividad particular todo aquello que está de más, ya sea que tenga o no repercusión en el objetivo principal. Sin embargo, esta eficiencia no garantiza que hagamos las cosas correctas, ni que las hagamos en el orden apropiado. La eficiencia, por lo tanto, es mayor y más importante en la medida en que sugiere que hemos alcanzado una meta.
Entre los principios más importantes del desarrollo mediante Agile se incluye la participación del cliente en el proceso y, como ya mencionamos anteriormente, la colaboración constante del equipo. Los participantes se retroalimentan del código de trabajo y, del mismo modo, el desarrollo dirigido a pruebas es esencial para llevar a cabo un proyecto exitoso. Para los proyectos Agile no solo es importante que los participantes -de los equipos de negocios, operaciones y soporte- se involucren desde el primer momento, sino también que lo hagan de manera permanente: poniendo a prueba las iniciativas, interviniendo activamente en el modelamiento y, en ocasiones, incluso en el desarrollo. Este nivel de implicación les permite conocer los mecanismos profundos del esfuerzo de desarrollo de software y, del mismo modo, motiva a los desarrolladores a concentrarse en las prioridades de los demás involucrados, en vez de imponer sus prioridades personales (que no necesariamente favorecerán el uso del producto).
Estas pautas son la base para que una compañía pueda reaccionar rápidamente al cambio. Por ejemplo, si usamos Scrum (un método de Agile que toma su nombre de un juego de rugby), hay que tener un "scrum" diario (o una reunión) con todos los participantes. Cada día, los desarrolladores contestan a tres preguntas:
1. ¿Qué han hecho desde ayer?
2. ¿Cuáles son sus planes para mañana?
3. ¿Ha surgido algún problema que les impida alcanzar el objetivo?
Gracias a esta reunión diaria, cada uno asume la responsabilidad por lo que hace, y los demás miembros del equipo pueden detectar los errores y las incompatibilidades antes de que se conviertan en un verdadero problema. Asimismo, garantiza que los participantes responderán adecuadamente si surge una emergencia.
Quienes critican Agile Development por indisciplinado, están siendo muy injustos. La comunicación y la disciplina son dos componentes fundamentales del desarrollo Agile. El principal motivador de disciplina de Agile es la entrega constante de software eficiente. Mientras más corto sea el ciclo, mayor será la disciplina necesaria para alcanzar el objetivo, por ejemplo: tener que proveer un valor de negocio concreto y apreciable traducido en un software eficiente para cada ocasión.
Mientras continúa el debate sobre la disciplina en el desarrollo de software, nos queda al menos una certeza: el interés en Agile y lean development va en aumento. Solo en IBM, durante los últimos dos años, la cantidad de proyectos Agile subió de cinco a 200.
Sue McKinney es vicepresidente desarrollo, transformación e integración de IBM. Actualmente, está a cargo de las actividades de desarrollo transformacional con el grupo de software de IBM. Su principal tarea es dirigir la adopción de los principios Agile y lean al entorno de desarrollo de software. También trabaja con clientes importantes para compartir la experiencia de IBM y ayudarlos a identificar oportunidades para sus propias actividades transformacionales.
CIO (USA)