Introduciéndonos en el Desarrollo Ágil de Software

Empezamos a hablaros sobre el desarrollo ágil de proyectos: Explicación de las metodologías de gestión de proyectos y en concreto del enfoque conocido como Agile.

¿Qué es el desarrollo ágil de software?

Así como existen métodos de gestión de proyectos tradicionales, como el propuesto por el Project Management Institute(R) más conocido como PMI(R) podemos encontrarnos con una rama diferente en la gestión de proyectos, conocida como Agile. El desarrollo ágil de software, no es más que una metodlogía de gestión adaptativa, que te permite llevar a cabo, proyectos de desarrollo de software, adaptándote a los cambios y evolucionando en forma conjunta con el software.

Un pantallazo general sobre la gestión de proyectos

Vayamos a lo básico primero... ¿para qué sirve implementar una metodología de gestión de proyectos? ¡Para garantizar infinidad de resultados! Pero te nombraré el más básico y fundamental: para organizar mejor tu proyecto y obtener un mejor resultado del software entregado a tu cliente.

Ahora bien, ¿en qué consiste una metodología de gestión de proyectos? Básicamente, consiste en la convención de prácticas, métodos, principios, técnicas y herramientas cuya principal utilidad es la de otorgar un mejor rendimiento del equipo de trabajo y por sobre todo, permitir la obtención de mejores resultados en lo que se produce durante el proyecto (en nuestro caso: software).

Y entonces ¿existen solo dos formas de gestionar un proyecto? NO. Si bien las metodologías de gestión, podrían resumirse en solo dos enfoques (o tendencias): el enfoque ágil (que abordaremos aquí) y el enfoque predictivo (o tradicional, sobre el cual, no entraremos en detalles), cada una de estos enfoques, presenta diversa variedad de metodlogías que pueden aplicarse.

En lo que respecta al enfoque ágil, existen (he perdido la cuenta) cuantiosas metodlogías, de las cuales, las más utilizadas y estadísticamente con mejores resultados son Scrum (se pronuncia "scram"), Kanban (se pronuncia tal cual se escribe) y eXtreme Programming, más conocida como XP (se pronuncia por sus siglas en inglés "ex-pi").

Y ¿cuál es la diferencia entre los enfoques ágiles y predictivos?

Los enfoques ágiles se diferencian (y también guardan ciertos aspectos en común) de los predictivos, básicamente por la forma de abordaje de un proyecto.

El enfoque predictivo, es aquel que plantea el abordaje estricto de un proyecto, sobre la base del cumplimiento de tres aspectos predefinidos al comienzo del proyecto: alcance, costo y tiempo; mientras tanto, el enfoque ágil, plantea los proyectos desde el cumplimiento de un objetivo más amplio: entregar software con el mayor valor posible. Esto, puede explicarse sino, comentando que la principal diferencia es que el enfoque predictivo, propone la definición detallada del alcance del proyecto, y la estipulación precisa de tiempo y costo, mientras que el enfoque ágil, plantea la definición de un alcanse global al comienzo, para luego ir incrementándolo en las diversas iteraciones (cada una de las cuales, supone la entrega de un software 100% funcional).

Entendiendo el concepto de agilismo

El agilismo se base en 4 valores y 12 principios, que se desprenden del Manifiesto Ágil. Puede sintetizarse este concepto, comprendiendo los cuatro valores del Manifiesto:
  • Individuos e interacciones sobre procesos y herramientas
  • Software funcionando sobre documentación extensiva
  • Colaboración con el cliente sobre negociación contractual
  • Respuesta ante el cambio sobre seguir un plan
Individuos e iteraciones sobre procesos y herramientas
Las metodologías predictivas se basan en una serie de procesos y herramientas, tendientes a abarcar de manera exhaustiva, diversas áreas de conocimiento y su correspondiente predicción, es decir, como serán gestionadas. Esto, lleva a que no sea tan importante la calidad de los profesionales que ejecutarán el proyecto (desarrolladores, arquitectos, diseñadores, etc.), puesto que el enfoque predictivo plantea, entre otras, un exhaustivo proceso de monitoreo y control. El agilismo, por el contrario, propone la autogestión de los equipos de desarrollo, cuyos integrantes, estarán a cargo de decidir cómo se desarrollarán las funcionalidades solicitadas por el cliente en períodos de entre 2 a 4 semanas, de forma iterativa. Esto, supone implícitamente, priorizar la calidad de los profesionales, y a ello se refiere el manifiesto con individuos e iteraciones sobre los procesos y herramientas propuestos en los enfoques predictivos.

Software funcionando sobre documentación extensiva
Mientras que las metodologías predictivas se inician planificando en detalle cada una de las etapas del proyecto, lo cual requiere una extensa documentación, el agilismo prefiere lograr la entrega de software 100% funcional en cada iteración.

Colaboración con el cliente sobre negociación contractual
Un valor fundamental en el agilismo, es la participación activa del cliente en el proyecto en contacto con desarrolladores. Esto marca una diferencia sustancial con el enfoque predictivo, puesto que entre cliente y desarrollador, no existen intermediarios al momento de definir las funcionalidades del software en cada iteración.

Respuesta ante el cambio sobre seguir un plan
Si bien el enfoque predicto, "predice" como se debe actuar ante una solicitud de cambio en los requerimientos, los cambios no suelen ser lo más frecuente, sino que por el contrario, lo es el seguir detalladamente el plan de alcance. Esto conlleva a que muchas veces, el software finalmente entregado, incluso cuando las funcionalidades requeridas se hayan cumplimentado según lo pactado, al utilizarlas , el cliente y/o usuario final, se da cuenta de que no es precisamente lo que se esperaba. El agilismo se encuentra abierto al cambio de requerimientos y prioridades. Se adapta. Participando al cliente del desarrollo, sumado a las entregas parciales 100% funcionales, los requerimientos van cambiando sobre la marcha, a medida que lo entregado se va utilizando, a fin de sumar valor al producto.

En un próximo artículo, veremos más de lleno el desarrollo ágil introduciéndonos en, Scrum.
¡Éxitos!

Autor

Eugenia Bahit

Analista Programadora LAMP y Scrum Coach

Compartir

Comentarios

Juan

25/8/2011
Libros recomendados
Es una muy buena metodologia sobre todo si queres aprender a la par alguna tecnologia de desarrollo (java php .net, etc). Dos aspectos que considero quizas las mas importantes son las pruebas automatizadas y la integracion continua, para las pruebas automatizadas analizar que herramientas existen para tu lenguaje, como puede ser JUnit-Mockito-Twip (son simples y faciles de usar) en java para las pruebas y un repositorio SVN es muy util sino indispensable.
Dos libros que lei y recomiendo:
-Aceptar el Cambio
-XP explored
ambos de kent beck, el primero es mas teorico y explica de que se trata la metodologia el segundo sigue un ejemplo practico para demostrar la metodologia

eugeniabahit

28/8/2011
Bibliografía
Para quienes deseen introducirse más a fondo en las metodologías ágiles, también pueden ir leyendo dos excelentes libros (ambos en español):

The Scrum Primer:
http://scrumfoundation.com/library

Scrum y XP desde las Trincheras:
http://www.infoq.com/minibooks/scrum-xp-from-the-trenches

gustavo_carrillo-637788

17/9/2011
Solo 1 persona!
Buenos dias, los felicito por su empeño en toda la informacion q nos brindan y muchas gracias!

Les cuento q ahora me toca hacer tesis (trabajo de grado) y tengo pensado desarrollar software pero no cuento con un grupo de desarrolladores. En mi caso mi "grupo" sere yo y solo yo... Puede una sola persona poner en practica una de estas metodologias y todo lo que estas implican?

jeffsantillan

05/11/2012
Me Gusto
Me agrado mucho este primer articulo, continuo por Scrum y te dejo mi puntaje.