Sunday, April 14, 2024

Conceptos Lean interesantes para desarrollo de software

 En esta entrega de nuestra serie sobre Lean Software Development, nos enfocaremos en explorar una serie de conceptos fundamentales que no solo enriquecerán nuestro diálogo a lo largo de los próximos artículos sino que también aspiran a despertar la curiosidad del lector para profundizar en ellos de manera independiente. El objetivo es doble: dotarnos de un lenguaje común para discutir principios y prácticas Lean en el desarrollo de software y, al mismo tiempo, incentivar una exploración autodidacta que enriquezca nuestra comprensión y aplicación de estos conceptos en el entorno laboral.

Valor

  • Valor en Lean: Se define desde la perspectiva del cliente. Cualquier acción que satisfaga una necesidad del cliente, solucione un problema o nos permita aprender sobre dicho problema o sobre el comportamiento de la solución, se considera de valor. Es crucial identificar y concentrarse en las actividades que generan valor para aumentar la eficiencia. Si algo no está desplegado y activado, su valor es cero. 
  • Cadena de Valor: Representa la secuencia completa de actividades necesarias para entregar un producto o servicio al cliente. En nuestro caso, la cadena de valor abarca desde entender el problema hasta que la solución (software) está en manos del cliente. Si varios equipos intervienen en esta cadena, es vital identificarlos y optimizar la cadena de valor completa. No basta con ser rápidos en el desarrollo si no podemos implementar adecuadamente la solución, o si ésta no es la correcta. Siempre debemos enfocarnos en optimizar toda la cadena de valor.
  • Flujo / Flow: Se refiere a la manera en que el trabajo avanza de forma continua a través de la cadena de valor. Un flujo óptimo se caracteriza por el movimiento constante del trabajo, sin interrupciones, bloqueos, ni cuellos de botella. El objetivo es mantener un flujo continuo y sostenible en el tiempo, poniendo especial atención en mejorar este flujo a lo largo de toda la cadena de valor.

Eficiencia

  • Eficiencia de Flujo: Esta métrica mide la proporción del tiempo que un ítem de trabajo es activamente procesado en comparación con el tiempo total desde que se inicia hasta que se entrega. Un flujo eficiente busca minimizar el tiempo inactivo. En otras palabras, evalúa la relación entre el tiempo activo de trabajo en un cambio y el tiempo que dicho cambio permanece bloqueado o en espera en una cola. El objetivo es reducir al máximo estos periodos de inactividad para agilizar la entrega.
  • Eficiencia de Recursos: A diferencia de la eficiencia de flujo, la eficiencia de recursos se centra en maximizar la utilización de los recursos disponibles, como personas y máquinas. Este enfoque tiende a mantener a los empleados lo más ocupados posible, lo cual frecuentemente conduce a la especialización de tareas y a la formación de colas de espera antes de cada especialidad. Esto garantiza que cada área (front-end, QA, back-end, operaciones, producto) siempre tenga trabajo. Sin embargo, puede resultar en que cada cambio tome más tiempo en estar disponible para el cliente, contraviniendo los objetivos de Lean Software Development.
  • Eficiencia en Lean: Aunque Lean reconoce ambos tipos de eficiencia, da prioridad a la eficiencia de flujo porque maximiza la velocidad de entrega al cliente. Esto no significa que se ignore la optimización de la eficiencia de recursos, pero la prioridad inicial es el cliente a través de la eficiencia de flujo. Adicionalmente, dado que Lean pone un gran énfasis en la eliminación de desperdicios, la eficiencia global alcanzada suele ser muy alta. Traduciendo a desarrollo de software, primero optimizamos el flujo para poder sacar los incrementos en el menor tiempo posible (eficiencia de flujo) y una vez que tenemos ese proceso funcionando de forma sostenible, optimizamos recursos y tiempo de personas (eficiencia de recursos). En siguientes articulos veremos como optimizar ese flujo continuo de entrega de valor mediante la Entrega Continua / CD y los equipos multi disciplinares. Este fantástico video explica perfectamente los tipos de eficiencia en Lean.


Métricas Lean

  • Throughput: El throughput (o tasa/ritmo/frecuencia de entrega) en una cadena de valor mide cuánto valor se genera para el cliente por unidad de tiempo. En un contexto de manufactura, esto podría referirse al número de piezas o elementos producidos por un proceso en una unidad de tiempo específica (día, hora, etc.). En el desarrollo de software, se refiere a cada incremento que desplegamos y que el cliente puede empezar a usar. Maximizar el throughput es crucial para incrementar la eficiencia en la entrega de valor.
  • Lead Time: Este término se refiere al tiempo total que transcurre desde que se identifica la necesidad de un producto o servicio hasta que éste es entregado al cliente. Reducir el lead time es fundamental para la satisfacción del cliente. En el caso de Lean Software Development, corresponde al tiempo desde que detectamos una necesidad hasta que la solución está disponible para el cliente.
  • Tiempo de Ciclo / Cycle Time: Mide el tiempo que tarda en completarse un ciclo de trabajo específico dentro del proceso de producción. Ofrece una perspectiva del rendimiento operativo interno. Para el desarrollo de software, el tiempo de ciclo se mide desde que comenzamos a trabajar en un incremento hasta que está desplegado y activo para el cliente. El objetivo es minimizar el tiempo de ciclo para obtener retroalimentación de manera más frecuente, lo cual es crucial para la mejora continua. Para más información sobre la importancia de trabajar en pequeños lotes, puedes consultar https://www.eferro.net/2021/01/small-batches-for-win-continuous.html.


  • Trabajo en Progreso (WIP): Este término se refiere a todos los ítems de trabajo que se han iniciado pero aún no se han completado. En el contexto del desarrollo de productos y software, el WIP no solo incluye el código en una rama en la que se está trabajando, sino todo el trabajo y contexto de cualquier incremento que no está desplegado y activado para el cliente. Esto abarca elementos en espera de revisión de código, validación de seguridad, o tareas que están analizadas pero aún no han comenzado. Esencialmente, cualquier trabajo del que el cliente aún no se ha beneficiado pero que hemos comenzado de alguna manera. Cuando se usa como métrica, sería el número de tareas que se encuentran en este estado.
  • Límite de Trabajo en Progreso (WIP Limit): Se refiere a la restricción establecida sobre la cantidad máxima de tareas en curso permitidas en un sistema. Este límite es crucial para mantener el enfoque, reducir el tiempo de entrega y mejorar la calidad, ya que previene la sobrecarga de trabajo y promueve la finalización de tareas antes de comenzar nuevas. Establecer estos límites ayuda al equipo a mejorar su forma de trabajar, enfocándose en entregar valor al cliente en lugar de abrir nuevas tareas cuando se encuentran bloqueos. Mantener un bajo nivel de trabajo en curso minimiza la necesidad de cambiar de tarea, reduciendo así el desperdicio asociado con el cambio de contexto frecuente.


Organización del trabajo / Flujo

  • Just-in-Time (JIT): Este principio se centra en producir y entregar exactamente lo que se necesita, en el momento que se necesita y en la cantidad necesaria. En el desarrollo de software, esto implica realizar muchas actividades solo cuando son necesarias y en pequeños lotes. A nivel de desarrollo, el JIT implica trabajar en pasos muy pequeños y siempre en respuesta a la necesidad actual. Por ejemplo, implementamos una funcionalidad solo cuando hay una demanda real, o proponemos una mejora de arquitectura cuando los requisitos del negocio o del cliente lo requieren. Trabajar de esta manera es muy eficiente, pero requiere flexibilidad en el proceso y buenas prácticas técnicas que permitan agilidad en el trabajo.
  • Procesamiento Pull: Este enfoque asegura que la producción se base en la demanda real, en contraposición al procesamiento Push, que produce según lo planificado. En desarrollo de software, trabajar con un enfoque Pull significa que iniciamos las tareas solo cuando existe una demanda específica del cliente o cuando se basan en hipótesis en negocios no validados. Esto mejora la eficiencia y reduce el exceso de producción. Contrastando con el método Push, que define un plan de trabajo y empuja las tareas independientemente de la demanda real.


Desperdicio / waste

  • Muda: Este término japonés significa "desperdicio". En Lean, se identifican siete tipos de muda que deben ser eliminados para optimizar los procesos: sobreproducción, tiempo de espera, transporte, sobreprocesamiento, inventario, movimientos y defectos. En el próximo artículo de esta serie, describiremos los principales tipos de desperdicio en el desarrollo de producto de software y exploraremos prácticas que nos ayudan a eliminarlos o minimizarlos.
  • Muri: Se refiere al concepto japonés de sobrecarga o esfuerzo innecesario. En el contexto Lean, muri implica una presión excesiva sobre los empleados y los procesos, lo que puede desembocar en ineficiencia y desgaste del personal. La meta de eliminar muri es asegurar que el trabajo y los recursos se optimicen sin sobrecargar el sistema, promoviendo un ambiente laboral eficiente y sostenible. En nuestros equipos, muri puede generarse por un exceso de carga cognitiva o por la presión para completar tareas en un proceso Push. En un proceso Pull, es menos probable que ocurra muri, ya que el WIP está limiteado y solo comenzamos una tarea cuando existe la capacidad disponible al haber concluido otra.
  • Mura: Significa inconsistencia o irregularidad. En Lean, mura se asocia con la variabilidad en los procesos de producción que conduce a ineficiencias y desperdicios. La estrategia para abordar mura incluye la estandarización de procesos y la nivelación de la carga de trabajo, lo que resulta en un flujo de trabajo más constante y predecible, mejorando así la eficiencia y la calidad del servicio o producto. Sin embargo, en desarrollo de software donde la alta variabilidad es inherente (demanda irregular, incertidumbre, alta complejidad, desconocimiento, necesidades emergentes), es más prioritario abrazar el cambio y ser adaptable (usando prácticas de desarrollo ágil), en lugar de intentar evitarlo.


Imagen usada con permiso del autor Jose Manuel Beas

Cambio y mejora

  • Kaizen: Esta filosofía japonesa, cuyo significado es "cambio para mejorar", es fundamental en el pensamiento Lean. Kaizen promueve la mejora continua a través de pequeños cambios graduales que, acumulativamente, resultan en grandes mejoras en eficiencia y satisfacción del cliente. Implica a todos los niveles de la organización y se centra en mejorar los procesos diarios, haciendo que cada empleado participe activamente en la sugerencia de mejoras. Una forma de implementar este proceso Kaizen es mediante retrospectivas y generando el espacio para implantar las mejoras identificadas por el equipo.
  • Kaikaku: En contraste con Kaizen, Kaikaku significa "reforma radical". Este enfoque busca implementar cambios grandes y disruptivos que mejoren significativamente el rendimiento y la eficiencia. Generalmente es iniciado desde la dirección de la empresa o de la unidad y puede llevar a innovaciones revolucionarias. Aunque Kaikaku puede resultar en mejoras substanciales, también conlleva mayores riesgos debido a la magnitud de los cambios que propone. Importante mencionar que el Kaikaku NO se refiere a los cambios técnicos u organizativos que son obligados por situaciones de alto riesgo para la supervivencia de la empresa (bancarrota técnica, caos organizativo, incidentes en producción, etc).
  • A3 Thinking: Este es un enfoque sistemático y estructurado para la resolución de problemas, utilizado dentro de la metodología Lean. A3 Thinking se ayuda de un documento del tamaño de una hoja de papel A3 para condensar el problema, el análisis, las soluciones propuestas y los planes de acción en una vista integral. Este proceso no solo fomenta el pensamiento crítico y la colaboración, sino que también mejora la comunicación entre los miembros del equipo, permitiendo abordar desafíos complejos de manera más efectiva y eficiente. En mi experiencia, el A3 Thinking es una muy buena herramienta para cambios significativos en pasos muy pequeños, sobre todo cuando las mejoras requieren un seguimiento muy detallado y continuo.


Recursos altamente recomendados:

Algunos de los conceptos descritos en este artículo, aunque fundamentales, pueden ser inicialmente contraintuitivos. La experiencia muestra que se suelen entender mejor mediante demostraciones visuales. Por esta razón, os recomiendo encarecidamente ver los siguientes videos, la mayoría de los cuales son bastante cortos, para profundizar y realmente comprender estos principios de manera práctica:

Eficiencia de recursos vs Eficiencia de flujo

WIP Limits:

General processes / Team Work:


Con estas recomendaciones terminamos este pequeño artículo sobre conceptos que nos pueden ser útiles para entender el resto de artículos de la serie sobre Lean Software Development.

En nuestra próxima entrega, nos enfocaremos en Eliminar Desperdicios, uno de los principios claves de Lean Software Development.

¡Nos vemos en la próxima entrega!


Recursos relacionados:

Sunday, April 07, 2024

Introducción al Lean Software Development

Descubrí que aceptar el cambio (en lugar de resistirme a él), siendo flexible y adaptable (en vez de aferrarme a un plan fijo), me permite impactar significativamente en el desarrollo de software sin sufrir ansiedad constante. Este descubrimiento me llevó a adoptar entusiastamente el Desarrollo Ágil de Software (https://agilemanifesto.org/iso/es/manifesto.html). Con el tiempo, en este camino de adaptación y mejora continua, los equipos con los que he colaborado hemos refinado las prácticas sostenibles y descartado aquellas que resultaban superfluas o poco beneficiosas. Este proceso, enriquecido por Extreme Programming, Continuous Delivery y, especialmente, por los principios Lean, nos ha permitido desarrollar un enfoque de trabajo muy efectivo. Sin embargo, al conversar con colegas, me sorprendió descubrir que los principios Lean y su aplicación en el desarrollo de software no son ampliamente conocidos. Por ello, he decidido crear una serie de publicaciones para compartir qué es el Lean Software Development y cómo lo implementamos en nuestros equipos.


Una aclaración importante, sé que cada contexto puede requerir aproximaciones diferentes y que el enfoque ágil/Lean no es la mejor opción en ciertos contextos, pero lo cierto es que dado que es la forma de trabajar que me gusta, de forma casi automatica suelo terminar trabajando en entornos en los que tiene sentido.

Orígenes del Lean Software Development

El concepto de Lean Manufacturing, con sus raíces profundamente ancladas en el revolucionario Sistema de Producción de Toyota (TPS) de la década de 1950, es una filosofía enfocada en maximizar el valor mediante la eliminación de desperdicios. Este enfoque no solo transformó la fabricación automotriz sino que también sentó las bases para las metodologías ágiles en el desarrollo de software.

Principios Clave del Sistema de Producción Toyota:

  • Jidoka (Automatización con un toque humano): Este principio enfatiza la importancia de la automatización en la producción no solo para reducir costos, sino también para prevenir defectos. Permite detener la producción ante cualquier problema para evitar la creación de productos defectuosos.
  • Just-in-Time (JIT): Bajo este enfoque, cada proceso produce únicamente lo necesario para el siguiente paso, adoptando un proceso de producción "pull" en lugar de "push".
  • Kaizen (Mejora continua): El Kaizen promueve pequeñas mejoras constantes en el proceso, lo que facilita el aprendizaje y la adaptación continua, mejorando la satisfacción tanto de clientes como de participantes en la producción.

Estos principios, junto con otros del TPS, enfocan en la mejora continua, la eliminación de desperdicios y el respeto por las personas involucradas en los procesos.

La transición hacia el desarrollo de software ágil fue influenciada notablemente por estos ideales, especialmente en lo que respecta a la mejora continua, la calidad del proceso y un flujo de trabajo basado en la demanda real, en contraposición a la producción basada en suposiciones.

Contexto Histórico y Evolución hacia el Desarrollo Ágil:

Posterior a la Segunda Guerra Mundial, Japón enfrentó severas restricciones económicas que hacían inviable la producción en masa al estilo occidental. En este contexto, las ideas de W. Edwards Deming sobre calidad y mejora continua encontraron un terreno fértil. Deming, un estadístico y consultor de gestión estadounidense, enfatizó la calidad y eficiencia en la producción como medios para reconstruir la economía japonesa. Estos principios de control de calidad, junto con el enfoque en minimizar desperdicios y maximizar eficiencia, fueron adoptados y adaptados por Toyota, dando origen al TPS.

"Learning is not compulsory. Neither is survival." W. Edwards Deming

A principios de los años 2000, mientras el desarrollo de software ágil ganaba popularidad, Mary y Tom Poppendieck, quienes tenían experiencia en Lean Manufacturing y estaban involucrados en el desarrollo de software ágil, adaptaron los principios Lean al desarrollo de software. Publicaron el primer libro de una serie que describe la metodología Lean Software Development (Lean Software Development: An Agile Toolkit

), marcando así un puente claro entre las prácticas de manufactura y el desarrollo de software ágil.

Los principios de Lean Manufacturing, originados en el TPS y reforzados por la influencia de Deming, no solo revolucionaron la fabricación sino que también trascendieron industrias, modelando profundamente el desarrollo de software ágil. La adaptación de estos principios al mundo del software por los Poppendieck subraya la universalidad de la mejora continua, la calidad, y la eficiencia, demostrando cómo los enfoques orientados a la eliminación de desperdicios y al respeto por las personas pueden conducir a innovaciones significativas.

Principios fundamentales

Lean Software Development se basa en siete principios fundamentales que buscan eliminar el desperdicio y optimizar el proceso de desarrollo:

  1. Eliminar el desperdicio: Cualquier cosa que no agregue valor al cliente se considera desperdicio y debe ser eliminada.
  2. Construir calidad desde el inicio: La calidad debe ser una parte integral del proceso de desarrollo, no una consideración posterior.
  3. Crear conocimiento: El aprendizaje continuo y la mejora del conocimiento son esenciales para el desarrollo de software.
  4. Diferir compromisos: Tomar decisiones lo más tarde posible para mantener la flexibilidad y adaptarse a los cambios.
  5. Entregar rápido: La entrega rápida permite recibir retroalimentación temprana y realizar ajustes necesarios.
  6. Respetar a las personas: Un ambiente de respeto y colaboración es fundamental para el éxito del equipo.
  7. Optimizar el todo: Se debe considerar el proceso de desarrollo en su totalidad para mejorar la eficiencia.

Beneficios de adoptar Lean en el desarrollo de software

La implementación de Lean en el desarrollo de software trae consigo numerosas ventajas, entre ellas, la reducción de costes y tiempo de desarrollo, el incremento en la calidad del producto y la satisfacción del cliente, así como la creación de un ambiente laboral más gratificante para el equipo. Lean fomenta una cultura de mejora constante y adaptabilidad, aspectos cruciales en momentos de alta incertidumbre y evolución acelerada del mercado.

Por primera vez en la historia del desarrollo de software, disponemos de datos que definen cómo debe ser una organización tecnológica de alto rendimiento, gracias a las investigaciones realizadas por el equipo de DevOps Research and Assessment (DORA). Según se detalla en el libro Accelerate, el enfoque lean es fundamental en la creación y el escalado de equipos y organizaciones tecnológicas.

Accelerate research

Al integrar Lean Software Development, XP o la combinación de ambas, con Lean Product Development y Lean Management, se forma un equipo de alto impacto, donde, además, se reduce el estrés y la frustración, elementos que considero tan esenciales como el impacto mismo (https://www.eferro.net/2017/12/how-vs-what.html).


Un breve adelanto de lo que se cubrirá en la serie

En las próximas entradas, detallaremos cada principio de Lean, mostrando su aplicación práctica en los equipos con los que trabajo. Me esforzaré por compartir abundantes ejemplos y explicar nuestro proceso de toma de decisiones.

A medida que se publiquen los distintos artículos de la serie los enlazaré aquí:

Si bien Lean ha influenciado diversos conceptos y métodos, como DevOps, Lean Product Development y Lean Startup, en esta serie profundizaremos en el Lean Software Development. No obstante, es importante mencionar que, a nivel de equipo, buscamos extender la aplicación de los principios Lean más allá, abarcando desde el desarrollo en sí hasta las decisiones de producto y la gestión de otras tareas y procesos. Ya sabéis “Make the right thing, make the thing right”.

El próximo artículo se centrará en explicar algunos conceptos Lean que usaremos durante toda la serie.¡Continuemos aprendiendo y evolucionando juntos hasta entonces!


Recursos:

Saturday, March 30, 2024

Good talks/podcasts (Mar 2024 I)

These are the best podcasts/talks I've seen/listened to recently:
  • Hexagonal Architecture from its Inventor -Alistair Cockburn, Humans & Technology, inc. | Craft, 2023 (Alistair Cockburn) [Architecture, Architecture patterns, Evolutionary Architecture, hexagonal] [Duration: 00:42] (⭐⭐⭐⭐⭐) Great explanation of hexagonal architecture made by its original author. Essential if you use or are considering using this type of architecture. Good information also to know when not to use them.
  • How To Use TDD For UI Design (Dave Farley) [Software Design, tdd] [Duration: 00:13] In this episode, Dave explores testing at the edges of the system with examples based on testing UI code as part of a TDD approach. The same tactic can be used to test other components that are difficult to test.
  • JUXT Cast S5E4 - Special with Kent Beck (Kent Beck, Jeremy Taylor, Malcom Sparks, James Henderson) [Software Design, XP] [Duration: 01:11] Interesting conversation about the concept of eventual business consistency () / bitemporality and about XP.
  • The next grand challenge for AI (Jim Fan) [AI] [Duration: 00:10] Inspirational talk about the learning of AI agents and the power of using open games as test and learning environments.
  • Maintainable Ep 161: How Small Can We Make This Problem (Chad Fowler) [Architecture, Architecture patterns, Engineering Career, Engineering Culture] [Duration: 00:58] (⭐⭐⭐⭐⭐) Great episode with Chad Fowler. Interesting ideas about design, architecture, software design, microservices, and the state of the industry.
  • Scaling Organizations and Design with James Shore (James Shore, Chris Lucian, Austin Chadwick) [Agile, Fast Agile, MobProgramming, Software Design, Technical Practices, testing] [Duration: 00:48] (⭐⭐⭐⭐⭐) Exciting conversation with James Shores. It covers many topics, including fast-agile, mobbing, testing without mocks, technical practices, etc. Highly recommended.
  • Thinking Asynchronously: App Integration Patterns for Microservices (Rebekah Kulidzan) [Architecture, Architecture patterns] [Duration: 00:44] Good list of communication and integration patterns between services. Great talk to remember the basics and clarify some concepts.
Reminder: All of these talks are interesting, even just listening to them.

Related:

Sunday, March 24, 2024

Best talks I have recommended on the blog




As some of you know, I maintain a database of the talks and podcasts I watch or listen to. I usually save a description, the topics discussed, and a rating. I often use this database to make recommendations or to search for ideas and content. This is the list of all the talks or podcasts that I have recommended, and I have assigned a rating of 5/5. There is a mix of talks in English and Spanish.
  • Engineering Your Organization: Services, Platforms, and Communities (Randy Shoup) [Company Culture, Engineering Culture, Inspirational, Management, Platform, Platform as a product, Technology Strategy] [Duration: 00:38] (⭐⭐⭐⭐⭐) Great summary about the different ways high-performing engineering organizations gain leverage by specialization and sharing.
  • Building and Scaling a High-Performance Culture (Randy Shoup) [Continuous Delivery, Devops, Engineering Culture, Inspirational] (⭐⭐⭐⭐⭐) A great talk about culture for high-performance tech organizations. Good complement for Accelerate and based in his experience at ebay and google.
  • Improving Software Flow (Randy Shoup) [Agile, Continuous Delivery, Engineering Culture, Inspirational, Technical leadership] [Duration: 00:46] (⭐⭐⭐⭐⭐) Great presentation, in which Randy, starts from the 5 ideals of the Unicorn project (Locality and Simplicity, Focus, Flow, and Joy, Improvement of Daily Work, Psychological Safety, Customer Focus) to describe what we can do as technical leaders and as engineers to improve our ability to build and deliver software.
  • Improving Software Flow (Randy Shoup) [Devops, Flow, Inspirational, Lean, Lean Software Development, Technical leadership, leadership] [Duration: 00:50] (⭐⭐⭐⭐⭐) In this session, Randy explains how they improve the overall flow and the engineering capacity following the ideas in the Unicorn Project (Locality and Simplicity, Focus, Flow, and Joy, Improvement of Daily Work, Psychological Safety, and Customer Focus). It is an excellent talk about generating/improving an engineering culture following lean principles.
  • Driving a Tech-led Reimagination of eBay Through DevOps (US 2021) (Randy Shoup, Mark Weinberg) [Devops, Technical leadership] [Duration: 00:33] (⭐⭐⭐⭐⭐) A very interesting session about eBay's strategy to improve delivery performance. A great example of engineering leadership.
  • Ten (Hard-Won) Lessons of the DevOps Transition (Randy Shoup) [Devops, Engineering Culture, Inspirational] [Duration: 00:26] (⭐⭐⭐⭐⭐) This talk discusses the cultural change required to adopt a devops mentality. Excellent advice and warnings derived from Randy's experience leading teams at eBay, Google, and KIXEYE.
  • Attitude Determines Altitude- Engineering Yourself (Randy Shoup) [Engineering Career, Engineering Culture, Management] (⭐⭐⭐⭐⭐)
  • Embracing Uncertainty (Dan North) [Engineering Culture, Inspirational] [Duration: 00:55] (⭐⭐⭐⭐⭐) Very interesting talk to be aware of our aversion to uncertainty. We usualy make bad decisions in order to avoid the feeling of uncertainty.
  • The Value of Flow 14 09 17 (Dan North) [Agile, Continuous Delivery, Flow, Lean Software Development] [Duration: 00:27] (⭐⭐⭐⭐⭐) Great explanation for flow efficiency for soft delivery
  • The Journey to Continuous Delivery (Dan North) [Agile, Continuous Delivery, Flow, Lean] (⭐⭐⭐⭐⭐) Modern agile and how to introduce it. (good ideas about, flow, value, and teams).
  • Beyond Developer (Dan North) [Agile, Company Culture, Engineering Culture, Inspirational] [Duration: 00:43] (⭐⭐⭐⭐⭐) The modern developer needs to be constantly reinventing themselves, learning, and helping others to do the same. In this session, Dan explores some of the skills and characteristics of the modern developer, and suggests some ways you can grow them for yourself.
  • Beyond Features: rethinking agile software delivery (Dan North) [Agile, Inspirational, Lean, Lean Software Development] [Duration: 01:14] (⭐⭐⭐⭐⭐) Maybe we've been thinking about delivery all wrong. Maybe features aren’t the point after all. Maybe there are other kinds of work that we should recognise, schedule and track as first class citizens. Maybe this could take some of the uncertainty out of the delivery process, and give us back our sanity. Maybe.
  • Complexity is Outside the Code (Dan North, Jessica Kerr) [Agile, Engineering Culture, Inspirational, Technology Strategy] (⭐⭐⭐⭐⭐) Dan North and Jessica Kerr make a journey through complexity. At the other side we may find simplicity, or we may find the light at the end of the tunnel is just another oncoming ESB.
  • Microservices: Software that Fits in Your Head (Dan North) [Architecture patterns, Evolutionary Architecture] (⭐⭐⭐⭐⭐) IMHO this is the more interesting talk I show this year. No spoilers :)   I agree one hundred per cent with the talk. Just show it.
  • Snow White and the 777.777.777 Dwarfs (Gojko Adzic) [Agile, Cloud, Inspirational, Product, Technology Strategy] [Duration: 00:45] (⭐⭐⭐⭐⭐) Great talks about how cloud is changing the risk profile of our application and the software quality practices.
  • Make Impacts Not Software (Gojko Adzic) [Lean Product Management, Lean Software Development, Product, Product Strategy] [Duration: 00:51] (⭐⭐⭐⭐⭐) An essential talk to understand how to get the most impact with the least amount of software (and thereby reduce basal cost and time to market). Highly recommended.
  • Adaptive Planning Beyond User Stories (Gojko Adzic) [Lean Product Management, Lean Software Development, Product, Product Discovery] [Duration: 00:55] (⭐⭐⭐⭐⭐) Gojko gives a masterclass on how to focus on impacts, understand the need, and improve product decisions. Good ideas to postpone decisions, focus on behavioral changes, and be cautious with metrics. An essential talk for any product developer.
  • Maximum impact minimum effort (Gojko Adzic) [Agile, Engineering Culture, Inspirational, Product] [Duration: 00:47] (⭐⭐⭐⭐⭐) Another great talk about product.
  • Fast-track from Idea to Impact (Gojko Adzic) [Lean Product Management, Product] [Duration: 00:54] (⭐⭐⭐⭐⭐) Gojko presents very interesting examples of developments that have achieved very good impacts (by minifying the developed software). He also explains the use of the impact mapping technique, which is very useful for focusing on the impact.
  • Oredev 2011: Sleeping with the enemy (Gojko Adzic) [Engineering Culture, testing] [Duration: 00:52] (⭐⭐⭐⭐⭐) Gojko Adzic describes why independent testing should be a thing of the past. He explains how testers engaging with developers and business users create opportunities to accomplish things they cannot do otherwise.
  • Continuous Delivery Sounds Great But It Won’t Work Here (Jez Humble) [Continuous Delivery] (⭐⭐⭐⭐⭐) A new version of a classic one. A great talk.
  • DOES17 London - The Key to High Performance What the Data Says (Nicole Forsgren, Jez Humble, Nigel Kersten) [Devops, Engineering Culture, Engineering productivity, Inspirational] [Duration: 00:31] (⭐⭐⭐⭐⭐)
  • Continuous Delivery (Jez Humble) [Agile, Continuous Delivery, Engineering Culture, Lean Software Development] [Duration: 00:47] (⭐⭐⭐⭐⭐) Great 2012 presentation on Continuous Delivery. Jez discusses the value of CD to the business. He presents the principles and related practices, including value stream mapping, deployment pipelines, acceptance test-driven development, zero-downtime releases, etc. This talk is a while old, but still as relevant as the first day.
  • What Will The Next 10 Years Of Continuous Delivery Look Like? (Jez Humble, Dave Farley) [Agile, Architecture, Continuous Delivery, Devops, Engineering Culture, Inspirational, Scalability, Technical Practices, Technology Strategy] [Duration: 00:49] (⭐⭐⭐⭐⭐) A must. Essential for understanding high performance teams and modern agile development.
  • Industry Keynote: The DevOps Transformation (Jez Humble) [Agile, Continuous Delivery, Devops, Engineering Culture, leadership] [Duration: 00:48] (⭐⭐⭐⭐⭐) In this talk Jez will describe how to implement devops principles and practices, how to overcome typical obstacles, and the outcomes DevOps enables. A must-see talk.
  • Continuous Delivery - Sounds Great But It Won't Work Here (Jez Humble) [Continuous Delivery, Engineering Culture] [Duration: 00:49] (⭐⭐⭐⭐⭐) Since the Continuous Delivery book came out in 2010, it’s gone from being a controversial idea to a commonplace… until you consider that many people who say they are doing it aren’t really, and there are still plenty of places that consider it crazy talk. In this session Jez will present some of the highlights and lowlights of the past six years listening to people explain why continuous delivery won’t work, and what he learned in the process.
  • CONSTANT Changes To User Requirements Drive Me CRAZY (Dave Farley) [Agile, Continuous Delivery, Inspirational, Lean Product Management, Lean Software Development] [Duration: 00:13] (⭐⭐⭐⭐⭐) This presentation by Dave Farley shows that software development is not just about translating perfect requirements into code, but rather a process of discovery and exploration. It acknowledges that the nature of the problems being solved has changed and that it is impossible to have all the answers. It emphasizes that successful software products must be able to adapt and evolve over time, and that the key to success is embracing change and making it easy, safe, and low-cost.
  • You Must Be CRAZY To Do Pair Programming (Dave Farley) [Agile, Technical Practices, XP] [Duration: 00:24] (⭐⭐⭐⭐⭐) One of the best descriptions I have heard of the usefulness of this practice. Dave provides pair programming examples, describes some pair programming best practices, and challenges some thinking about pair programming patterns and anti-patterns.
  • Continuous Integration vs Feature Branch Workflow (Dave Farley) [Agile, Continuous Delivery, Technical Practices, XP] [Duration: 00:17] (⭐⭐⭐⭐⭐) Essential 5-minute video. In this video Dave Farley explains the difference and why the two are largely mutually exclusive, and then explains how to live in the CI world by describing three different approaches to keeping the software working as it evolves.
  • Avoid These Common Mistakes Junior Developers Make (Dave Farley) [Engineering Career, Inspirational, Software Design] [Duration: 00:18] (⭐⭐⭐⭐⭐) A must-see talk. Dave Farley describes 8 common mistakes that junior developers often make and offers his advice on how to avoid them. Whatever your approach to software engineering and software development, whether you are practicing Continuous Delivery, DevOps, or something else, we think that you may find some helpful ideas in this video.
  • GeePaw Hill on Incremental Software Delivery (GeePaw Hill) [Small Safe Steps (3s), Software Design, XP] [Duration: 01:18] (⭐⭐⭐⭐⭐) Pure wisdom on why working in small, safe steps is the most efficient way to work in software product development when we have environments of high uncertainty (which is almost always).
  • GeePaw Hill "More Smaller Steps" (GeePaw Hill) [Agile, Lean Software Development, Small Safe Steps (3s), XP] [Duration: 01:20] (⭐⭐⭐⭐⭐) A great talk for anyone trying to do lean/agile software development. Explain why we need to give small safe steps (3s). Very interesting Q&A session at the end.
  • Want More Value Faster? Take Many More Much Smaller Steps (GeePaw Hill) [Agile, Lean Software Development, Technical Practices, XP, tdd] [Duration: 00:55] (⭐⭐⭐⭐⭐) A must-talk for anyone trying to do lean/agile software development. The talk delves into the reasons why the strategy of using small, safe steps is the right one to steadily evolve a software system. I am very much aligned with this approach to software development.
  • Many More Much Smaller Steps with GeePaw Hill (GeePaw Hill, Chris Lucian, Austin Chadwick) [Evolutionary Design, Lean Software Development, Software Design, Technical Practices, XP] [Duration: 00:39] (⭐⭐⭐⭐⭐) Good conversation about GeePaw Hill's software development approach based on taking continuous small safe steps (Many More Much Smaller Steps).
  • Shared Mental Models Part 1 (Jessica Kerr) [Engineering Culture, Inspirational, Mental models] [Duration: 00:33] (⭐⭐⭐⭐⭐) This was an excellent talk, full of insights that prompted reflection. In this talk Jessica looks at how the shared mental models created while mob programming work throughout the team even when they are not actively mobbing. She also explores the other practices she’s found complementary in creating a high functioning team and how looking at your contribution from a generative (helping other create) vs a productive (what I created, myself) frame can lead to a happier, better and more productive team.
  • Systems Thinking for Developers (Jessica Kerr) [Inspirational, Mental models] [Duration: 00:55] (⭐⭐⭐⭐⭐) Great explanation of how system thinking arises and its basic concepts. System thinking is a fundamental tool to work with/in complex systems such as software systems.
  • KEYNOTE Designing change (Jessica Kerr, Avdi Grimm) [Agile, Architecture, Evolutionary Design, Inspirational, Software Design] [Duration: 00:48] (⭐⭐⭐⭐⭐) The journey of a software developer is a climb through abstraction: algorithms, patterns, architecture.... How do we keep expanding scope, without losing focus on the real work? Join us for a journey into the fourth dimension, where we don't just change code; we design change.
  • Yes, I Test in Production (And So Do You) (Charity Majors) [Testing in production, testing] (⭐⭐⭐⭐⭐) A great talk about the need for testing in production and the approach we can use.
  • What got you here won't get you there: How your team can become a high-performing team by embracing observability (Charity Majors) [Engineering Culture, Observability, Operations] [Duration: 01:55] (⭐⭐⭐⭐⭐) A ton of useful insights and ideas in this excellent Charity presentation. Great description of observability and its need in modern systems.
  • The Sociotechnical Path to High-Performing Teams (Charity Majors) [Continuous Delivery, Devops, Engineering Culture, Teams, team topologies] [Duration: 00:41] (⭐⭐⭐⭐⭐) This talk describe the social and technical strategies that great teams all of the world are using to be happier, more productive and make their users happy too.
  • A Young Lady's Illustrated Primer to Technical Decision-Making (Charity Majors) [Engineering Culture, Technical leadership] [Duration: 00:41] (⭐⭐⭐⭐⭐) Fun and interesting talk about the context and process for making technical decisions. Very good ideas. The talk is a few years old, but the ideas are still very valid. Charity talks about how to decide to introduce new technologies, the cost of maintaining them, the importance of migrations, failure modes, etc.
  • The Marty Cagan special - ProductTank #27 Singapore (Marty Cagan) [Product, Product Discovery] [Duration: 01:28] (⭐⭐⭐⭐⭐) An open discussion on Modern Product Management. The talk contains a lot of interesting discussions during the Q&A. I think it covers all the underpinnings of modern product management.
  • Master Class with Marty Cagan (Marty Cagan) [Inspirational, Product, Product Discovery, Product Leadership, Product Team, leadership] [Duration: 01:21] (⭐⭐⭐⭐⭐) A great presentation on skilled product teams and leading product organizations. The questions at the end are also very interesting.
  • Minimum Viable Product for Platforms (Marty Cagan) [Platform, Platform as a product, Product] [Duration: 01:02] (⭐⭐⭐⭐⭐)
  • Digital Transformation (Adrian Cockcroft) [Cloud, Engineering Culture, Scalability, Technology Strategy] [Duration: 00:14] (⭐⭐⭐⭐⭐)
  • Velocity and Volume or Speed Wins (Adrian Cockcroft) [Architecture, Cloud, Continuous Delivery, Devops, Engineering Culture, Scalability] [Duration: 00:36] (⭐⭐⭐⭐⭐) A classic talk to understand how to leverage the cloud, continuous delivery and devops to create modern web-scale systems.
  • Speeding Up Innovation (Adrian Cockcroft) [Architecture, Cloud, Devops, Inspirational, Technology Strategy] [Duration: 00:42] (⭐⭐⭐⭐⭐) Interesting talk about how to use the cloud and how it enables innovation.
  • Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity. (Christin Gorman) [Engineering Culture, Inspirational] [Duration: 00:08] (⭐⭐⭐⭐⭐) Great lightning talk, provocative and inspiring.
  • What makes a good developer (Christin Gorman) [Engineering Career, Inspirational] [Duration: 00:11] (⭐⭐⭐⭐⭐) Inspiring lightning talk about the importance of humanities, empathy for users and information management as the basis of our profession (beyond pure technology and knowledge about logic or mathematics).
  • From initial request to software in production in 3 weeks (Christin Gorman) [Inspirational, Lean Software Development] [Duration: 00:22] (⭐⭐⭐⭐⭐) Simplicity--the art of maximizing the amount of work not done--is essential. Great talk on how to focus on the essentials and make simple solutions.
  • The resource utilization trap (Henrik Kniberg) [Flow, Lean, WIP] [Duration: 00:05] (⭐⭐⭐⭐⭐) Henrik Kniberg explains the resource utilization trap, how it impacts our ability to deliver and what we can do about it.
  • Multiple WIP vs One Piece Flow Example (Henrik Kniberg) [Flow, Lean, WIP] [Duration: 00:07] (⭐⭐⭐⭐⭐) Brilliant explanation of the concept of WIP and how limiting it improves delivery flow.
  • AgileByExample 2016: Henrik Kniberg - Keynote - Focus (or Stop Starting, Start Finishing) (Henrik Kniberg) [Agile, Inspirational] [Duration: 00:43] (⭐⭐⭐⭐⭐) As usualy Henrik deliver a great talk that inspired me a lot.
  • Code for Ukraine #2: Tidy First? Daily Empirical Software Design & Why It Works (Kent Beck) [Software Design, XP] [Duration: 00:58] (⭐⭐⭐⭐⭐) Interesting presentation about software design and trade-offs and techniques to refactor the code before applying a change. The talk is full of interesting insights. It is also very interesting the Q&A part that is not only focused on the content of the talk.
  • Big Transitions in Small Steps (Kent Beck) [Agile, Software Design, Technical Practices] [Duration: 00:59] (⭐⭐⭐⭐⭐) Very deep ideas about how to make any kind of huge technical change using small and incremental changes. This part of the core of agile... Vertical slicing to make changes in small (low risk) steps.
  • Tidy First? (Kent Beck) [Agile, Evolutionary Design, Software Design, Technical Practices, XP] [Duration: 00:15] (⭐⭐⭐⭐⭐) Great talk about the human relationships generated during software development. Kent explains these relations and uses them to analyze the development flow, the need for small safe steps, and the tension generated between the people involved. For me, this talk is a must.
  • "Simple Made Easy" (12-minute redux) by Rich Hickey (2011) (Rich Hickey) [Architecture, Inspirational, Scalability, Software Design] [Duration: 00:12] (⭐⭐⭐⭐⭐) This is a 12-minute redux of the 1-hour talk by Rich Hickey, for really impatient people. Original: https://www.youtube.com/watch?v=SxdOUGdseq4
  • Simple Made Easy (Rich Hickey) [Architecture, Architecture patterns, Functional, Inspirational, Scalability, Software Design] (⭐⭐⭐⭐⭐) 2011\. Great talk and a good excuse to study functional programming.
  • Six Decades of Software Engineering (Mary Poppendieck) [Agile, Devops, Engineering Culture, Lean Software Development] [Duration: 01:23] (⭐⭐⭐⭐⭐) Great talk with the evolution of our field from a lean perspective. Great insights about the engineering role, agile, the current painful division between business and development, how we can think about complex systems, the failure of having proxy roles as the product owner, etc... Great talk, lot of computer and development history, and great Q&A session. Slides:
  • Competing On The Basis Of Speed (Mary Poppendieck) [Engineering Culture, Lean Product Management, Lean Software Development] [Duration: 01:00] (⭐⭐⭐⭐⭐) Optimizing for speed, flow, and waste reduction. Lean Software Development
  • Integrated Tests Are A Scam (J.B. Rainsberger) [Technical Practices, testing] [Duration: 01:04] (⭐⭐⭐⭐⭐) Integrated tests are a scam. You’re probably writing 2-5% of the integrated tests you need to test thoroughly. You’re probably duplicating unit tests all over the place. Your integrated tests probably duplicate each other all over the place. When an integrated test fails, who knows what’s broken? Integrated tests probably do you more harm than good. Learn the two-pronged attack that solves the problem: collaboration tests and contract tests.
  • 7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development (J.B. Rainsberger) [Agile, Software Design, XP] [Duration: 00:07] (⭐⭐⭐⭐⭐) Short excellent talk (7:26') that distilled the essence of software development and agile development. Essential. A must.
  • Product Tank Madrid: Focus on Impact with John Cutler - World Product Day 2020 (John Cutler) [Product] [Duration: 01:05] (⭐⭐⭐⭐⭐) Excellent talk. John presents all the learnings he had during the last three years, using his great article as a starting point (). Lots of knowledge and tips to introduce product thinking.
  • Creating Value and Flow in Product Development (John Cutler) [Agile, Engineering Culture, Lean, Lean Software Development, Product, Teams] [Duration: 00:07] (⭐⭐⭐⭐⭐) John Cutler, Product Evangelist at Amplitude explains why most of a product developers time is spent waiting and how limiting work in progress, the scope of work and handoffs can increase flow and value.
  • Full Cycle Developers at Netflix (Greg Burrell) [Architecture, Devops, Operations] [Duration: 00:48] (⭐⭐⭐⭐⭐) This talk presents Netflix' journey from siloed teams to our Full Cycle Developer model for building and operating our services at Netflix. Greg discusses the various approaches they’ve tried, the motivations that pushed them to keep evolving, and the lessons learned along the way.
  • Full Cycle Developers @Netflix (Greg Burrell) [Architecture, Devops, Engineering Culture, Management, Operations] [Duration: 00:50] (⭐⭐⭐⭐⭐) Greg Burrell presents Netflix’s journey from siloed teams to their Full Cycle Developer model for building and operating their services at Netflix. He discusses the various approaches they’ve tried, the motivations that pushed them to keep evolving, and the lessons learned along the way.
  • Testing and Refactoring Legacy Code (Sandro Mancuso) [Evolutionary Design, Refactoring, Technical Practices, XP] [Duration: 01:29] (⭐⭐⭐⭐⭐) In this live coding session, Sandro will present many techniques that will help you to efficiently retrofit tests to legacy code and then refactor it to show the business logic more clearly.
  • A Case for Outside-In Design (Sandro Mancuso) [Architecture, DDD, OOP, Product] [Duration: 00:51] (⭐⭐⭐⭐⭐) another version  (NEWCRAFTS Conferences Paris). A very interesting for any developer, product manager o business person. Technics to understand the whole picture for a system and help to define the design from the outside. A good approach for domain modeling.
  • Keynote: 8 Lines of Code (Greg Young) [Design, Inspirational] (⭐⭐⭐⭐⭐) Interesting talk to understand some concepts about simplicity and hiden accidental complexity.
  • The art of destroying software (Greg Young) [Evolutionary Architecture, Evolutionary Design, Inspirational] [Duration: 00:42] (⭐⭐⭐⭐⭐) Some good points about the easy evolution of a system when the services are small enough to be understandables and to be rewritten without fear.
  • Rails Conf 2013 The Magic Tricks of Testing (Sandi Metz) [Agile, Technical Practices, XP, testing] [Duration: 00:32] (⭐⭐⭐⭐⭐) This talk strips away the veil and offers simple, practical guidelines for choosing what to test and how to test it. Finding the right testing balance isn't magic, it's a magic trick; come and learn the secret of writing stable tests that protect your application at the lowest possible cost.
  • Less - The Path to Better Design (Sandi Metz) [OOP, Software Design] [Duration: 00:50] (⭐⭐⭐⭐⭐) This talk strips away the well-known design principles and exposes the hidden, underlying goals of design. It reveals programming techniques that allow you to write less code while creating beautiful, flexible applications.
  • Keynote: Creating a Holistic Developer Experience (Jasmine James) [Developer Productivity, Devex] [Duration: 00:15] (⭐⭐⭐⭐⭐) Great talk to understand what is development experience.
  • DOES14 On the Care and Feeding of Feedback Cycles (Elisabeth Hendrickson) [Continuous Delivery, Devops, Feedback cycles, Inspirational, Quality] [Duration: 00:31] (⭐⭐⭐⭐⭐) This talk examines the many forms of feedback, the questions each can answer, and the risks each can mitigate. Agile practices involve testing early and often. However feedback comes in many forms, only some of which are traditionally considered testing. Continuous integration, acceptance testing with users, even cohort analysis to validate business hypotheses are all examples of feedback cycles.
  • AWS re:Invent 2019: Data modeling with Amazon DynamoDB (CMY304) (Alex DeBrie) [Architecture, Scalability, Serverless, Software Design, Technical Practices, Technology] [Duration: 00:39] (⭐⭐⭐⭐⭐) Modeling your data in the DynamoDB database structure requires a different approach from modeling in traditional relational databases. Alex DeBrie has written a number of applications using DynamoDB and is the creator of DynamoDBGuide.com, a free resource for learning DynamoDB
  • Product minded software crafter (Cansu Karayel, Gemma Cortel) [Lean Product Management, Lean Software Development, Small Safe Steps (3s)] [Duration: 00:38] (⭐⭐⭐⭐⭐) Ejemplo real de como un equipo de desarrollo de producto en el que todo el mundo entiende el software como un medio puede tener un gran impacto.
  • Boundaries (Gary Bernhardt) [Architecture, Architecture patterns, Evolutionary Design, Software Design] [Duration: 00:30] (⭐⭐⭐⭐⭐) An exploration of the boundaries between pieces of code, including: isolated testing, behavior vs. data, mutation vs. immutability, how data shape affords parallelism, transforming interface dependencies into data dependencies, and what a system optimizing each of these for natural isolation might look like.
  • LISA17 - Scalability Is Quantifiable: The Universal Scalability Law (Baron Schwartz) [Architecture, Performance, Scalability] [Duration: 00:29] (⭐⭐⭐⭐⭐) Do you know what scalability really is? It's a mathematical function that's simple, precise, and useful. REALLY useful. It describes the relationship between system performance and load. In this talk you'll learn the function (the Universal Scalability Law), how it describes and predicts system behavior you see every day, and how to use it in practice. I'll show you how to understand the function, how to capture the data you need to measure your own system's behavior (you probably already have that), and how to analyze the data with the USL. You'll leave this talk knowing exactly what scalability is and what causes non-linear scaling. There are two factors, and you'll start seeing those everywhere, too. As a result, when systems don't scale you'll know what kind of problem to look for, and you'll avoid building bottlenecks into your systems in the first place. Final note: this talk requires zero mathematical skill.
  • Sufficiently Advanced Monitoring is Indistinguishable from Testing (Ed Keyes) [Technical Practices, Testing in production, testing] [Duration: 00:05] (⭐⭐⭐⭐⭐) Interesting ideas about testing in production.
  • Technical leadership and glue work (Tanya Reilly) [Engineering Career, Engineering Culture, Inspirational, Management] [Duration: 00:28] (⭐⭐⭐⭐⭐) Let's talk about how to allocate glue work deliberately, frame it usefully and make sure that everyone is choosing a career path they actually want to be on.
  • Continuous Delivery and the Theory of Constraints (Steve Smith) [Architecture, Continuous Delivery, Engineering Culture, Technical Practices] [Duration: 00:44] (⭐⭐⭐⭐⭐) In this talk, Steve Smith will explain how easy it is for a Continuous Delivery programme to be unsuccessful, how the Theory Of Constraints works, how to apply the Five Focussing Steps to Continuous Delivery, and how to home in on the constrained activities that are your keys to success. It includes tales of glorious failures and ignominious successes when adopting Continuous Delivery.
  • Debt Metaphor (Ward Cunningham) [Inspirational, Technical Practices, Technology Strategy, XP] [Duration: 00:05] (⭐⭐⭐⭐⭐) Ward Cunningham reflects on the history, motivation and common misunderstanding of the "debt metaphor" as motivation for refactoring.
  • YOW! 2019 Evolutionary Design Animated (James Shore) [Agile, Engineering Culture, Evolutionary Design, Software Design, XP] [Duration: 00:48] (⭐⭐⭐⭐⭐) Modern software development welcomes changing requirements, even late in the process, but how can we write our software so that those changes don’t create a mess? Evolutionary design is the key. It’s a technique that emerges from Extreme Programming, the method that brought us test-driven development, merciless refactoring, and continuous integration. James Shore first encountered Extreme Programming and evolutionary design nearly 20 years ago. Initially skeptical, he’s explored its boundaries ever since. In this session, James will share what he’s learned through in-depth animations of real software projects. You’ll see how designs evolve over time and you’ll learn how and when to use evolutionary design for your own projects.
  • Architecture for Flow with Wardley Mapping, DDD, and Team Topologies (Susanne Kaiser) [DDD, Engineering Culture, Technology Strategy, Wardley maps, team topologies] [Duration: 00:43] (⭐⭐⭐⭐⭐) This talk illustrates the concepts, connects the dots between DDD, Wardley mapping and team topologies, and demonstrates how these techniques help to evolve a fictitious legacy system for a fast flow of change.
  • Second Generation Lean Product Development Flow (Donald Reinertsen) [Lean, Lean Product Management, Mental models, Product, Product Strategy] [Duration: 01:27] (⭐⭐⭐⭐⭐) An introduction to Lean Product Development Flow given by Don Reinertsen at Adventures with Agile in London. This talk is a must to understand modern product development (Flow, uncertainty, Little's law, cost of delay, the value of feedback, queues, batch size, etc).
  • The subtle difference between a constraint and a bottleneck (Theory of Constraints) (Chris Hohmann) [Lean, TOC] [Duration: 00:03] (⭐⭐⭐⭐⭐) Excellent 3-minute video explains the subtle difference between a constraint and a bottleneck in the Theory of Constraints (and, therefore, where to put the focus.)
  • Escaping the Build Trap (Melissa Perri) [Product, Product Discovery, Product Strategy] [Duration: 00:26] (⭐⭐⭐⭐⭐) Mind the Product San Francisco 2017. A classic one to escape from the feature factory mindset.
  • From Kubernetes to PaaS to ... Err, What's Next? (Daniel Bryant) [Developer Productivity, Devex, Platform, Platform as a product] [Duration: 00:31] (⭐⭐⭐⭐⭐) In this talk Daniel reviews his experience in building platforms, both as an end user and now as part of an organization that helps our clients do the same. She discusses topics such as DevEx, UX, workflows, available tools, etc.
  • Reboot Your Team (Christina Wodtke) [Engineering Culture, Product, Product Team, Teams] [Duration: 00:32] (⭐⭐⭐⭐⭐) Christina told us how to reboot the team you have, or build a healthy one from the ground up.
  • Fail Better: Radical Ideas from the Practice of Cloud Computing (Tom Limoncelli) [Architecture, Cloud, Devops, Operations, Technical Practices] [Duration: 01:04] (⭐⭐⭐⭐⭐)
  • Artificial Intelligence seen from the software development lifecycle perspective (Nerea Luis) [AI, MLOps] [Duration: 00:54] (⭐⭐⭐⭐⭐) Great introduction to the differences between traditional software development and the development cycle with AI models. Nerea introduces concepts such as Continuous training, model deployment, MLOps, and collaboration between data scientists and software engineers. Highly recommended for software engineers looking to delve into these topics and collaborate more closely on AI-based feature development.
  • Reliable Messaging Without Distributed Transactions (Udi Dahan) [Architecture patterns, Software Design] [Duration: 00:16] (⭐⭐⭐⭐⭐) Particular CEO, Udi Dahan, describes how you can still do reliable messaging without using distributed transactions
  • Aprender a distinguir el problema de las soluciones (Carlos Ble) [Agile, Engineering Culture, Lean Product Management, Lean Software Development, Product] [Duration: 00:41] (⭐⭐⭐⭐⭐) En esta sesión Carlos se centra en cómo saber separar el "Qué" del "Cómo" para ser eficaces y económicos resolviendo problemas, sin que la calidad de las soluciones se vea afectada. Una muy buena charla para cualquiera que se interese por el desarrollo de software lean (agile real).
  • Monolith Decomposition Patterns (Sam Newman) [Architecture patterns, DDD, Microservices] (⭐⭐⭐⭐⭐) Sam Newman shares some key principles and a number of patterns to use to incrementally decompose an existing system into microservices. He covers patterns that can work to migrate functionality out of systems hard to change, and looks at the use of strangler patterns, change data capture, database decomposition and more.
  • TDD, where did it all go wrong (Ian Cooper) [Technical Practices, tdd, testing] [Duration: 01:01] (⭐⭐⭐⭐⭐) Essential talk about how to do TDD in an efficient way and getting a battery of tests that support continuous refactoring. It fundamentally changed my approach to TDD. I highly recommend it.
  • Enterprise Architecture = Architecting the Enterprise? (Gregor Hohpe) [Architecture, Architecture patterns, Engineering Culture] [Duration: 01:01] (⭐⭐⭐⭐⭐) This session takes a serious but light-hearted look at the role of enterprise architects in modern IT organizations.
  • JavaZone 2019, Room 5 - Survival Tips For Women in Tech (Patricia Aas) [Culture, Inspirational] (⭐⭐⭐⭐⭐) Essential talk especially to open our eyes to privileged people like me (white male in tech).
  • Foundations of Modern Product Organizations (Gerard Chiva) [Company Culture, Lean Product Management, Product, leadership] [Duration: 00:41] (⭐⭐⭐⭐⭐) This talk explains the keys to the success of digital product organizations. Technology is an essential part of any business today, not just a cost center.
  • Simplifying The Inventory Management Systems at the World’s Largest Retailer Using Functional Programming Principles (Scott Havens, Gene Kim) [Architecture, Architecture patterns, Functional, Technical leadership, Technology Strategy] [Duration: 02:02] (⭐⭐⭐⭐⭐) Havens shares his views on what makes great architecture great. He details what happened when an API call required 23 other synchronous procedures calls to return a correct answer. He discusses the challenges of managing inventory at Walmart, how one implements event sourcing patterns on that scale, and the functional programming principles that it depends upon. Lastly, he talks about how much category theory you need to know to do functional programming and considerations when creating code in complex systems. It is recommended to first watch the talk https://www.youtube.com/watch?v=n5S3hScE6dU or listen to the podcast https://itrevolution.com/the-idealcast-episode-22/
  • CDD (Desarrollo dirigido por consenso) (Xavi Gost) [Agile, Engineering Culture, Lean Software Development] [Duration: 00:58] (⭐⭐⭐⭐⭐) En esta charla, Xavi introduce el concepto de 'Desarrollo Dirigido por Consenso' junto con el 'Sistema de Concerns'. Esta metodología resulta ser una práctica sumamente efectiva para optimizar el flujo de trabajo en equipos, manteniendo al mismo tiempo bajo control la deuda técnica y abordando eficientemente los menores problemas de diseño identificados por el equipo. Tras observar la implementación de esta metodología en varios equipos, puedo afirmar que su utilidad es significativa.
  • The puzzle of motivation (Dan Pink) [Inspirational, Management] [Duration: 00:18] (⭐⭐⭐⭐⭐) Dan Pink examines the puzzle of motivation, starting with a fact that social scientists know but most managers don't: Traditional rewards aren't always as effective as we think.
  • Building DevX Teams, my story (Cirpo Cinelli) [Developer Productivity, Devex, Teams] [Duration: 00:42] (⭐⭐⭐⭐⭐) In this presentation, Cirpo talks about his past 4 years of experience setting up a DevX team from scratch, the main challenges, the pain, the gain, and the lessons learned.
  • Muda, Mura, Muri: mitos y prácticas aplicando Lean Software Development (Abraham Vallez) [Agile, Lean Software Development, XP] [Duration: 00:55] (⭐⭐⭐⭐⭐) Excelente charla que se fundamenta en experiencias prácticas acerca de cómo colaborar eficazmente en equipo, siguiendo los principios del desarrollo de software Lean y de Programación Extrema (XP). Constituye un recurso valioso para recomendar o compartir con equipos que buscan optimizar sus metodologías de trabajo.
  • Platforms at Twilio: Unlocking Developer Effectiveness (Justin Kitigawa) [Developer Productivity, Devex, Devops, Platform, Platform as a product] [Duration: 00:50] (⭐⭐⭐⭐⭐) Learn how Twilio’s internal Platform has evolved to reduce their engineers' cognitive load by providing a unified self-service, declarative platform to build, deliver, and run the thousands of global microservices that make up Twilio.
  • Stop Writing Dead Programs (Jack Rusher) [Inspirational] [Duration: 00:43] (⭐⭐⭐⭐⭐) This talk argues that it would be better to focus on building new live programming environments that can help us solve the problems of the future.
  • Queueing Theory in Practice: Performance Modeling for the Working Engineer (Eben Freeman) [Architecture, Performance, Scalability, Software Design] [Duration: 00:45] (⭐⭐⭐⭐⭐) Cloud! Autoscaling! Kubernetes! Etc! In theory, it's easier than ever to scale a service based on variable demand. In practice, it's still hard to take observed metrics, and translate them into quantitative predictions about what will happen to service performance as load changes. Resource limits are often chosen by guesstimation, and teams are likely to find themselves reacting to slowdowns and bottlenecks, rather than anticipating them. Queueing theory can help, by treating large-scale software systems as mathematical models that you can rigorously reason about. But it's not necessarily easy to translate between real-world systems and textbook models. This talk will cover practical techniques for turning operational data into actionable predictions. We'll show how to use the Universal Scalability Law to develop a model of system performance, and how to leverage that model to make more informed capacity planning and architectural decisions. We'll discuss what data to gather in production to better inform its predictions -- for example, why it's important to capture the shape of a latency distribution, and not just a few percentiles. We'll also talk about some of the limitations and pitfalls of performance modelling.
  • Simon Sinek Performance vs Trust (Simon Sinek) [Company Culture, Culture, Inspirational] [Duration: 00:02] (⭐⭐⭐⭐⭐) Great description of the impact of trust on team members and leaders.
  • GOTO 2020 • Modern Continuous Delivery (Ken Mugrage) [Continuous Delivery, Engineering Culture] [Duration: 00:19] (⭐⭐⭐⭐⭐) Great description of a Continuous Delivery process.
  • The Art of Simplicity by Venkat Subramaniam (Venkat Subramaniam) [Software Design, simplicity] [Duration: 00:54] (⭐⭐⭐⭐⭐) vJUG KeyNote. A great complementary talk to my talk Simplicidad para desarrolladores (Spanish)
  • SLO TheoryWhy the Business needs SLOs (Danyel Fisher, Nathen Harvey) [Observability, Operations, Technical Practices] [Duration: 00:38] (⭐⭐⭐⭐⭐) Great explanation about SLI, SLOs, error budgets and how to introduce them to improve our production operations.
  • Inside-Out TDDDD (Amitai Schleier) [Inspirational, Technical Practices, XP, testing] [Duration: 01:00] (⭐⭐⭐⭐⭐) Talk about joy and humanity in software development. The talk was primarily concerned with the effects of software craft on our emotional states and working relationships. Along the way, Amitai touched on Theory of Constraints, stable and unstable equilibria in work environments, a significant and deliberate omission from Scrum, my take on “legacy code”, applied empathy (never mentioned explicitly, merely woven in), and what agility looks and feels like when you’ve got it.
  • Nordstrom Innovation Lab (nordstrominnovationlab) [Inspirational, Lean Product Management, Product, Product Discovery] [Duration: 00:06] (⭐⭐⭐⭐⭐) During this episode, Mik and Manuel discuss some of the key issues in Team Topologies with great insights into different types of collaboration, treating platforms as products, and how to improve team flow by aligning teams with value streams. This was a very interesting episode.
  • The Limited Red Society (Joshua Kerievsky) [Agile, Continuous Delivery, Technical Practices, XP] (⭐⭐⭐⭐⭐) Joshua Kerievsky discusses the need to reduce “red” periods of time while developing software. One is in the red when he spends too much time designing, or having compilation errors or the tests do not pass. Kerievsky demonstrates a method (Parallel Change) of reducing the red while refactoring code, and discusses another approach called Narrowed Change, and answers refactoring related questions.
  • Connectsai 2020: Cómo entregar más por menos - Marta Manso (Marta Manso) [Lean Product Management, Product, Product Discovery, Product Engineer] [Duration: 00:57] (⭐⭐⭐⭐⭐) Inspiradora charla de Marta sobre como trabajar en un equipo enfocado a dessarrollo de producto y que entiende la tecnologia como un medio. Gran cantidad de ideas y detalles interesantes.
  • Tips For Technical Startup Founders | Startup School (Diana Hu) [Inspirational, Lean Software Development, Lean Startup, startup] [Duration: 00:28] (⭐⭐⭐⭐⭐) Diana Hu shares her advice for being a technical founder at the earliest stages - including topics like how to ship an MVP fast, how to deal with technology choices and technical debt, and how and when to hire an engineering team.
  • GOTO 2020 • Talking With Tech Leads (Patrick Kua) [Engineering Culture, Technical leadership, leadership] [Duration: 00:35] (⭐⭐⭐⭐⭐) Practical tips to be a successful Tech Lead. Very interesting for anyone interested in a leadership role for an engineering team.
  • Production - Designing for Testability (Michael Bryzek) [Continuous Delivery, Devops, Engineering Culture, Testing in production, testing] [Duration: 00:50] (⭐⭐⭐⭐⭐) Michael Bryzek explores what it’s like to build quality software with no development, QA, or staging environments. He includes a deep dive into “verification in production” and what it really takes to build software that can safely be tested continuously in production.
  • Stop starting and start finishing (Jason Yip) [Flow, Lean, TOC, WIP] [Duration: 00:05] (⭐⭐⭐⭐⭐) Great explanation about Lean concepts (Limit WIP, class of services, Root cause analysis...)
  • The Efficiency Paradox (Niklas Modig) [Agile, Company Culture, Flow, Inspirational, Lean, Lean Software Development] [Duration: 00:18] (⭐⭐⭐⭐⭐) The best explanation I know about resource efficiency vs flow efficiency, the base of Lean.
  • GOTO 2020 • Advanced Feature Flagging: It's All About The Data (Dave Karow) [Continuous Delivery, Engineering Culture, Product, Product Discovery] [Duration: 00:16] (⭐⭐⭐⭐⭐) A great talk on one of the fundamental techniques for making product discovery and continuous release. Excellent information about how to use them, define experiments, and interpret results.
  • Product Strategy is About Saying No (Des Traynor) [Product] [Duration: 00:07] (⭐⭐⭐⭐⭐) Why Product strategy is mostly about saying no. Funny, short, thought-provoking and actionable. Imprescindible.
  • AWS re:Invent 2018: Close Loops & Opening Minds: How to Take Control of Systems, Big & Small ARC337 (Colm MacCárthaigh) [Architecture patterns, Platform, Product, Scalability, Software Design] [Duration: 00:58] (⭐⭐⭐⭐⭐) Whether it’s distributing configurations and customer settings, launching instances, or responding to surges in load, having a great control plane is key to the success of any system or service. Come hear about the techniques we use to build stable and scalable control planes at Amazon. We dive deep into the designs that power the most reliable systems at AWS. We share hard-earned operational lessons and explain academic control theory in easy-to-apply patterns and principles that are immediately useful in your own designs. A must to learn how to design Control Panels.
  • Operations: The Last Mile (Damon Edwards) [Devops, Engineering Culture, Inspirational, Operations] [Duration: 00:30] (⭐⭐⭐⭐⭐) This talk is not only very funny, it is also a great description of the problems generated by a "classic" operations mindset and how to change to a modern approach / devops.
  • Tips & tricks para llegar a ser un equipo de alto rendimiento (Iván Badia) [Agile, Engineering Culture, Lean Software Development] [Duration: 00:53] (⭐⭐⭐⭐⭐) Iván da las claves para tener una cultura de ingenieria sana en el que los equipos tienen una aproximación lean y con buenas prácticas para el desarrollo de producto. Muy alineado con las ideas descritas en la charlas.
  • Reduce Alerting Noise with One Weird Trick (Liz Fong-Jones) [Observability, Technical Practices] [Duration: 00:10] (⭐⭐⭐⭐⭐) A great and concise description of SLI/SLOs and how to use them to improve our lives.
  • The Technical Debt Trap (Doc Norton) [Engineering Culture, Technical Practices] [Duration: 00:53] (⭐⭐⭐⭐⭐) What is technical debt? What is not technical debt? Why should we care? What is the cost of misunderstanding? What do we do about it? Doc discusses the origins of the metaphor, what it means today, and how we properly identify and manage technical debt.
  • Product Management for Continuous Delivery (Elizabeth Ayer) [Continuous Delivery, Lean Product Management, Product] [Duration: 00:40] (⭐⭐⭐⭐⭐) This presentation explains how Continuous Delivery is very beneficial for excellent product management and growing a customer-focus team. CD enables closing the loop for each product increment, getting feedback, making decisions, and punting the focus on the impact generated (and not creating more and more features).
  • Agile as if you meant it (Maaret Pyhäjärvi) [Agile, Lean Product Management, Product, Product Strategy, Teams] [Duration: 00:55] (⭐⭐⭐⭐⭐) A good example of what Modern Agile looks like. Customer-focused team, with direct contact with the customer and without a proxy. Very interesting. It reminds me a lot of the way I used to work at [@AleaSolucionesS](https://twitter.com/AleaSolucionesS) and at TheMotion ([@HoneyBadgersDev](https://twitter.com/HoneyBadgersDev)).
I hope you find these recommendations helpful.