¿Qué es Agile? Abandona el lado oscuro

Últimamente se está convirtiendo en la palabra de moda, no paras de leer y escuchar en cualquier parte cosas como: ‘Somos agile’, ‘Mi empresa es agile’, ‘Nos estamos transformando a Agile’ o ‘En mi equipo usamos agile’. Pero ¿realmente sabemos qué es agile?, ¿es algo útil o solo se ha convertido en la nueva tendencia?

 

Definición de agile

Agile es una cultura que nace como respuesta a los problemas históricos en el desarrollo de software. La solución tradicional se basaba en el análisis, definición de requisitos detallados, valoración completa y estimación del proyecto antes del inicio del mismo. Aquí encontramos el principal problema: los requisitos pueden cambiar, las estimaciones a largo plazo se tambalean y los plazos de entrega no se cumplen.

Con la mentalidad agile se abraza el cambio y la incertidumbre, el proceso se adapta, se centra todo en la entrega continua de valor de forma iterativa e incremental pero siento decepcionaros, solo con tener sprints no seremos agile. Agile es una filosofía de desarrollo de software, una forma de entender la entrega de valor.

que-es-agile

Imagen realizada por @katemangostar 

 

Manifiesto ágil (Agile Manifesto)

Se estaban descubriendo formas mejores de desarrollar software y fue en 2001 cuando un grupo de personas relevantes en la comunidad del desarrollo de software (Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland y Dave Thomas) se reunieron y dieron forma a esta nueva mentalidad con el manifiesto ágil. El manifiesto ágil se convirtió en la piedra angular del desarrollo ágil de software. En él se dio valor a cuatro puntos esenciales:

  • Los individuos y sus interacciones son más importantes que los procesos y herramientas.

  • El software funcionando correctamente está por encima de una documentación extensa.

  • La colaboración con el cliente tiene mayor beneficio que una negociación contractual.

  • Se debe responder ante el cambio en lugar de cerrarse en seguir un plan.

Los 12 principios del manifiesto ágil

En el manifiesto también se exponen 12 principios por los que se rige agile:

  1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.

  2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.

  3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.

  4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.

  5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.

  6. El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.

  7. El software funcionando es la medida principal de progreso.

  8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.

  9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.

  10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.

  11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.

  12. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.

 

waterfall-vs-agile

Leyes de Agile

Cuando leí The age of Agile de Stephen Denning me llamó la atención cuando habla de ‘More value from less work’. En el libro incitaba a preguntarse si una funcionalidad debería existir, obtener esa respuesta con métricas y feedback del usuario y proclama que toda organización que abraza la agilidad debe tener 3 características o leyes.

La ley de equipo pequeño

Tener una mentalidad para trabajar en equipos pequeños, autónomos, multifuncionales trabajando en ciclos pequeños en tareas relativamente pequeñas. Los problemas grandes y complejos pueden resolverse dividiéndolos en piezas más pequeñas y manejables. Los equipos deben basarse en la confianza entre sus miembros y esa confianza será premiada con buen rendimiento.

La ley del cliente

Esta ley está basada en el primer principio del Manifiesto ágil. La mayor prioridad es satisfacer los deseos del usuario lo más pronto posible, con entregas continuas de software de calidad y valor. La organización debe ajustar todo (metas, procesos, valores, prácticas…) para generar entregas de valor continuas y eliminar todo lo que no contribuya a ello.

La ley de la red

La organización debe ser una red fluida y transparente de jugadores que colaboran unidos con un objetivo común: deleitar a los clientes. Esta transparencia debe ser radical, no hay ningún sitio en el que esconderse, todo el mundo conoce todo.

 

Estas tres leyes que defienden que pequeños equipos trabajando en tareas pequeñas, en ciclos iterativos cortos entregando valor de forma continua a los usuarios, coordinados en una sola red transparente, son las que han hecho posibles que productos como Spotify alcancen más de 100 millones de usuarios cada semana.

 

 

Marcos de trabajo ágiles

Ahora vamos a hablar brevemente de algunos marcos de trabajo (aka frameworks) ágiles. Tienen características comunes como la colaboración entre personas, construir de forma incremental y la sencillez pero con aspectos que los hacen diferentes. Cada uno de ellos se debe elegir según la adaptación a la situación o naturaleza de nuestro proyecto o producto.

Extreme programming (XP)

Extreme programming (XP) es una metodología de desarrollo de software que se enfoca en entregar el software funcionando en plazos cortos y en mejorar continuamente el proceso de desarrollo. XP se basa en una serie de principios y prácticas que buscan hacer que el desarrollo de software sea más ágil y adaptable a cambios. Estas prácticas incluyen la programación en pares, la comunicación constante entre los miembros del equipo, la retroalimentación continua y la simplicidad en el diseño y en la implementación del software.

Scrum

Scrum es el marco de trabajo ágil más usado y más adecuado para introducirse en el mundo ágil por tener procesos y técnicas muy definidas y fáciles de entender (aunque difícil de dominar). Se basa en equipos multifuncionales y auto gestionados que brindan valor a la organización y a los clientes en iteraciones entre una y cuatro semanas llamadas sprints. Orientado en un enfoque empírico impulsado por el feedback y respaldado por los tres pilares de transparencia, inspección y adaptación.

pilares-de-scrum

Kanban

Método ágil para el desarrollo de software, manufactura Lean o incluso sistemas de control de inventario para de una cadena de suministro. Kanban es una palabra de origen japonés que significa ‘tarjetas visibles’ de ahí proviene uno de los principales beneficios: la visibilidad del flujo de trabajo. Acompañando esta visibilidad con límites en el trabajo en proceso se evitan posibles cuellos de botella haciendo a Kanban un marco de trabajo perfecto para entornos muy cambiantes o para equipos de resolución de incidencias.

Hemos podido ver que Agile es una mentalidad que nace como respuesta a unos problemas existentes en el mundo del desarrollo, que tiene unos fuertes valores y principios, que pone foco en las personas y el valor de entrega al usuario y que ha generado métodos ágiles que se adaptan a cada situación de nuestro producto. Con todo lo leído, ¿cuál sería vuestra respuesta a la pregunta de si Agile es útil?

[Total: 1   Promedio: 4/5]

Deja un comentario