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

Martillos y Clavos - La ley del clavo de oro

Martillos y Clavos - La ley del clavo de oro

Charla impartida en la Pamplona Software Crafters 2023.
https://www.youtube.com/watch?v=50jq26pbrbA

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

June 18, 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 #SCPNA
  2. “Pablito clavó un clavito, ¿qué clavito clavó Pablito?, el clavito

    que Pablito clavó, era el clavito de Pablito” @aartiles24 #SCPNA
  3. “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 #SCPNA
  4. Martillo de Maslow Sesgo cognitivo Tendencia excesiva de utilizar una

    herramienta familiar para resolver un problema desconocido. @aartiles24 #SCPNA
  5. 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 #SCPNA
  6. El Reto Integrar y el producto y equipo de una

    empresa adquirida @aartiles24 #SCPNA
  7. 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 #SCPNA
  8. 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 @aartiles24 #SCPNA Problemas del nuevo equipo
  9. 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 #SCPNA
  10. 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 #SCPNA
  11. Programación en parejas • Baja calidad del código • Silos

    de conocimientos • Alto tiempo empleado en depuración de errores • Bloqueos por aprobaciones de decisiones • Poca colaboración y comunicación ¿Qué problemas soluciona? @aartiles24 #SCPNA
  12. Automatización de pruebas • Cuellos de botella por QA manual

    • Bugs que escapan al QA manual • Releases estresantes • Dependencias desactualizadas por miedo a romper cosas • Tasa de errores por release alto ¿Qué problemas soluciona? @aartiles24 #SCPNA
  13. Problemas de segundo orden • ¿Por qué constituyen un problema

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

    problemas? • Burnout • Baja satisfacción de clientes • Problemas de seguridad • Tiempo de onboarding alto • Cada vez es más difícil añadir nuevas funcionalidades • Tareas que se rehacen por falta de coordinación • Los clientes pasan mucho tiempo sin percibir valor • El feedback viene en grandes lotes • Sprints solo dedicados a bug fi xes o mejoras • Baja calidad del código • Silos de conocimientos • Alto tiempo empleado en depuración de errores • Poca colaboración y comunicación • Bloqueos por aprobaciones de decisiones • Cuellos de botella por QA manual • Bugs que escapan al QA manual • Ramas de cambios que duran días o semanas • Releases estresantes • Dependencias desactualizadas por miedo a romper cosas • Tasa de errores por release alto @aartiles24 #SCPNA
  15. 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 #SCPNA
  16. 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 • Reputación Según la encuesta al equipo @aartiles24 #SCPNA
  17. Recapitulando hasta aquí • Martillo de Maslow: tendencia excesiva de

    utilizar una herramienta familiar • Solemos ver problemas donde no los hay para poner en práctica nuestras soluciones • Necesitamos entender qué problemas resuelven nuestras herramientas • No siempre somos conscientes de los problemas que tenemos • Heurística para descubrir y priorizar problemas • Una vez identi fi cado el problema y con fi rmada la solución, estudiar consecuencias antes de implementarla @aartiles24 #SCPNA
  18. Heurística de inventariado de problemas Para validar que nuestras soluciones

    resuelven los problemas reales 1. Partimos de un conjunto de soluciones o prácticas actuales del equipo. 2. Tenemos una hipótesis / intuición sobre qué soluciones son mejores. 3. Para cada solución, pensamos qué problemas soluciona. 4. Para cada nuevo problema buscar problemas de 2do. 5. Repetir en forma de árbol de problemas según la profundidad deseada. 6. Exponer al equipo a estos problemas e identi fi car con cuáles se identi fi can @aartiles24 #SCPNA
  19. 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 #SCPNA
  20. 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 #SCPNA
  21. 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 #SCPNA
  22. 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 #SCPNA
  23. Evolución de habilidades gracias al pensamiento sistémico @aartiles24 #SCPNA 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
  24. 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 #SCPNA
  25. Enrico Zaninotto, 2002 “La irreversibilidad es uno de los principales

    impulsores de la complejidad” FROM X PROGRAMMING TO THE X ORGANISATION @aartiles24 #SCPNA
  26. 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 #SCPNA
  27. 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 #SCPNA
  28. ¿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 #SCPNA
  29. Entendiendo el flujo de valor Ratio de defectos detectados en

    QA Diagrama y simulación @aartiles24 #SCPNA
  30. Entendiendo el flujo de valor Ratio de fallos por despliegue

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

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

    romper el bucle de burnout y fallos Bucle de causalidad @aartiles24 #SCPNA
  33. Automatización de pruebas Otra clave para romper el ciclo de

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

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

    si el ratio de fallos fuese cero Diagrama y simulación @aartiles24 #SCPNA
  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 #SCPNA
  37. 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 #SCPNA
  38. 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 proponer soluciones sin entender primero sus implicaciones: es fundamental comprender el sistema. • El modelado de sistemas es una herramienta valiosa para comunicar y educar. @aartiles24 #SCPNA
  39. “Si necesitas clavar un clavo, toda solución te parecerá un

    martillo.” Ley del clavo de oro @aartiles24 #SCPNA
  40. 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 #SCPNA