Construyendo los fundamentos para el desarrollo ágil
Construyendo los fundamentos para el desarrollo ágil
Esta es una traducción del post Building a Foundation for Agile (To Enable Rapid Change) » SEI Blog por Stephany Bellomo, Senior Member of the Technical Staff, Acquisition Support Program.
-------------------------------------------------------------------------------------------------
Este es un segundo post de una serie acerca de el desarrollo ágil de software. En el primer post titulado "¿Qué es el desarrollo ágil?" damos un vistazo rápido de los elementos clave del enfoque Agile, así también presentamos el Manifiesto Ágil. Uno de los principios guía de el manifiesto enfatiza el valorar a la gente antes que a los procesos de desarrollo. Mientras el manifiesto claramente alude al hecho de que enfocarse demasiado en el proceso (y no en los resultados) puede ser algo negativo, nosotros presentamos la noción aquí de que el extremo opuesto del espectro puede tambien ser negativo. Este artículo explora el nivel de habilidad que es necesario tener para desarrollar software utilizando Agile (¿necesitas menos o más destreza?), así como la importancia de mantener una competencia sólida en un conjunto básico de los procesos de ingeniería de software.
Cuando se aplica de manera apropiada y en el contexto correcto, Agile puede acelerar la entrega de software valioso de una gran capacidad. El reto es que Agile es también visto por algunos como una oportunidad para dejar de hacer las cosas que a ellos no les gusta hacer. Por ejemplo, al entrevistar a los representativos de una compañía multimillonaria de Internet que se reusa a utilizar Agile, dijeron que se dieron muchos casos donde los programadores utilizaban Agile como una excusa para evitar seguir los pasos del proceso de desarrollo de software que no les gustaban o para los cuales no tenían las habilidades suficientes para hacerlo bien. No solo estos atajos hacen que Agile se vea mal como un enfoque de desarrollo, sino también cuando la aplicación a medias de los métodos ágiles genera software de poca calidad, daña otros proyectos que quieren seguir los métodos ágiles de manera apropiada.
Los proyectos Agile exitosos requieren programadores con habilidades de ingeniería de software por arriba del promedio y un proceso riguroso del conjunto básico de los procesos de ingeniería de software. La razón por la que es necesario reforzar las habilidades (no en todos los procesos, solo en el conjunto de procesos básico) es que cuando se está bajo mucho estrés en un ambiente de ritmo rápido con muchos cambios es crítico tener prácticas de ingeniería arraigadas de manera sólida y habitual. De lo contrario, cuando el ambiente cambiante parece tomar control de la situación las cosas tienden a salirse de control terminando en el caos total.
Aquí hay una analogía. Decidí aprender a ser una buena nadadora en una etapa tardía de mi vida (cuando estaba en los 40). Rápidamente aprendí que la natación es pura técnica. Inicialmente, traté de nadar rápido con una mala técnica y terminé agitada sin llegar a ninguna parte. Lo mismo se aplica con Agile. Cuando los procesos clave de ingeniería no son habituales en combinación con situaciones estresantes - como requerimientos que cambian de manera rápida - las cosas pueden desmoronarse rápidamente y se terminará desarrollando de manera rápida un software muy malo.
Así que, ¿cómo se puede aplicar de manera exitosa el nivel correcto de disciplina en los procesos? El truco está en identificar y enfocarse en un subconjunto de los procesos clave que son críticos para activar el cambio, en lugar de tratar todos los procesos de software por igual. Con base en los proyectos ágiles en que nos hemos enrolado en el SEI, algunos procesos clave que he identificado como esenciales para el enfoque Agile de desarrollo incremental incluyen:
- Administración de la configuración
- Capacidad de planeación
- Administración de requerimientos
- Pruebas
- Análisis de la arquitectura.
El SEI ha iniciado recientemente una investigación enfocada en Agile para proveer una guía para programas DoD (Departamento de Defensa). Esta investigación utilizará los resultados de los programas para el DoD que utilizan métodos ágiles para desarrollar un modelo - Modelo Ágil de Contingencia - para determinar cuándo Agile puede ser una buena opción para un proyecto del DoD. A esto se añade, que el equipo de investigación desarrollará una guía para aplicar los métodos ágiles al desarrollo de software en el contexto del DoD. El Modelo Ágil de Contingencia, en mancuerna con la Guía Ágil DoD, dará a los administradores de programas del gobierno un conjunto de guías para utilizarlas cuando consideren que Agile puede ser utilizado en sus proyectos y, si deciden utilizar Agile, para aplicar los métodos Agile en los programas del DoD.
-------------------------------------------------------------------------------------------------
Comentarios
Publicar un comentario