Ser ágil no lo es todo

Lanalua · 28 August 2016

-“Eso te lo hago yo en 10 minutos”-

¿Cuántas veces has oído esa frase? Nadie cuestiona la importancia de la agilidad, tanto en desarrollo software, como en cualquier otro proyecto o negocio. Lo malo son las obsesiones, creo que todo el mundo tiende a aborrecer a los fanáticos.

La mayoría de los discursos y textos sobre metodologías ágiles suenan como ”esta es la única solución a todos tus problemas”, si dudas eres un hereje, los fanáticos te repetirán sus consignas (como si no las conocieras) para que dejes de cuestionarles, son dogmas, te están haciendo un favor, solo déjate llevar.

Si no eres un fanático y no has dejado aún de leer, que quede claro, no hay duda, ser ágil es importante y extremadamente útil. El agilismo va más allá de la rapidez, como dice el primer principio del manifiesto ágil, esto va de satisfacer al cliente y de entregar software con valor.

 

-La letra pequeña-

Como dice Javier Garzás en su blog, las metodologías ágiles no existen. Scrum, eXtremme Programming y cía son guías, marcos de trabajo, buenas prácticas. Hay que leerse la letra pequeña, como dicen los de 37signals:

Preferimos ser provocativos que arrojar duda con “eso depende…”. Por supuesto que habrá momentos donde estas reglas deberán ser acotadas o rotas, y algunas de estas estrategias pueden no aplicarse a tu situación. Usa tu juicio e imaginación.

37signals (2006). Getting Real: The smarter, faster, easier way to build a successful web application.

 

-Calidad-

Como sucede con la agilidad, tampoco nadie pone en duda la importancia de la calidad, y no hablo de pasar pruebas, me refiero al concepto más amplio, aquello de conformidad con los requisitos y confiabilidad en el funcionamiento, la calidad de Deming.

Agilidad y calidad no son conceptos contrapuestos, nada más lejos, calidad también significa no retrasar las entregas y satisfacer al cliente, por mucho que algunos se empeñen en lo contrario.

Quien haya oído hablar de Lean Software Development seguramente recuerde como sus principios están relacionados con la calidad, y sabemos que Lean trata sobre prácticas ágiles. En este artículo repasaré algunos de estos principios con ambos enfoques.

 

-Lean-

  • Eliminar los desperdicios

Todo aquello que no añade valor al cliente se considera un desperdicio.

Agilidad: Eliminar la burocracia, agilizar la comunicación, no desarrollar funciones innecesarias.

Calidad: Aclarar los requisitos importantes, mejorar la comunicación, desarrollar sin defectos (la baja calidad es un desperdicio en si misma).

  • Decidir lo más tarde posible

El desarrollo siempre está asociado a la incertidumbre.

Agilidad: Aceptar los cambios, permitir una adaptación tardía con un enfoque de desarrollo iterativo.

Calidad: Incluir la capacidad para el cambio, alcanzar mejores resultados con un enfoque basado en opciones.

  • Construir con integridad

El cliente debe tener una experiencia general del sistema.

Agilidad: Lograr una comunicación fluida, cara a cara, sin documentación por escrito.

Calidad: Lograr la comprensión del dominio del problema.

  • Ver el todo

El software no es la suma de sus partes sino el producto de sus interacciones.

Agilidad: Descomponer grandes tareas en tareas pequeñas, encontrar cuanto antes los defectos.

Calidad: Conocer el proyecto como un todo, eliminar los defectos en cuanto se encuentren.

 

-Ser ágil no lo es todo-

Si alguien cree que puede solucionar un problema en 10 minutos es que no ha entendido lo que es un problema. Usa tu juicio e imaginación, encuentra el punto de agilidad/calidad adecuado, cada proyecto y cada tarea tiene el suyo.

Alguien me dijo una vez que actuásemos en pequeño y que nos equivocásemos rápido, pero se dejó una parte importante de la frase de los Sres. Poppendieck:

Piensa en grande, actúa en pequeño, equivócate rápido, aprende con rapidez

Mary y Tom Poppendieck (2003). Lean Software Development: An Agile Toolkit.

Twitter, Facebook