Persiguiendo objetivos móviles: Adaptación continua con sistemas de doble loop
Ejemplos de enfoques, frameworks y técnicas que emplean feedback loops anidados para lograr el equilibrio entre velocidad y dirección.
Si necesitas desplazarte de un punto A a un punto B que está a una distancia suficientemente lejana como para que tu vista no pueda alcanzarlo, es normal que necesites apoyarte en algo que te ayude a mantener la dirección.
De niño solía competir en carreras de orientación. Nos daban un mapa específico de la zona y una brújula con cada punto de control marcado. Para completar el recorrido, debíamos pasar por todos estos puntos en orden, guiándonos únicamente con el mapa y la brújula, y ganaba quien los encontrara en el menor tiempo posible.
La velocidad era clave, así que mi estrategia solía ser encontrar un punto de referencia cercano en la dirección correcta usando la brújula y el mapa. Una vez identificado, corría hacia ese punto sin detenerme a comprobar la orientación de forma constante.
Esta técnica generaba dos tipos de retroalimentación:
Un bucle corto y rápido, en el que simplemente verificaba el punto de referencia para seguir avanzando.
Otro más largo y más costoso, en el que recalibraba la orientación y establecía un nuevo objetivo cercano.
Claramente por entonces no pensaba en sistemas, pero la realidad es que, en estas situaciones de orientación, tendemos a aplicar un sistema de doble feedback loop como este de manera inconsciente.
Pensar rápido, pensar despacio
Lo anterior no es de extrañar pues como propone Daniel Kahneman en su libro Pensar rápido, pensar despacio, operamos con dos sistemas de pensamiento.
El sistema 1 es rápido y económico en cuanto a esfuerzo cognitivo. Es una respuesta intuitiva que recurre a heurísticos que hemos desarrollado durante nuestra evolución y que nos han salvado de muchos depredadores y amenazas sociales. No es perfecto, pero acierta la mayoría de las veces y funciona con gran rapidez consumiendo muy poca energía. Este sistema suele ser nuestro bucle interno: nos permite desenvolvernos con fluidez.
Por otro lado, el sistema 2 es más lento y consciente. Requiere un esfuerzo cognitivo mayor y desafía a los heurísticos del sistema 1. Este sistema es como el bucle externo: nos detiene, recalibra, cuestiona y redefine la dirección para evitar errores acumulados.
El jinete y el elefante
Este mes estamos leyendo en La Biblioteca Polymatas La mente de los justos de Jonathan Haidt. En el grupo de Telegram ha surgido un debate interesante sobre los paralelismos entre la metáfora del jinete y el elefante de Haidt y la propuesta de Kahneman sobre los sistemas de pensamiento.
En este contexto de sistemas de doble loop, el elefante representa nuestro bucle interno, que simboliza las emociones, los instintos y los deseos que nos impulsan a actuar rápidamente. Es una parte de nuestra mente gobernada por los «módulos morales» que, según Haidt, hemos evolucionado para reaccionar de manera instantánea ante ciertas situaciones. Es intuitivo, inmediato y a menudo difícil de controlar, lo que se alinea con el sistema 1 de Kahneman.
Por otro lado, el jinete representa nuestro bucle externo: la parte racional, consciente y lógica que intenta guiar al elefante y comprender sus impulsos. Al igual que el sistema 2 de Kahneman, el jinete es más reflexivo y, en muchos casos, busca explicar o justificar a posteriori (post-hoc) las decisiones que ya ha tomado el elefante. Este bucle externo, aunque más lento y demandante en términos de esfuerzo cognitivo, es crucial para recalibrar y corregir el rumbo, cuestionando si el impulso del elefante está alineado con nuestros objetivos a largo plazo.
North star framework
Durante miles de años, los marineros han utilizado las estrellas para orientarse, mucho antes de que existieran brújulas o instrumentos de navegación modernos. La clave era identificar ciertas estrellas y constelaciones «fijas» en el cielo. La más importante de ellas es la Estrella Polar (Polaris), que siempre apunta al norte en el hemisferio norte y ha servido de guía constante y confiable.
El North Star Framework toma esta analogía para orientarnos en el desarrollo de productos. Su bucle interno se compone de métricas de entrada: al igual que los marineros consultaban otras estrellas para corroborar su rumbo, este framework se apoya en métricas secundarias que los equipos de producto pueden influenciar directamente y que ayudan a validar el progreso y dar contexto al avance.
El bucle externo lo representa la North Star Metric, un objetivo que encapsula el valor central que el producto ofrece a sus usuarios. Esta métrica actúa como una «estrella guía» para todo el equipo, asegurando que las decisiones y esfuerzos de todos estén alineados hacia un propósito común.
Continuous Coordination
Continuous Coordination es un framework open source para dirigir equipos de ingeniería, cuyo principio número uno es: Mantén un ritmo constante.
Los enfoques ad-hoc para mantener a todos informados y alineados son frágiles, consumen mucho tiempo y resultan tediosos. Reemplázalos con bucles de comunicación estructurados y automatizados para crear un ritmo constante que mantenga a todos en sincronización sin tanto esfuerzo ni interrupciones.
En organizaciones de cierto tamaño (>50 personas), y especialmente en entornos de trabajo en remoto, mantener la alineación entre todos se vuelve complejo. Los mensajes deben repetirse en múltiples ocasiones, y son necesarias reuniones constantes que interrumpen el flujo de trabajo, desgastan al equipo y afectan la productividad. Esto nos deja atrapados en «la trampa de alineación».

Este framework propone un enfoque de doble loop para salir de esta trampa, desglosando el trabajo de alineación en bucles asíncronos más pequeños, de mayor frecuencia y automatizados:
Bucles diarios: Funcionan como el bucle interno, manteniendo a los equipos individuales en sincronía. Estos loops ayudan a los colaboradores a priorizar tareas, abordar problemas emergentes y coordinar planes de acción de forma ágil y rápida.
Bucles semanales, quincenales o mensuales: Actúan como el bucle externo, alineando varios equipos y a la organización en general, proporcionando una visión compartida y actualizada para todos.
Este enfoque crea un ritmo de trabajo fluido, donde la comunicación estructurada permite que cada miembro y equipo esté alineado con menos esfuerzo y menos interrupciones.
Double loop TDD
En un plano más técnico, tenemos la técnica de Double Loop TDD, que añade una capa de tests de aceptación al ciclo clásico de TDD (Rojo -> Verde -> Refactorizar). La idea es combinar dos ciclos de tests: un ciclo externo de aceptación que verifica un requisito de negocio, y un ciclo interno de tests unitarios. Este bucle externo funciona como una versión automatizada de nuestra «definition of done».
Al comenzar una nueva funcionalidad, iniciamos escribiendo un test de aceptación que inevitablemente fallará, ya que aún no existe una implementación. Antes de avanzar, es fundamental verificar que este test de aceptación está fallando correctamente, lo que confirma que el requisito no se está cumpliendo. Esto suele implicar definir la API externa de nuestro sistema.
Una vez que tenemos un test de aceptación que falla por la razón correcta, pasamos al ciclo interno, que corresponde al ciclo de tests unitarios de TDD. Nos mantenemos en este ciclo interno hasta que el test de aceptación finalmente pase.
Podéis ver este flujo de trabajo en acción en este clásico screencast de Sandro Mancuso implementando la Bank Kata siguiendo un enfoque de outside-in TDD.
Micro feedback loops

Tim Cochran define los micro feedback loops como aquellas acciones que los desarrolladores realizan 10, 100 o incluso 200 veces al día, como es el caso de los bucles internos del Double Loop TDD. Estos micro-bucles de retroalimentación se acumulan y, con el tiempo, afectan a ciclos de retroalimentación más grandes. Por eso, cuanto más rápidos y menos costosos sean, más frecuentemente se ejecutarán, proporcionando un flujo constante de retroalimentación temprana.
Evitar largas pausas entre la ejecución de estos bucles ayuda a mantener el contexto y la concentración. Este estudio sugiere que recuperar el estado de concentración y productividad máxima puede tomar hasta 23 minutos tras una interrupción.
Si dependiéramos solo de los tests de aceptación (o de un QA manual), es probable que entre cada ejecución nos distrajéramos revisando correos, redes sociales o incluso tomando un café, lo cual nos sacaría del estado de concentración. Esto también podría tentarnos a iniciar otra tarea en paralelo, aumentando el WIP y, por lo tanto, elevando la carga cognitiva con todas sus consecuencias negativa. En algunos casos, incluso podríamos sentir la necesidad de omitir los tests de aceptación para «avanzar más rápido».

Objetivos móviles
En el desarrollo de productos, el contexto es un objetivo en constante movimiento. Aunque al inicio de un proyecto pueda existir un alto nivel de comprensión compartida, esta claridad suele disminuir con el tiempo debido a cambios en el entorno y nuevos aprendizajes. La capacidad y flexibilidad para actuar con agilidad, junto con la posibilidad de recalibrar nuestra dirección de forma rápida, nos permite adaptarnos a las demandas dinámicas del mercado.
Estas desviaciones del camino óptimo, en forma de fluctuaciones, son lo que Lean Software Development denomina desperdicio: trabajo parcialmente hecho, procesos adicionales, funcionalidades innecesarias, cambios de tareas, tiempos de espera, etc.

Sin embargo, al combinar feedback loops que protegen el objetivo a largo plazo con pequeños pasos asegurados con loops más cortos, logramos mantenernos más cerca de ese camino óptimo, minimizando el desperdicio y maximizando la eficiencia.

Conclusiones
Hoy hemos explorado diversos escenarios en los que la presencia de feedback loops anidados permite actuar con fluidez, minimizando la desviación respecto al objetivo final. Estos bucles incluyen uno rápido y de bajo costo, que puede ejecutarse con mayor frecuencia, y otro más preciso, aunque más costoso, que se emplea ocasionalmente para recalibrar.
Estos son solo algunos de los muchos ejemplos que podrías encontrar en entornos con culturas y mentalidades alineadas con Lean, XP y DevOps.

Es esencial encontrar el equilibrio adecuado entre ambos bucles. Si solo ejecutamos el bucle interno, avanzaremos rápido, pero existe el riesgo de desviarnos de la meta y desperdiciar esfuerzos. En cambio, si dependemos únicamente del bucle externo, podríamos avanzar demasiado tiempo en una dirección que deje de ser correcta.
En próximas entregas hablaré sobre double loop learning, que, aunque comparte ciertas palabras clave, abre un melón más complejo y orientado a un nivel estratégico y organizacional. Subscríbete para asegurarte de que no te los pierdes.
Lecturas recomendadas
Outside-In TDD part 1 — Sandro Mancuso
Outside-In development with Double Loop TDD — Emily Bache
Maximizing Developer Effectiveness — Tim Cochran
Product-Market Fit is a Moving Target — Maja Voje
Chalk Talk: Mapping the Why, Assumptions, and Solutions — John Cutler
Thinking big, working small — John Cutler
CPSLive - Mental Models for Product Developers — Eduardo Ferro