Systems Thinking Radar - Vol. 1
Equilibrio entre control y velocidad. Teoría de las ventanas rotas. The XY Problem. Juegos infinitos.
Esta es la primera entrega de un nuevo formato que intercalaré con los ensayos largos que suelo escribir. Tengo más temas acumulados en borrador de los que seré capaz de escribir, y tampoco creo que os apetezca leer artículos extensos con mayor frecuencia.
Mi idea con este formato más ligero es poder compartir notas más en crudo sobre el contenido que voy consumiendo, a la vez que me permita revisitar algunos conceptos ya tratados, pero en un formato más resumido.
🔄 Un bucle
Equilibrio entre control y velocidad
Tener todo bajo control puede parecer ideal, pero en realidad, es una señal de que podrías ir más rápido. — Eduardo Ferro
Conseguir el equilibrio entre control y velocidad en desarrollo de software solo es posible mediante ciclos cortos de aceleración, aprendizaje y ajuste.
Inspirado en la última entrega de Edu Ferro de la serie sobre Lean Software Development Entregar lo más rápido posible.
🤔 Una teoría
Teoría de las ventanas rotas
Ya introduje brevemente la teoría de las ventanas rotas como parte del artículo sobre la «tragedia de los recursos comunes».
La teoría de las ventanas rotas, originaria de la criminología, sugiere que la presencia de desorden o la tolerancia hacia la degradación incentiva a más personas a contribuir al desorden. Aplicado al desarrollo de software, si la base de código contiene malas prácticas, desorden o soluciones precarias, es probable que otras desarrolladoras se sientan justificadas para seguir produciendo código de calidad similar. Esto puede llevar a una reducción en la calidad general del código y a mayores dificultades para su mantenimiento o mejora.
Esta semana, Val Muñoz de Bustillo ha publicado en Polymatas un profundo análisis sobre el origen de la teoría de las ventanas rotas y hasta qué punto está respaldada por la evidencia. También disponible en formato podcast.
Val resume que, aunque la evidencia aún no es completamente concluyente en cuanto a la reducción del crimen y comportamientos extremos influenciados por el desorden, sí lo es en cuanto a su contribución al aumento del desorden.
Desde mi experiencia en el desarrollo de software, encuentro que esta teoría tiene bastante validez cuando hablamos de la entropía del código. Lo he experimentado personalmente y lo he observado en mis equipos. Pero, ¿qué dice la evidencia sobre su aplicación en el contexto del desarrollo de software?
The broken windows theory applies to technical debt
Este estudio examinó la conexión entre la teoría de las ventanas rotas (BWT por sus siglas en inglés) y la deuda técnica. Se encontró que niveles elevados de deuda técnica existente en un sistema llevaban a los desarrolladores a introducir más deuda técnica al extender el sistema. Los desarrolladores eran más propensos a tomar decisiones subóptimas, como usar nombres de variables poco descriptivos o reimplementar código en lugar de reutilizar la funcionalidad existente (Levén et al., 2022).
El objetivo fue analizar empíricamente si la deuda técnica existente en un sistema fomenta la introducción de más deuda técnica por parte de los desarrolladores.
Se utilizó un enfoque mixto, que incluyó un experimento controlado con 29 desarrolladores y entrevistas de seguimiento. Los desarrolladores completaron tareas de extensión de sistemas con alta o baja deuda técnica.
El análisis mostró que la presencia de deuda técnica afecta la tendencia de los desarrolladores a:
Reimplementar en lugar de reutilizar funcionalidad.
Usar nombres de variables no descriptivos.
Introducir otros problemas de código (code smells).
Behavioral Influence of Technical Debt
Otro estudio observó que los desarrolladores tienden a «auto-admitir» deuda técnica cuando trabajan en entornos donde la calidad del código ya es baja. El efecto de las ventanas rotas se refleja aquí, ya que los desarrolladores se sienten menos motivados para mantener altos estándares en sistemas con problemas existentes (Wehaibi et al., 2016).
🧠 Un modelo mental
The «XY Problem»
El «XY Problem» es un término que describe una situación en la que alguien plantea una pregunta sobre la solución que ha ideado para un problema (Y), en lugar de preguntar directamente sobre el problema original (X). Como resultado, los demás intentan ayudar a resolver la solución propuesta (Y), que podría no ser la mejor opción, cuando en realidad el enfoque correcto sería resolver el problema original (X).
Ejemplo:
Problema X: Necesito obtener datos de una API rápidamente.
Solución propuesta Y: ¿Cómo puedo usar caché para reducir el tiempo de respuesta?
Aquí, en lugar de preguntar cómo mejorar el rendimiento general al consultar una API (problema X), la persona ha preguntado cómo implementar una solución específica (Y). Quizás la mejor respuesta hubiera sido optimizar la propia consulta a la API o usar otro método más eficiente, pero al centrarse en Y, se limita el enfoque a una solución que puede no ser la ideal.
También en estadísticas y la teoría de sistemas tenemos el error tipo III (δ), que se define como «plantear la pregunta equivocada y usar la hipótesis nula incorrecta». En este caso, no solo se responde incorrectamente, sino que todo el planteamiento del problema está mal estructurado desde el inicio, incluyendo tanto la pregunta como las hipótesis subyacentes.
Cuando identificamos que se está cayendo en el «XY Problem» y conseguimos identificar el problema real, estamos aplicando disolución de problemas por reestructuración.
Fuente: xyproblem.info
🗣️ Una cita
Juegos infinitos
El 9 de noviembre de 1985 conseguí el objetivo que había perseguido durante toda mi vida, al convertirme en el campeón del mundo (si tiene sentido hablar de objetivos de toda una vida a lo veintidós años). Las palabras que Rona Petrosian, esposa del anterior campeón mundial, pronunció durante la celebración me dejaron perplejo. «Lo siento por ti ‒dijo‒. El día más importante de tu vida ha acabado». ¡Menudo comentario para una fiesta de celebración! Pero recordé aquellas palabras con frecuencia en los años siguientes. — Garry Kasparov
Cuando leí esto me sentí muy identificado con Kasparov. Aunque estoy muy lejos de ser el mejor del mundo en nada, sí que me he puesto objetivos que parecían inalcanzables. Y, una vez alcanzados, sentía esa especie de vacío en plan: «¿Y ahora qué?»
Esta cita de Kasparov se explica maravillosamente con otra de Kevin Kelly:
A los juegos finitos se juega para ganar o perder. A los infinitos, para seguir jugando. Busca juegos infinitos porque dan recompensas infinitas. — Kevin Kelly
Lo ideal es que el propio camino se convierta en el objetivo. Disfrutar del día a día, hacer deporte porque te hace sentir mejor. Como subproducto, puede que te pongas en forma y consigas ese six pack, pero lo importante es que el proceso mismo sea gratificante.
Como propone James Clear en Hábitos Atómicos, no hay cambios duraderos de hábitos sin cambios en la identidad. La meta no es correr un maratón, la meta es convertirse en corredor.
Más sobre juegos infinitos:
Esto es todo por hoy. Si te gusta este nuevo formato, házmelo saber, así como cualquier sugerencia sobre otra categoría de píldoras que sería interesante añadir.
Me gusta este formato y también el anterior.
Me parecen muy interesantes tus reflexiones en los dos casos.