Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Martillos y Clavos - DevOpsDaysMadrid2023

Martillos y Clavos - DevOpsDaysMadrid2023

Charla impartida en el DevOps Days Madrid 2023
Una versión más corta (~25minutos) de la que ya había hecho en la Pamplona Software Crafters.

Hablé sobre cómo tomar decisiones a la hora de introducir nuevas prácticas, herramientas o tecnologías basándonos en los problemas que solucionan.

Conté mi experiencia integrando el equipo de una empresa que adquirimos cuyas prácticas de desarrollo de software eran muy diferentes a las de Audiense.

Además hice una breve introducción al pensamiento sistémico a la hora de entender el impacto que tiene introducir cambios en las prácticas de desarrollo de producto.

Alfredo Artiles

October 07, 2023
Tweet

More Decks by Alfredo Artiles

Other Decks in Programming

Transcript

  1. Lea las instrucciones de esta charla y consulte a su

    consultor de cabecera @aartiles24 #DevOpsDaysMadrid2023
  2. “Supongo que es tentador pensar que, si la única herramienta

    que tienes es un martillo, puedes tratar cualquier cosa como si fuera un clavo.” Abraham Maslow @aartiles24 #DevOpsDaysMadrid2023
  3. Martillo de Maslow Sesgo cognitivo Tendencia excesiva de utilizar una

    herramienta familiar para resolver un problema desconocido. @aartiles24 #DevOpsDaysMadrid2023
  4. Ejemplos de caer el Martillo de Maslow • Uso excesivo

    de un lenguaje de programación • Aplicación de patrones de diseño inadecuados • Dependencia excesiva de ciertas librerías o frameworks • Fijación en una arquitectura especí fi ca • Ignorar nuevas tecnologías o enfoques @aartiles24 #DevOpsDaysMadrid2023
  5. El Reto Integrar y el producto y equipo de una

    empresa adquirida @aartiles24 #DevOpsDaysMadrid2023
  6. Estado del equipo Cultura de desarrollo de producto diferente a

    la nuestra. Sin embargo: • El equipo estaba motivado y orgulloso de su producto. • El mercado valoraba el producto. Por eso les adquirimos. • Entregaban valor incluso a mayor velocidad que nuestros equipos. @aartiles24 #DevOpsDaysMadrid2023
  7. Despliegues manuales QA manual Sprints de 30 días No hacen

    pair programming Ramas que duran semanas Front y back waterfall TDD CI/CD T-Shaped Pair programming Sprints 15 de días TBD Vertical slicing Problemas del nuevo equipo Problemas del nuevo equipo @aartiles24 #DevOpsDaysMadrid2023
  8. Despliegues manuales QA manual Sprints de 30 días No hacen

    pair programming Ramas que duran semanas Front y back waterfall Prácticas del nuevo equipo @aartiles24 #DevOpsDaysMadrid2023
  9. Las 4 etapas de la competencia ¿Y si no sabes

    qué problemas tienes? Incompetente Competente Consciente Nivel 2: Incompetente Consciente Nivel 3: Competente Consciente Inconsciente Nivel 1: Incompetente Inconsciente Nivel 4: Competente Inconsciente Four stages of competence @aartiles24 #DevOpsDaysMadrid2023
  10. Automatización de despliegues • Baja frecuencia de despliegues • Alto

    tiempo sin aportar valor a clientes • Errores humanos • Alto tiempo de recuperación ante fallas • Releases estresantes ¿Qué problemas soluciona? @aartiles24 #DevOpsDaysMadrid2023
  11. Problemas de segundo orden • ¿Por qué constituyen un problema

    estos problemas? • ¿Qué impacto tienen en el negocio? @aartiles24 #DevOpsDaysMadrid2023
  12. Problemas de segundo orden ¿Por qué constituyen un problema estos

    problemas? • Burnout • Riesgo de perder personas clave • Pérdida de conocimientos • Coste de oportunidad • Alto tiempo sin aportar valor a clientes • Frustración de clientes • Bajas • Baja reputación • Releases estresantes • Baja frecuencia de despliegues • Alto tiempo sin aportar valor a clientes • Errores humanos • Alto tiempo de recuperación ante fallas • Ramas de cambios que duran días o semanas • Dependencias desactualizadas por miedo a romper cosas • Tasa de errores por release alto @aartiles24 #DevOpsDaysMadrid2023
  13. Identificando y priorizando problemas Encuestar al equipo para votar los

    problemas con los que se identi fi can y cuáles consideran más críticos @aartiles24 #DevOpsDaysMadrid2023
  14. Los problemas a resolver • Releases estresantes • Burnout •

    Riesgo de perder personas clave • Pérdida de conocimientos • Coste de oportunidad • Alto tiempo sin aportar valor a clientes • Frustración de clientes • Bajas • Baja reputación Según la encuesta al equipo @aartiles24 #DevOpsDaysMadrid2023
  15. Pensamiento Sistémico Enfoque holístico que se centra en entender cómo

    las partes de un sistema se interrelacionan dentro del contexto de un sistema más grande. @aartiles24 #DevOpsDaysMadrid2023
  16. Sistemas complejos Un conjunto de elementos que están coherentemente organizados

    para conseguir algo. Compuesto por: • Elementos: reservas • Interconexiones: fl ujos • Propósito / objetivo Se caracterizan por: • Ser adaptativos • Ser dinámicos • Orientado a objetivos • Auto preservación • Comportamientos evolutivos Más que la suma de sus partes @aartiles24 #DevOpsDaysMadrid2023
  17. Tráfico de una ciudad • Elementos interdependientes: automóviles, semáforos, señales

    de trá fi co, peatones, condiciones del clima • Factores in fl uyentes: accidentes, condiciones climáticas, decisiones de conductores • Comportamiento global impredecible y emergente • Di fi cultad en prever y controlar el comportamiento del sistema Ejemplo de sistema complejo @aartiles24 #DevOpsDaysMadrid2023
  18. Bucles de retroalimentación Serie de conexiones causales entre eventos o

    acciones que forman un bucle cerrado. Pueden reforzar o balancear el comportamiento del sistema. Bucle de causalidad @aartiles24 #DevOpsDaysMadrid2023
  19. ¿Por qué es crucial el pensamiento sistémico para el desarrollo

    de producto? @aartiles24 #DevOpsDaysMadrid2023
  20. Evolución de habilidades gracias al pensamiento sistémico Habilidad Iniciada Experimentada

    Enfoque de Pensamiento Pensamiento lineal, reacciona a eventos especí fi cos Comprende los bucles de retroalimentación, busca patrones y conexiones Resolución de Problemas Aplica parches a los síntomas de los problemas Identi fi ca las causas raíz y proporciona soluciones a largo plazo Gestión de Riesgos Puede tener di fi cultades para prever posibles problemas Anticipa riesgos y consecuencias debido a la comprensión de la dinámica del sistema E fi ciencia y Optimización Se enfoca en completar tareas Busca oportunidades de optimización y e fi ciencia del sistema completo Comunicación y Colaboración Puede tener di fi cultades para explicar las interacciones del sistema Comunica efectivamente sobre el comportamiento del sistema Diseño y Arquitectura Probablemente sigue diseños establecidos por otros Contribuye a las decisiones de diseño y arquitectura del sistema @aartiles24 #DevOpsDaysMadrid2023
  21. Enrico Zaninotto, 2002 “La irreversibilidad es uno de los principales

    impulsores de la complejidad” FROM X PROGRAMMING TO THE X ORGANISATION @aartiles24 #DevOpsDaysMadrid2023
  22. Flujos de sistemas de producción adaptable y flexible • Flujo

    de trabajo • Flujo conocimiento • Flujo de decisión • Flujo de información Enrico Zaninotto en The XP 2002 Conference @aartiles24 #DevOpsDaysMadrid2023
  23. Las 3 vías de la cultura DevOps • 1ra: Flujo/Pensamiento

    Sistémico • 2da: Ampli fi car Bucles de Retroalimentación • 3ra: Cultura de Experimentación Continua y Aprendizaje Flujo de valor tecnológico: hipótesis de negocio → servicio habilitado por tecnología que entrega valor al cliente The Three Ways: The Principles Underpinning DevOps @aartiles24 #DevOpsDaysMadrid2023
  24. Bucles de retroalimentación presentes en el desarrollo de producto Bucle

    de retroalimentación Baja E fi cacia Alta E fi cacia Validar que un cambio de código local funciona 2 minutos 5-15 segundos (dependiendo de la elección tecnológica) Encontrar la causa raíz de un defecto 4-7 días 1 día Validar que un componente se integra con otros componentes 3 días - 2 semanas 2 horas Validar que un cambio cumple con los requisitos no funcionales 3 meses 1 día - 1 semana (dependiendo del alcance del cambio) Ser productivo en un nuevo equipo 2 meses 4 semanas Obtener respuestas a una consulta técnica interna 1-2 semanas 30 minutos Lanzar un nuevo servicio en producción 2-4 meses 3 días Validar que un cambio fue útil para el cliente 6 meses o nunca 1 - 4 semanas (dependiendo del alcance del cambio) Maximizing Developer Effectiveness @aartiles24 #DevOpsDaysMadrid2023
  25. ¿Cómo aplicar el pensamiento sistémico al reto de cambiar la

    cultura de desarrollo de un equipo? • Entender el sistema: sus reservas, fl ujos, sus cuellos de botella, sus bucles de retroalimentación • Entender identi fi car y anticipar posibles comportamientos emergentes • Entender posibles resistencias al cambio debido a las interacciones y la retroalimentación entre sus componentes. • Minimizar riesgos. @aartiles24 #DevOpsDaysMadrid2023
  26. Entendiendo el flujo de valor Flujo de desarrollo local Diagrama

    y simulación @aartiles24 #DevOpsDaysMadrid2023
  27. Entendiendo el flujo de valor Ratio de defectos detectados en

    QA Diagrama y simulación @aartiles24 #DevOpsDaysMadrid2023
  28. Entendiendo el flujo de valor Esfuerzo de QA manual Diagrama

    y simulación @aartiles24 #DevOpsDaysMadrid2023
  29. Entendiendo el flujo de valor Frecuencia de despliegue Diagrama y

    simulación @aartiles24 #DevOpsDaysMadrid2023
  30. Entendiendo el flujo de valor Ratio de fallos por despliegue

    Diagrama y simulación @aartiles24 #DevOpsDaysMadrid2023
  31. Alimentando el Ciclo vicioso Los despliegues manuales alimentan el bucle

    de burnout y fallos Bucle de causalidad @aartiles24 #DevOpsDaysMadrid2023
  32. Rompiendo el ciclo vicioso Automatización de despliegue como clave para

    romper el bucle de burnout y fallos Bucle de causalidad @aartiles24 #DevOpsDaysMadrid2023
  33. Entendiendo el flujo de valor Flujo del backlog a producción

    si el ratio de fallos fuese cero Diagrama y simulación @aartiles24 #DevOpsDaysMadrid2023
  34. Automatización de pruebas Otra clave para romper el ciclo de

    burnout y fallos Bucle de causalidad @aartiles24 #DevOpsDaysMadrid2023
  35. Entendiendo el flujo de valor Ciclo vicioso de fallos y

    burnout Diagrama y simulación Ω @aartiles24 #DevOpsDaysMadrid2023
  36. Entendiendo el flujo de valor Flujo del backlog a producción

    si 4 de cada 10 cambios desplegados son bugs Diagrama y simulación @aartiles24 #DevOpsDaysMadrid2023
  37. Conclusiones • Evita confundir los problemas con las soluciones y

    viceversa. • Enfócate intensamente en los problemas, no en las soluciones. • Asegúrate de entender qué problemas están destinadas a resolver tus prácticas. • A veces no sabemos lo que no sabemos. • Expón a tus compañeros a esos escenarios y desafíos potenciales. • Evita implementar soluciones sin entender primero sus implicaciones: es fundamental comprender el sistema. • El modelado de sistemas es una herramienta valiosa para comunicar y educar. @aartiles24 #DevOpsDaysMadrid2023
  38. “Si necesitas clavar un clavo, toda solución te parecerá un

    martillo.” Ley del clavo de oro @aartiles24 #DevOpsDaysMadrid2023
  39. Bibliografía • Thinking in Systems • The DevOps Handbook: How

    to Create World-Class Agility, Reliability, and Security in Technology Organizations • The Project Phoenix • Accelerate and DORA Reports • Antifragile: Things that Gain from Disorder • SystemsThinking.dev @aartiles24 #DevOpsDaysMadrid2023
  40. Herramientas • Insights Maker: Free modeling and simulation tool •

    LOOPY: Free and open source causal loops and simulation diagraming tool • System Mapping Toolkit: Miro template • kumu.io: Systems mapping • Stella by iseesystems: Expensive modeling and simulation tool • Systems tools by Will Larson, free and open source @aartiles24 #DevOpsDaysMadrid2023