Wednesday, January 31, 2024

Selección de charlas recomendadas en español

 

Normalmente comparto en este blog el contenido (charlas/podcast) que encuentro interesantes. La mayoría del contenido es en inglés, pero con el paso del tiempo he ido acumulando algunas que son en castellano y merecen mucho la pena. Espero que las disfruteís...
  • Aquí también hay esperanza (Modesto San Juan) [Engineering Career, Inspirational] [Duration: 01:22] Inspiradora charla sobre nuestra profesión de eternos aprendices. Imprescindible.
  • Clean Architecture: La mejor forma de escalar y mantener tu código (Rafa Gómez) [Architecture, Design, hexagonal] [Duration: 00:18] Muy buena descripción de las arquitecturas limpias y de la arquitectura hexagonal. Muy didactico.
  • Artefactos en la gestión de Producto (Vanesa Tejada) [Product] [Duration: 01:06] Interesante charla en la que Vanesa nos comparte los artefactos que usa para mejorar el proceso de producto a escala (radiadores de información, tracking, etc).
  • E019 Qué es y para qué sirve la cultura organizacional (Xavi Gost, Carlos Iglesias) [Agile, Company Culture, Culture] [Duration: 00:59] Realworld podcast Ep 19.
  • Startup School: Restart "Motivación y responsabilidad" (Félix López) [Engineering Career, Inspirational, Product] [Duration: 00:56] "ownership" o responsabilidad, una de las grandes tendencias en muchos artículos sobre productividad y efectividad para gestionar equipos y que pocas veces se explica en profundidad cómo conseguirla o las principales razones para hacerlo.
  • Aprender a distinguir el problema de las soluciones (Carlos Ble) [Agile, Engineering Culture, Product, Lean Software Development] [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).
  • 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.
  • La economía del refactoring. Una visión desde la gestión económica del proyecto. (Xavi Gost) [Inspirational, Technical Practices, XP] [Duration: 00:51] Inspiracional charla sobre las motivaciones y la estrategia para refactorizar de forma continua.
  • ¿Que es un programador y cual es su papel en la sociedad? (Xavi Gost) [Inspirational, ethics, professionalism] [Duration: 00:34] Buena reflexión sobre el papel del desarrollador en la sociedad y la necesidad de una etica profesional fuerte.
  • Unexpected inhabitants: algorithms, ethics, and emergency (Aitor García Rey) [Inspirational, ethics, professionalism] [Duration: 00:21] Interesante charla para comprender el contexto del cambio que estamos experimentando debido a la entrada masiva de software (y ahora de la Inteligencia Artificial) en todos los aspectos de nuestra sociedad. Invita a la reflexión.
  • Case Study: tools and strategies for tackling legacy practices (Alejandro Scandroli) [Engineering Culture, Technical leadership] [Duration: 00:48] Ejemplo práctico del uso de los Wardley Maps y algunos conceptos de DDD (strategic design) para proponer una estrategia para el equipo de Ingenieria.
  • 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.
  • 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.
  • 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.
  • 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.

Relacionado:

Monday, January 22, 2024

Good talks/podcasts (Jan 2024 II)

 

These are the best podcasts/talks I've seen/listened to recently:
  • Rockstar Developers Are THE WORST Developers (Dave Farley) [Engineering Career, Engineering Culture] [Duration: 00:17] Dave explains clearly why what the industry often calls a RockStar developer is by no means a good developer, and why we should change that definition to focus on teams and disciplined developers who work in teams rather than individually. My notes on the topic: https://www.eferro.net/2024/01/be-humble-no-rockstars-allowed.html
  • Polly Want a Message (Sandi Metz) [OOP] [Duration: 00:41] A good talk by Sandi about how to create and evolve applications with good OO design. Like all of Sandi's talks, it is very worthwhile.
  • DDD Europe 2023. A Daily Practice of Empirical Software Design (Kent Beck) [Small Safe Steps (3s), Software Design, XP] [Duration: 00:59] Interesting reflection on the economics of software design and the principles that affect it. This talk describes some of the ideas that Kent elaborates on in detail in his new book 'Tidy first?'
  • 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).
  • “Industry Changing Book” | Jez Humble & Dave Reflect On Continuous Delivery (Jez Humble, Dave Farley) [Continuous Delivery] [Duration: 01:06] This is an interesting talk by the two authors of the book 'Continuous Delivery' about the impact the book has had on the industry.
Reminder: All of these talks are interesting, even just listening to them.

Related:

Sunday, January 21, 2024

Best talks that I recommended in 2023

 As some of you know, I maintain a database of the talks and podcasts that 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 recommended during this past year (2023) and to which I assigned a rating of 5/5:

  • "Simple Made Easy" (12-minute redux) by Rich Hickey (2011) (Rich Hickey) [Architecture, Inspirational, Scalability, Software Design] [Duration: 0: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
  • Architecture for Flow with Wardley Mapping, DDD, and Team Topologies (Susanne Kaiser) [DDD, Engineering Culture, Technology Strategy, Wardley maps, team topologies] [Duration: 0: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.
  • Master Class with Marty Cagan (Marty Cagan) [Inspirational, Product, Product Discovery, Product Leadership, Product Team, leadership] [Duration: 1:21] A great presentation on skilled product teams and leading product organizations. The questions at the end are also very interesting.
  • Artificial Intelligence seen from the software development lifecycle perspective (Nerea Luis) [AI, MLOps] [Duration: 0: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.
  • CONSTANT Changes To User Requirements Drive Me CRAZY (Dave Farley) [Agile, Continuous Delivery, Inspirational, Lean Product Management, Lean Software Development] [Duration: 0: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.
  • Systems Thinking for Developers (Jessica Kerr) [Inspirational, Mental models] [Duration: 0: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.
  • Simon Sinek Performance vs Trust (Simon Sinek) [Company Culture, Culture, Inspirational] [Duration: 0:02] Great description of the impact of trust on team members and leaders.
  • Improving Software Flow (Randy Shoup) [Devops, Flow, Inspirational, Lean, Lean Software Development, Technical leadership, leadership] [Duration: 0: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.
  • 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: 0:39] Good conversation about GeePaw Hill's software development approach based on taking continuous small safe steps (Many More Much Smaller Steps).
  • Tips For Technical Startup Founders | Startup School (Diana Hu) [Inspirational, Lean Software Development, Lean Startup, startup] [Duration: 0: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.
  • Oredev 2011: Sleeping with the enemy (Gojko Adzic) [Engineering Culture, testing] [Duration: 0: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.


It should be noted that I recommended them last year, but that does not imply that the talk or podcast is from 2023, in fact I think most of them are much older.


I hope you find these recommendations helpful.

Sunday, January 14, 2024

Good talks/podcasts (Jan 2024 I)

 

These are the best podcasts/talks I've seen/listened to recently:
  • Big Transitions in Small Steps (Kent Beck) [Agile, Software Design, Technical Practices] [Duration: 0:59:00] (⭐⭐⭐⭐⭐) 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.
  • Laloux Culture Model and Agile (AgileForAll) [Agile, Company Culture, Culture, Inspirational, Lean] [Duration: 0:09:00] (⭐⭐⭐⭐⭐) An overview of Frederic Laloux's Reinventing Organizations and how it relates to Lean and Agile Adoption.
  • Compliance standards should be modern development practices (Charity Majors) [Compliance, Engineering Culture, Security] [Duration: 0:37:00] Great talk in which Charity explains how to maintain good engineering practices in regulated environments while meeting the corresponding compliance requirements. The talk doesn't have a high level of detail, but provides ideas for a general approach.
  • Paul Akers - How to apply lean thinking to your business for success (Paul Akers) [Lean, Lean Manufacturing] [Duration: 0:57:00] (⭐⭐⭐⭐⭐) Very interesting conversation with Paul Akers who speaks from experience on how to apply lean thinking and continuous improvement.
  • A Young Lady's Illustrated Primer to Technical Decision-Making (Charity Majors) [Engineering Culture, Technical leadership] [Duration: 0:41:00] (⭐⭐⭐⭐⭐) 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.
  • Solomon Hykes Discusses Dagger, DevOps, and Docker (Solomon Hykes) [Continuous Delivery, Developer Productivity, Devex, Operations] [Duration: 0:43:00] Interesting podcast about the current problems of CI/CD pipelines and how they aim to solve them from Dagger. There are also interesting opinions from the perspective of creating technical products geared towards developers and about the development experience.
Reminder: All of these talks are interesting, even just listening to them.

Related:

Saturday, January 06, 2024

Be humble, no Rockstars allowed

Continuous delivery is based on the hypothesis that when facing uncertainty and complex problems (see Cynefin), the appropriate strategy is to assume that we do not know the solution and must continuously learn about the problem and the best possible solution. Additionally, continuous delivery forces us to put in place means to manage errors, which we are sure to make with minimal impact.

If we assume that we know the solution or the problem is sufficiently simple (or just complicated in Cynefin terms), continuous delivery and learning are not the most efficient strategies. In these cases, a direct approach is better, made by some team that has already done it before. However, do not expect to learn anything or improve anything. On the other hand, if it has been done before, doing it again would simply be a waste that we should try to avoid.

"The only way it's all going to go according to plan is if you don't learn anything." - Kent Beck

My experience and context

In my case:

  • I assume that what I come up with is not the best solution.
  • I assume that I have (we have many faults) in developing (I can't even do the 'hello world' right the first time).
  • I assume that we still have a lot to learn about everything (domain, business, tools, needs, etc).

And I have never been in complicated or simple contexts where a better solution had already been made. And if I came across one, I would try by all means not to build a new solution (to avoid waste).

In this context, the discipline of lean product development, with continuous delivery (focused on continuous flow), continuous learning, and sustainable quality, is the best option I know.


For Self-Sufficient Experts

If you consider yourself an expert in everything, who rarely makes mistakes and feels like a 'rockstar' in their field, you might think that you don't need continuous delivery. I suspect that humility and recognizing that EVERYONE (including yourself) makes mistakes are lacking in this case. Maybe I am wrong, and you are some mythological being who does not make mistakes and does not need to learn continuously. If that is the case, my apologies… :)


However, I won’t be able to work with you since I do make mistakes and need to be in a team that uses techniques that allow us to develop products despite errors without living in constant stress.


In summary

I believe that the general trick of this profession is to do teamwork in the best way we know how, with the best techniques we know, and still assume that we are going to make mistakes, that we have to keep learning, that we need to improve, and that we need a quality that allows us to be sustainable. The discipline of continuous delivery (CD, TBD, TDD, etc.) provides me with all of that...

Please...

  • Be a great team player. Collaborate and get involved.
  • Create a safe learning environment for your team.
  • Program as best you can but assume that you will fail, so create an environment where failing is manageable and has a low impact on customers.
  • Make the best architectural decisions you can, but assume that you will have to continuously improve it (evolve it).
  • Seek continuous delivery (as a goal that helps us generate the right discipline and a safe work environment).
  • Be humble and accept failure, uncertainty, and lack of knowledge.



I don't want to work with RockStars, nor with x10 developers… I want to work in x10 teams and environments, where learning is constant, questioning is accepted, errors are accepted (since they are low cost) and improvement is continuous.

Remember:

We need professionals, not heroes.

“I’m Not a Great Programmer, I’m Just a Good Programmer With Great Habits.” — Kent Beck