Metodologías ágiles: Introduccion

Ser ágil significa moverse con flexibilidad, soltura y rapidez. Nos enfrentamos a un mercado cambiante y cada vez más exigente, donde los clientes tienen cada vez más opciones disponibles, por lo cual las empresas tienen que tener agilidad para no perder competitividad, cambiar y adaptarse con velocidad. En mercados de evolución rápida, se necesitan estrategias flexibles para el lanzamiento de productos orientados a la entrega temprana de resultados.

Estas son algunas de las razones por las que las empresas están, cada vez más, abandonando las viejas culturas y técnicas de gestión de proyectos.

Cuáles son las raíces de los principios ágiles?

Las prácticas ágiles tuvieron sus comienzos con los sistemas de producción japoneses, como el Toyota System Production, poniendo al producto (entregable) en el centro de la escena. Hacían mucho hincapié en la interacción entre personas, englobando frameworks simples y ligeros para permitir la innovación, el cual es uno de los factores clave para lograr competitividad.

El agilísimo ataca la complejidad, es decir, a todo aquello que no contribuye a la satisfacción del cliente, ni con el producto, y por ende no sirve para el negocio. Presenta valores como transparencia, simplicidad, alta visibilidad y respeto.

El Manifiesto ágil

El manifiesto ágil surgió desde y para la industria del software como una alternativa a los métodos formales imperantes rígidos por su carácter normativo.

Principales conceptos

Conocimiento de las personas por sobre los procesos
Software / Producto funcionando por sobre documentación exhaustiva
Colaboración con el cliente por sobre negociación de contratos
Predisposición y respuesta al cambio por sobre apego a un plan

De los 4 postulados, se derivan los siguientes principios:

  • Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software/entregable con valor.
  • Aceptamos que los requisitos cambien, incluso en etapas avanzadas del desarrollo.
  • Entregamos software/producto funcional frecuentemente entre 2 y 4 semanas.
  • Responsables de negocio y equipo trabajamos juntos, de forma cotidiana, durante todo el proyecto.
  • 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.
  • El método más eficiente y efectivo de comunicar, al equipo y a sus miembros, es la conversación cara a cara.
  • El software/producto funcionando es la medida principal de progreso.
  • Los procesos ágiles promueven el desarrollo sostenible. Desarrolladores y usuarios deben ser capaces de mantener un ritmo constante de forma indefinida.
  • La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
  • La simplicidad es esencial.
  • Las mejores arquitecturas y diseños emergen de equipos auto-organizados o dirigidos.
  • A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo, para ajustar y perfeccionar su comportamiento, tendiendo de esta manera a la mejora continua.

Metodologías ágiles

En general, las metodologías ágiles de gestión de proyectos son sumamente adaptativas. Priorizan los requerimientos para comenzar por lo más importante. Desarrollan el producto de manera iterativa e incremental (aunque también los hay de incremento continuo, tipo Kanban), consiguiendo funcionalidades terminadas en lugar de ir avanzando en todo a la vez.

La idea principal es poder generar pequeñas iteraciones o esfuerzos de desarrollo/construcción trabajando de forma incremental entre una iteración y otra, generando que los productos evolucionen, al igual que los requerimientos, en función de la demanda de los clientes, integrándolos y comprometiéndolos en todo el ciclo de vida de cada entregable. De ésta forma se logra solucionar uno de los vicios de desarrollo tradicionales, en los cuales el usuario interviene solamente al inicio y al final.

El concepto iterativo incremental

De todo lo que se quiere hacer, qué puedo entregar en una semana, en 15 días o en un mes y que le sirva a la empresa para producir valor. No un prototipo.

Las metodologías ágiles…

  • Realizan revisiones frecuentes, por lo que suelen tener mayor calidad. El testing se repite asiduamente.
  • Los issues más críticos son hallados en forma más temprana.
  • Embeben en el proceso de desarrollo la solución de los problemas detectados sobre la marcha.
  • A nivel de gestión, priorizan el control del esfuerzo que falta por hacer, y no tanto del que se lleva hecho.

Algunas de las metodologías ágiles de desarrollo de software más comunes:

Metodología Ágil Scrum

Scrum es la metodología ágil más extendida de todas, la cual trasciende las fronteras de la industria del software, siendo utilizada en otros ámbitos de negocios.

Establece 3 roles principales, Product owner, el cual representa la figura e intereses del cliente; Scrum Master, encargado de fomentar e instruir sobre los principios ágiles de Scrum; Y el Equipo o Scrum Team, multidisciplinario, integrado por programadores, diseñadores, arquitectos, y testers, que en forma auto-organizada, serán los encargados de desarrollar el producto.

El trabajo se realiza a través de iteraciones (de 2 a 4 semanas) llamados Sprints, y el resultado de cada uno (incremento), es un producto potencialmente productivo (lanzable al mercado).

La metodología Scrum sale del modelo de comunicación basada en documentos. Uno de sus elementos principales es el Product backlog, el cual constituye una lista de requerimientos priorizada por criterio del negocio (Comúnmente basada en el ROI). Lo desatacado en Scrum es que éste backlog es un elemento vivo en constante evolución, al cual se le pueden añadir o quitar Historias de usuario (requerimientos), o reorganizar las existentes según la necesidad del negocio, aun en etapas avanzadas del proyecto.

desarrollo scrum

 

Scrum mueve a los equipos del modelo centrado en el proyecto hacia un modelo de desarrollo continuo de producto.

Mediante daily meetings, el equipo autogestiona el estado y avance de cada uno de los sprints. Los mismos son reuniones diarias que pueden durar entre 10 y 15 minutos como máximo, y en la cual cada integrante deberá responder 3 preguntas: Qué ha hecho ayer, Qué hará hoy, y si tiene algún impedimento o inconveniente que no le permite avanzar.

Al finalizar cada uno de los sprints, el equipo presenta una Demo de lo desarrollado al usuario/cliente para que éste pueda realizar una Revisión y aprobar el mismo o realizar los comentarios que se debieran ajustar o modificar para el próximo Sprint.

El equipo a su vez realiza una reunión de Retrospectiva, con el objetivo de mejorar de manera continua su productividad y la calidad del producto que está desarrollando. Básicamente en esta reunión el equipo analiza cómo ha sido su manera de trabajar durante la iteración, por qué está consiguiendo o no los objetivos a los cuales se comprometió al inicio del Sprint y por qué el incremento de producto que acaba de demostrar al cliente era lo que él esperaba o no.

Conclusión

Las metodologías ágiles se caracterizan principalmente por su sencillez, tanto en el aprendizaje de las mismas como en su uso, permitiendo a los programadores concentrarse en la construcción de software en un entorno de flexibilidad que facilita y permite que los proyectos de software finalicen de manera exitosa maximizando el retorno de inversión realizado.

Si bien estas prácticas al día de hoy pueden ser todavía resistidas y cuestionadas, son utilizadas cada vez más en diversas empresas e industrias lo que hace prever que las metodologías ágiles han llegado  para quedarse.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *