No solo en Software, en general en cualquier empresa, todos queremos ser ágiles. Hoy en día, tenemos una gran variedad de metodologías ágiles que nos ofrecen un conjunto de técnicas que si llevamos a cabo, no sin antes adaptarlas a nuestra conveniencia, ya podemos considerarnos ágiles. Así de fácil :)

Si estás leyendo esto, espero que hayas sabido captar el sarcasmo en mis palabras.

¡Nada más lejos de la realidad!, pero… ¿por qué pasa esto? Lo primero que se me ocurre es que como toda idea que se populariza, es muy susceptible de que se joda al leerla mal. Y en concreto me parece que el mayor problema viene de intentar aplicar técnicas sin comprender en que contexto aplican.

Flexibilidad

La palabra agilidad seguramente nos transmita ideas muy relacionadas con la ligereza, poca fricción y la velocidad. ¿A quién no gustaría ir lo más rápido posible? La cuestión es que cuando no tenemos claro el camino a seguir y no vamos en línea recta, no podemos adquirir velocidad sin tener la capacidad de cambiar de dirección de manera eficiente.

Por eso para mi el aspecto más importante que nos proporciona la agilidad es la flexibilidad.

Creo que Heinz von Foerster lo plasma muy bien con estas dos frases.

Actúa siempre de manera que aumentes tus posibilidades

y

Para ver actúa

Además, para conseguir velocidad y flexibilidad es imprescindible contar con buenos mecanismos de feedback.

Por ello, y simplificando al máximo, fundamentalmente todas las metodologías ágiles que conozco tienen estos cuatro puntos en común:

  • Felixibilidad: para poder cambiar de dirección.
  • Feedback: para saber a que nueva dirección ir con cierto criterio.
  • Proceso iterativo e incremental: para comenzar a usar nuestra solución y adquirir feedback lo antes posible.
  • Dependencia fuerte de las personas que forman el equipo: ya que resolvemos problemas multi-variable y por lo tanto, con múltiples soluciones.

Creo que es importante no perder de vista ninguno de estos cuatro puntos cuando decidamos adaptar cualquier metodología a nuestro equipo.

Seguridad

¿Por qué no me funcionan las técnicas ágiles tan bien como me gustaría? El manifiesto ágil deja clara la importancia de las personas. Y dadas las diferencias tan grandes entre una persona y otra, nos convertimos en el elemento diferenciador que hace que una metodología funcione o no.

Dicho esto, yo creo que la raíz de la mayoría de dificultades al intentar implantar una cultura ágil es muchas veces intentamos imponer el agilismo a personas cuya espistemología no es ágil.

La seguridad es un valor muy arraigado en nuestra sociedad. Lo habitual es que la seguridad esté siempre en el Top 3 de nuestra escala de valores. Y esto es un problema, sobre todo en este contexto, porque la flexibilidad y la seguridad no se llevan bien.

Al fin y al cabo, la seguridad consiste en reducir las posibilidades permitiendo solo el camino único que me he marcado como seguro.

Mientras que la flexibilidad consiste en aumentar las posibilidades dando lugar a que pasen cosas que no había contemplado previamente.

Intentar imponerle la flexibilidad a una persona que requiere seguridad, muy probablemente no hará otra cosa que aumentar su ansiedad. Ya que, si nos pueden pasar muchas cosas, estamos reduciendo el control de la situación.

Por otro lado tratar de aportar rigidez a una persona flexible, generará también cierto malestar en las personas.

Esta incompatibilidad os la habréis encontrado muchas veces en situaciones del estilo:

  • Managers pidiendo estimaciones precisas sobre cuando estará listo algo que ni siquiera está bien definido.
  • Equipo de desarrollo frustrado porque la tarea cambia y asumen que les caerá la bronca por no tenerla lista.
  • Mucho drama cuando una tarea que te dieron ayer a última hora no está lista hoy a primera.
  • …(please ayudadme con más ejemplos en los comentarios)

¿Qué podemos hacer para mejorar la situación?

Pues creo que por el hecho de adquirir consciencia de esta incompatibilidad ya tendremos bastante camino andado. Tengamos en cuenta que cambiar las prioridades de una persona no solo es una tarea difícil, sino que conlleva cierto peligro.

No obstante, si la persona que tenemos en frente requiere seguridad, siempre puede ayudar el hecho de que hagamos un esfuerzo en comunicar. Que vayamos avisando de las posibles alternativas que se pueden dar con nuestras soluciones. Y en general que construyamos software predecible y robusto. De esta manera minimizaremos la incertidumbre y reduciremos el número de sorpresas desagradables :). Es decir, que parezca que lo tenemos suficientemente controlado. De hecho, tenemos muchos mecanismos para incrementar la seguridad sin perder la flexibilidad.

En el caso contrario, es decir, exigir cierta rigidez a una persona flexible, siempre que sea en momentos puntuales debería ser más sencillo ya que una persona flexible tiene mayor capacidad de adaptarse. No obstante, sí deberíamos hacer hincapié en que dicha situación es temporal.

En ambos casos, creo que es deseable hacer partícipes del razonamiento a las personas a las que habitualmente no suelen convencerles las decisiones tomadas. Nuestro punto de vista podría hacerles cambiar de idea o… mejor aún… el suyo podría hacernos cambiar la nuestra :)