La perversión del agilismo

Alberto Mena    16 julio, 2015

El 17 de febrero de 2001 se reunió Kent Beck con otras dieciséis personas para reflexionar sobre los procesos de desarrollo de software. La sesión surgió como reacción a las metodologías dominantes entonces (CMMI y SPICE) que ellos consideraban demasiado rígidas.  El resultado fue el manifiesto ágil que se basa en cuatro principios:

  1. Individuos e interacciones sobre procesos y herramientas.
  2. Software que funciona sobre documentación extensiva.
  3. Colaboración con el cliente sobre negociación contractual.
  4. Respuesta ante el cambio sobre seguir un plan.

Han pasado catorce años desde ese momento y el agilismo en el desarrollo de software hace ya tiempo que llegó a las empresas y podemos tener una opinión clara sobre el éxito de su implantación. Si definimos éxito como un equivalente a su propagación y adopción en las empresas, ha sido un éxito. Es irrebatible. Las empresas que desarrollan software ya han incorporado metodologías ágiles como Scrum o Kanban o quieren hacerlo a corto plazo.

Pero definir éxito de esta manera es una forma muy pobre. La pregunta más adecuada sería: ¿Está funcionando bien? Es una pregunta incómoda, porque requiere analizar y pensar. La bandera del agilismo ha sido izada por los mejores desarrolladores de los últimos años, sea lo que sea que signifique eso. Si uno lee el manifiesto completo, probablemente esté bastante de acuerdo, pero ya se sabe que en teoría la teoría y la práctica son lo mismo, pero en la práctica son diferentes.

 

Al diablo con la documentación

Todos, o al menos los más viejos del lugar, recordamos cosas tan dantescas como Métrica-3 que se pedía en la mayoría de desarrollos relacionados con la administración pública. Documentación inútil por todos lados. Con la llegada del agilismo desaparecen los documentos de texto y aparecen los post-it. Y nada más. La documentación funcional no existe, la documentación técnica menos aún. Larga vida a los árboles. Lo que hace el sistema está en los correos electrónicos del equipo y en sus cabezas. Eso no es exactamente lo que yo consideraría un avance. Se ha pasado de una excesiva documentación a no documentar nada.

 

Mira mamá, sin control de cambios

El cambio es bueno, decían. La satisfacción del usuario es lo principal, decían. Este es uno de los puntos más polémicos. Los cambios en el desarrollo son consustanciales.  Es algo natural. El cambio es bueno, quién puede estar en contra de ese concepto. Inténtalo y te tacharán de retrógrado, seguidor de los Illuminati de la metodología en cascada y cosas aún peores. Con esa visión se levantaron todos los muros de contención que antes permitían negociar con el usuario qué incorporar y qué no. Barra libre. Pide que tú eres el que sabe lo que quiere. Yo estoy de acuerdo con esto, siempre que ante innumerables cambios disponga de un tiempo también incontable para acabarlo.

El concepto «los usuarios saben lo que quieren y lo que piden es porque lo necesitan» rivaliza en falsedad con el de «el cliente siempre tiene razón». No es popular decir esto. Pero para llegar a esa conclusión basta con acumular unos cuantos clientes, unos cuantos años de trabajo y eliminar la ceguera que impone el buenismo.

 

Qué demonios tiene que hacer el sistema

Los malditos casos de uso que nadie se leía en un documento de texto de 189 páginas. Tenía que haber algo mejor, lo que ya no tengo tan claro es que lo mejor sean unos post-it colgados en un tablón. Y ya. Cuando tienes que definir e implementar procesos complejos que incluyen una carga funcional fuerte, tanto de interacción con el usuario como de procesos desasistidos, en ese escenario hostil manejar lo que hay que desarrollar en unos post-it no es viable.

 

Un product owner para dominarlos a todos

El product owner en Scrum es el representante de todas las personas interesadas en el proyecto y el que decide qué características debe tener el software. Suena genial. Pero la vida real te dice que en un proyecto normalmente hay varios usuarios de diferentes áreas con intereses contrapuestos que hay que balancear y negociar. El product owner suele ser de un área, a veces de marketing, y casi nunca de TI. Con ese escenario, el drama está servido, la labor de intermediación no suele funcionar bien en esos casos.

 

La fecha de entrega ha muerto, viva la fecha de entrega

Este es mi favorito. La secuencia de pasos suele ser así. Se elige una metodología, se define el equipo, se asignan roles y empieza el trabajo. Todo el mundo está muy contento porque por fin va a poder desarrollar como los buenos de la industria. Sprint cada dos semanas y el usuario con feedback continuamente y contento. El paraíso terrenal. Pero de repente te das cuenta de que hay una fecha de entrega fija. Y que se van pidiendo funcionalidades, definidas escrupulosamente por el product owner al que le preocupa poco la fecha, y se va avanzando hacia el punto en que te espera el mago Gandalf con su «no puedes pasar». Hay que entregar. Pero el trabajo no estaba organizado para terminar en esa fecha, sino simplemente para ir haciendo cambios, incorporando nuevas funcionalidades y mejorando otras sin preocuparse de cuándo estará listo el producto para producción.  Todo muy iterativo e incremental, pero haciendo una gestión del proyecto ciega con la fecha de entrega.

 

Las consecuencias: el bol de arroz y el orinal

Esta parte también es muy buena, aunque no muy divertida. Comienza con frases del estilo «¿como cuánto de comprometido tienes el fin de semana?». Y es entonces cuando los desarrolladores menos despiertos se dan cuenta de que algo no ha ido del todo bien. Tienen que recuperar su bol de arroz, el pijama y pasar el máximo de horas en el trabajo, para conseguir cumplir con una fecha de entrega que parecía poco relevante al comienzo, que ningún principio del manifiesto ágil comenta, pero que irónicamente es lo único que les importa de verdad a la mayoría de directivos de TI en las empresas españolas. ¿Calidad? No nos han presentado.

 

Conclusión: Sigue sin haber bala de plata

Hay que recurrir siempre al artículo de Frederick Brooks, que escribió en 1986: No silver bullet y su versión en español. No hay una tierra prometida, no hay una forma adecuada de desarrollar software que elimine los problemas inherentes a esta actividad. El agilismo nos ha traído buenas prácticas que nadie discute, pero también su adopción en las empresas de tamaño medio y grande ha sido en no pocas ocasiones y está siendo un completo desastre. Y las personas que nos dedicamos al desarrollo no debemos obviar estos problemas, hay que hablar de ellos con otros colegas y no rendirse en la batalla que nunca se ganará del todo para conseguir mejorar en el desarrollo de software.

No permitamos que el desarrollo agile se convierta en lo que ya se conoce como perverted agile = «pervagile». No erijamos totems a los que no podamos criticar. No hagamos una religión en torno a metodologías de desarrollo, porque eso nos hace estrechos de mente. Cambiemos lo que no funciona, aunque a otros eso mismo sí les funcione. Los proyectos de desarrollo son muy variados, muy diferentes y requieren sobre todo que las personas que participen sean críticas con ellas mismas y con el trabajo de los demás para poder mejorar. Siempre hay que mejorar.

Foto: Melanie Holtsman

Comentarios

  1. Muy buen artículo.

    Se piensa en las metodologías ágiles como la panacea en compañías en las que la metodología tradicional no funciona.
    Lo que no suele decirse es que esta metodología tradicional no funciona porque también está siendo pervertida, por lo que la implantación de metodologías ágiles también fracasa.

    La experiencia nos dice que no basta con cambios en la metodología, sino que hay que hacer cambios en quien las aplica: la compañía.
    Hasta que no se realizan estos cambios no se hace más que una perversión de la metología que, además, en el caso de las metodologías ágiles, es contraproducente; llegando a situaciones a las que no se hubiera llegado en una metodología tradicional.

    Me quedo además con una de las últimas reflexiones que se hacen en el artículo:

    «Los proyectos de desarrollo son muy variados, muy diferentes y requieren sobre todo que las personas que participen sean críticas con ellas mismas y con el trabajo de los demás para poder mejorar».

  2. Bueno, yo creo que el artículo exagera y mucho sobre algunos de los principios ágiles y los trivializa.

    La documentación pierde peso, si, pero no desaparece. Ninguna implementación seria de procesos Agile elimina toda la documentación. Las especificaciones no se limitan a un conjunto de post-its pegados sin ton ni son en alguna pizarra.
    La barra libre de cambios tampoco es tan a la ligera. Una correcta especificación ágil define las historias de usuario haciendo que estas sean negociables. Es decir, el cambio se produce, claro, pero siempre gestionado, no es «pide lo que quieras que yo te lo doy».
    La calidad es una de las piedras angulares del desarrollo ágil, así que eso de que «no nos la han presentado» es una falacia.

    Resumiendo. El problema no es en absoluto la aproximación ágil al desarrollo. Para empezar, Scrum, XP y otros modelos no son metodologías, ni dogmas de fe. Son colecciones de prácticas que puedes y debes adaptar a la realidad de tu empresa.
    Ocurre que en el mundo IT también se funciona por modas y lo que «mola» ahora es el agilismo, que se implementa de manera inadecuada en el 80% de las empresas.

    Hacer dailies y poner post-its en un board no es ser ágil. No hay agilidad si no se involucran todos los stakeholders que intervienen en un proyecto. Por tanto, hay que introducir una transformación en las organizaciones para que el cambio tenga éxito. Y casos de éxito hay muchos pero como todo, se trata de tomárselo en serio, y no quedarse sólo en la superficie.

  3. Al artículo le pasa lo mismo que a mucho discurso Agile: una introducción estimulante y unas conclusiones tan ciertas como patentes. Lo de en medio es predicar para conversos. Si Agile predica para los sufridores de las malas prácticas de ingeniería del software seguidas en nombre de las llamadas metodologías ágiles, aquí Alberto predica para los sufridores de unas horribles implantaciones ágiles.
    Por cierto, Alberto: si todo eso es verídico y no estás exagerando, vaya tela! Y luego de responsables, nada, no? Eso es común en el mundillo, sea Agile o no.

    La verdad es que con ese título, la perversión del agilismo, me esperaba otra cosa. Algún tipo de crítica al proceso en sí, cómo y por qué se ha pervertido; en lugar una mera exposición de errores flagrantes que el autor se ha encontrado o que piensa que podrían ocurrir.

    Creía que en el artícuo se hablaría de algunos temas, como: Por qué las empresas están cayendo en esta moda? En quién confían para implantar Agile? Cómo se asesoran? Cuánto de religión tiene el agilismo y por qué? Cómo puede una empresa contratar a Agile Coachs con un nivel técnico básico para que multiplique su productividad? Cuánto dinero mueve todo esto? Cuándo se pide un coach con pegatina Scrum loquesea, se sabe la pocas horas de trabajo que realmente hacen falta para obtener la pegatina?

    Para mi todo esto tiene que ver con esta perversión del agilismo y debemos alertarlo. Cómo puede una empresa de desarrollo pretender multiplicar su productividad y mejorar su proceso de desarrollo sin meterse a transformar a su personal en mejores programadores?
    Terminan las implantaciones con los equipos desarollando en integración continua, programando tests, con un buen control de versiones que incluya una trazabilidad automática con el código (dile a los de los postits que te hagan esto), con análisis de código, con código autodocumentado, con propiedad colectiva del código, con builds automatizadas, etc.?

    Creo que todo cambio que no implique un aumento de las capacidades técnicas tiene un margen de mejora muy límitado.

    Un saludo.

  4. Sr. Mena:
    Su artículo me ha dejado frío: un montón de críticas a las metodologías ágiles apenas sin fundamento. La crítica por la crítica. Habría estado bien que aportara soluciones a esta forma «poco operativa» de trabajar, según su entender. Que algo esté de moda, en este caso el agilismo, no significa que sea lo mejor y ni siquiera que sea bueno. Pero si lo adopta tanta gente y los desarrolladores lo han acogido con los brazos abiertos será por algo. Le animo a que escriba una segunda parte de este artículo exponiendo qué haría usted para mejorar la forma de trabajar de un equipo de desarrolladores y para optimizar los procesos de las empresas. Todos sabemos qué está mal, pero pocos pueden aportar ideas útiles.

  5. Pues yo creo Alberto que sabes de lo que hablas y que estás muy acertado. Y siento que este mal es el hijo natural de un modelo de gestión buenrolllista que no establece roles claros y no exige responsabilidades. Y tristemente, constato que no es exclusivo del entorno que tan magistralmente describes.

    Gracias por tu valiente reflexión. No es fácil hablar sin pelos en la lengua.
    Un abrazo!

Deja una respuesta

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