lunes, octubre 20, 2008

Desarrollo Agil (Agile Development)

Antes de darme cuenta que existía la filosofía de desarrollo Ágil, llegue a pensar que XP (Extreme Programming) era lo máximo y que ahí me tendría que conformar para siempre, con respecto a la experiencia de desarrollo de software en equipo... pero no, estaba equivocado.

¿Qué es el Desarrollo Ágil?
El desarrollo de software Ágil, se refiere a un grupo de metodologías de desarrollo de software que están basados en doce principios muy interesantes. Una metodología Ágil siempre promueve:
  • Un proceso de administración de proyectos que estimula la inspección frecuente y la adaptación del proyecto.
  • Una filosofía de liderazgo que estimula el trabajo en equipo, individuos organizados y algún tipo de medición en el trabajo.
  • Un conjunto de las mejores practicas de ingeniería, que permitan entregar software de alta calidad, y hacerlo rápidamente.
  • Un enfoque de negocios que alinea el desarrollo de software con las necesidades del cliente y los objetivos o metas de la compañía.
Una de las mas grandes frustraciones al desarrollar software es tener que trabajar en proyectos grandes y separarlos en pequeñas piezas. Usualmente en el principio, se comienza el proyecto con un gran impulso y entusiasmo, y muchas granas de programar. Eventualmente se llega a la mitad del proyecto, y con ella, algunas partes muy aburridas, y antes de que te des cuenta, te estas aburriendo.

"Ultimamente asi me siento al trabajar en un proyecto de software."

El aburrimiento viene de la mano con muchos "amigos"... pánico, desesperación; seguido de noches completas dedicadas al proyecto, a código desordenado, ganas de golpear gente, etc. En pocas palabras, a estas alturas, ya se tiene deseos de tirar el proyecto a la basura; o peor aún, terminarlo solo por salir del mismo. Es un circulo vicioso :P

Concepto de Ágil:
La idea es planear el desarrollo del software para número X determinado de semanas. Luego, separas ese tiempo en pequeñas secciones de tiempo antes de comenzar a programar, de esta forma es mas fácil responder ante las siempre cambiantes tecnologías o demandas del cliente. A la unión de semanas destinadas a resolver las diferentes partes del proyecto se le llama "iteración". Hacia el final de cada iteración, se procura obtener un producto que el equipo se ha comprometido a "entregar". Con tu equipo de desarrollo rompes el plan de tiempo en pequeños proyectos. Y luego personalmente (y si se puede: para cada desarrollador) se rompe el proyecto en tareas, que duran entre medio día y un tercio de día. También se trata de tener pequeñas reuniones diarias con todo el equipo para discutir como va el proyecto: adelantos, atrasos o si existe algo que entorpece el avance del mismo y merece ser eliminado, etc. Ágil se puede combinar con Scrum y XP, lo que nos da un sin fin de permutaciones para todos los gustos del equipo de desarrollo.

"¡El desarrollo Agil te hace 'ágil'!"

Beneficio:
Aparte de ordenar el proyecto y mejorar el control y fomentar la comunicación entre los miembros del equipo, Ágil ayuda psicologicamente al desarrollador a concentrarse en tareas especificas, es decir: una tarea que hacer hoy, no un sistema entero. Eso es lo bonito de Ágil me levanto, hago solo una cosa importante, y luego sigo con mi vida.
Cero estrés, 100% de eficiencia.
Mañana tendré algo más que hacer, otra tarea diferente, y ademas, mis compañeros de equipo me pueden ayudar al tener reuniones periódicas, etc... realmente es un alivio trabajar así en un equipo. Hablaremos de Ágil y mas beneficios y su filosofía y el manifiesto, más adelante, por el momento, me despido.

"La victoria espera en la punta de tus dedos."

¿Crees que podrías trabajar con la filosofía de Desarrollo Ágil?

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...