La agilidad está de moda en el mundo del software. Agilidad no significa descontrol, así como libertad no significa “hacer lo que nos da la gana”. Donde hay menos controles, donde la iniciativa se demanda a los equipos, se necesitan de unas cualidades que demasiadas veces nos olvidamos: la responsabilidad personal y, por ende, la responsabilidad del equipo; la empatía, el altruismo, el apoyo entre compañeros.
La agilidad conlleva la idea de hacer fluir el trabajo de una manera más eficiente, obviando todas aquellas actividades que no aportan valor directo al resultado final. El trabajo por realizar lo podemos asemejar al agua que fluye, cuya rapidez se ve perjudicada por obstáculos, tropiezos, riachuelos laterales. Todo fluye, nada permanece, porque lo que no fluye se estanca, se pudre; en los fluidos habita la vida.
Aterrizando el concepto
Después de muchos años en los cuales el concepto de agilidad ha ido asentándose y en los cuales muchos “charlatanes” han sido redimensionados, podemos afirmar que el concepto de agilidad se ha consolidado alrededor de dos paradigmas: SCRUM (con sus derivadas) y KANBAN. Estas dos filosofías de trabajo no son necesariamente contrapuestas y antagonistas, sino que pueden combinarse para definir un marco de actuación que va desde cada uno de los equipos de trabajo hasta la gestión del portfolio de proyectos a nivel de organización.
Factores en común
En mi experiencia profesional he identificado los siguientes factores por los que una empresa decide emprender el camino de la agilidad:
- Flexibilizar la respuesta frente a la demanda cambiante de los clientes.
- Necesidad de tener una mayor y mejor visibilidad del trabajo en curso.
- Desarrollar mecanismos para mejorar la predictibilidad de los resultados.
- Fomentar la colaboración y romper los silos presentes en la organización.
La tendencia existía ya antes de la pandemia, pero ahora, el teletrabajo y los equipos distribuidos geográficamente han obligado a muchas organizaciones a repensar su propio esquema de trabajo en el cual “hacer equipo”; ya no se obtiene poniendo físicamente juntos a la gente, sino proporcionando las herramientas de colaboración adecuadas.
Todo eso ha obligado a cometer profundos cambios en un muy corto plazo en diferentes aspectos: en la relación con los clientes; en el liderazgo en el ámbito de la empresa; en el conocimiento que se tiene que adquirir; en una mayor asunción de compromiso hacia el trabajo que hay que hacer y en la necesidad de cuestionarse la solución para ir buscando ajustes y mejoras.
Los problemas comunes que se podrían evidenciar en esta situación son los siguientes:
- Dificultades en involucrar a los clientes en el marco de la agilidad. Los proyectos que mejor han funcionado son aquellos en los que “negocio” y TI se han integrado en un equipo multidisciplinar. Desafortunadamente, muchos clientes piden agilidad a sus proveedores, pero sin comprometerse con ello. Es muy difícil encontrar clientes que practican bien el rol del Product Owner, que mantienen una interlocución constante y efectiva para el refinamiento de los requisitos y para la validación de los resultados. Esta situación crea en las empresas la necesidad de definir nuevos roles como puede ser el “Product Owner Proxy”; una persona que sustituye al cliente en el rol de Product Owner con todos los riesgos que esto conlleva.
- Dificultades en articular equipos multidisciplinares y autogestionados sobre todo en aquellas organizaciones organizadas por “departamentos” y con roles, funciones y responsabilidades predefinidas.
- Dificultades para entender que la clave del éxito es limitar el trabajo en curso. Mejor enfocarse en menos cosas y llevarlas a cabo lo más rápidamente posible que, empezar mil cosas para demostrar que “se está en ello”, pero sin acabar nada en los tiempos esperados. Esto es un concepto “contraintuitivo” y disruptivo respeto a la cultura gerencial de maximizar (y sobrecargar) la ocupación del personal.
Empresas que proporcionan servicios TI
El prototipo de este tipo de empresa se estructura en centros de alto rendimientos geográficamente distribuidos en diferentes países y zonas horarias; típicamente la coordinación entre centros se hace a través de una delgada estructura horizontal con ramificaciones en cada centro que actúan como “tutores locales”. Son normalmente empresas que procesan una gran cantidad de peticiones de trabajo cuyos márgenes están condicionados a la eficiencia con la cual se realiza el trabajo.
En este caso es fundamental instaurar una homogeneidad operativa optimizada que garantice una predictibilidad de los resultados independientemente del equipo al cual se asigna un trabajo. Cualquier despilfarro puede traducirse a nivel global en importantes costes añadidos y por lo tanto, en pérdidas significativas de márgenes. Esta homogeneidad operativa se obtiene disponiendo de una infraestructura común hecha de eficientes protocolos de actuación, apoyados por herramientas.
- En este segmento de mercado las herramientas que han ido afirmándose y difundiéndose son Jira y su casi infinito mundo de plugins para la gestión del flujo de trabajo; Teams como herramienta de colaboración; Confluence para gestionar la base de datos documental; alguna herramienta de Business Intelligence para obtener los datos de fuentes diferentes y presentarlos de una manera que facilite su análisis y toma de decisión.
- En este segmento, las soluciones ágiles son típicamente una mezcla de Kanban y Scrum; Kanban sobre todo para visualizar el trabajo y para limitar el trabajo en curso, y Scrum para la gestión de los equipos de trabajo. En algunos casos se implantan practicas SAFe (Scaled Agile Framework) o de gestión de portfolio de proyectos con Kanban apoyados por herramientas como Kanbanize.
- Un buen ejemplo de empresa española de este tipo es everis Centers.
Empresas que desarrollan software critico
Existen realidades empresariales que operan en segmentos como aeroespacial, aeronáutica o militar que, a pesar de tener que respetar protocolos muy rígidos en todo el ciclo de desarrollo software, están utilizando metodologías agiles para la gestión de los equipos de desarrollo. En estos casos, se crea un claro dualismo entre la operativa interna y la operativa hacia el cliente; esta bicefalia tiene reflejo directo en cómo la organización se estructura internamente.
- Típicamente la figura arriba mencionada del Product Owner Proxy es reforzada porque tiene que tratarse de una persona que conozca muy bien el negocio del cliente, sus prioridades, los tiempos que hay que cumplir y que por otro lado, conozca las dinámicas agiles y sea capaz de mapear la gestión a realease con la gestión de los sprints. En estos casos asume un rol también determinante los SCRUM Master o el correspondiente rol en Kanban porque este rol llega a ser el “árbitro” entre los equipos y el PO Proxy sobre muchas cuestiones del día a día.
- Un ejemplo edificante de este tipo es la empresa portuguesa Critical Software.
Empresas industriales
El ejemplo en este caso es lo de Bosch España/ATMO2. Esta empresa desarrolla la ingeniería, el diseño y la construcción de las máquinas que constituyen las cadenas de producción para el sector automoción, que luego se implantan en las diferentes plantas de producción de Bosch en todo el mundo. ATMO2 está tradicionalmente estructurada por “compartimentos estancos”: mecánicos, eléctricos, desarrolladores software, taller de montaje... Cada uno tiene sus tiempos, sus modalidades de trabajos, sus idiosincrasias que se transforman en una colaboración llena de tensión durante la fase de “mesa a punto”, en la cual se procede a la integración de las diferentes partes.
- Con la finalidad de mejorar la predictibilidad de las entregas y para evitar agobiantes y larguísimas jornadas de trabajo en las fases finales del ciclo de vida, en Bosch España se está trabajando desde hace años en romper los viejos esquemas y fomentar la colaboración desde las primeras fases del ciclo de vida.
- La solución que han adoptado es una combinación de Kanban aplicado en cada departamento (diseño mecánico, diseño eléctrico, software, montaje, puesta a punto); de gestión integrada de portfolio a través de Kanban y gestión de proyecto de cadena crítica (CCPM). El CCPM es un método para la gestión de proyectos que permite optimizar el uso de los recursos a través de una estimación de las actividades en el caso peor y en el caso óptimo. La diferencia entre estas dos estimaciones define el “buffer” que el proyecto tiene a disposición. La monitorización consiste en el control del consumo del buffer.
Agilidad y Ciclo de Vida de Software Seguro
Otro tema muy actual relacionado con la agilidad es su aplicabilidad en el entorno de la “ingeniería de confiabilidad”, donde la confiabilidad es la suma de estas cinco características: safety, security, privacidad, fiabilidad y resiliencia.
Hay propuestas para investigar cómo introducir una combinación de técnicas ágiles e inteligencia artificial en el ámbito del ciclo de vida de software seguro. El objetivo es proporcionar un ciclo de vida de desarrollo ágil y confiable que introduzca características de confiabilidad, mientras responde a la filosofía y a las prácticas ágiles. Todo eso se sustenta por técnicas y herramientas que implementan nuevos métodos (procesos, actividades, roles, artefactos, métricas, etc.) utilizando la Inteligencia Artificial (IA) para respaldar su automatización y prevenir riesgos complejos en el desarrollo de sistemas.
Conclusiones
La “agilidad” es ya una realidad en los nuevos paradigmas de desarrollo software porque favorece una rápida adaptación a un contexto continuamente cambiante. La adopción de prácticas ágiles tiene que hacerse con rigurosidad y de manera sistemática, evitando malas interpretaciones y contextualizando sus adaptaciones al entorno específico en el cual se adoptan. Esto facilitará la gestión del flujo de trabajo minimizando obstáculos, proporcionando mayor visibilidad e incentivando la colaboración entre personas y equipos.
¡“Be water, my friend”!