Sunday, August 09, 2020

Good talks/podcasts (Aug 2020 I)

 

These are the best podcast/talks I've seen/listen to recently:

  • Six Decades of Software Engineering (Mary Poppendieck) [Agile, Devops, Engineering Culture, Lean Software Development] (⭐⭐⭐⭐⭐) 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: https://speakerdeck.com/devopslx/2020-dot-07-meetup-talk-may-poppendieck-six-decades-of-software-engineering
  • 7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development (J.B. Rainsberger) [Agile, Design, XP] (⭐⭐⭐⭐⭐) Short excellent talk (7:26') that distilled the essence of software development and agile development. Essential. A must.
  • YOW! Singapore/Hong Kong 2017 The Best OO Language is a Functional One (Dave Thomas) [Design, Functional, OOP] Interesting talk about some OO concepts using elixir.
  • 15 teams and 4 months to achieve Continuous Delivery (Thierry de Pauw) [Continuous Delivery, Engineering Culture, Lean, Lean Software Development, TOC] Interesting presentation about how to transform the engineering culture of a company to reach Continuous Delivery. He talked about Improvement Kata, Value Stream Mapping, and the Theory Of Constraints to choose which changes to apply first, and kickstart the organisational changes we needed to improve quality and drive down lead times.
  • Mastering the Problem Space to Achieve Product-Market Fit (Dan Olsen) [Lean, Lean Product Management, Product, Product Discovery, Product Strategy] Good explanations about modern Product Management concepts (Product market fit, Problem Space vs Solutions Space, Lean product management, etc).
  • GOTO 2020 • Modern Continuous Delivery (Ken Mugrage) [Continuous Delivery, Engineering Culture] (⭐⭐⭐⭐⭐) Great description of a Continuous Delivery process.
  • 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] (⭐⭐⭐⭐⭐) A ton of useful insights and ideas in this excellent Charity presentation. Great description of observability and its need in modern systems.
  • Podcast with Deloitte - Building Great Software Takes Great Teams and Communication (Matthew Skelton) [Agile, Architecture, Devops, Engineering Culture, Management, Technology Strategy] The show covered the original DevOps Topologies patterns and how these have been used in industry, and then talked about what’s in the book Team Topologies: well-defined team types, what we mean by a modern platform, team interaction modes, clear responsibility boundaries, DevEx, and using difficulties in team interactions as ‘signals’ to the organization that something is missing or misplaced. We also talked about moving beyond the Spotify model - success in software delivery is not just about team structures but about how teams interact and what kind of relationships they create, sustain, and evolve.
  • Software Modernisation (Sandro Mancuso) [Architecture, Architecture patterns, Technical leadership, Technology Strategy] In this talk, Sandro Mancuso, Software Craftsman and Co-Founder at Codurance will cover the key aspects of Software Modernisation initiatives and why they are neede
Reminder, All these talks are interesting even just listening to them, without seeing them.

Related: 

Monday, July 27, 2020

Good talks/podcasts (Jul 2020 II)



These are the best podcast/talks I've seen/listen to recently:
  • Life as a Chief Architect (Gregor Hohpe) [Architecture, Inspirational, Technical leadership, Technology Strategy] Gregor Hohpe will share insights from his life as a Chief Architect.
  • Creating Value and Flow in Product Development (John Cutler) [Agile, Engineering Culture, Lean, Lean Software Development, Product, Teams] (⭐⭐⭐⭐⭐) 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.
  • The Work That Makes the Work Work (John Cutler) [Agile, Company Culture, Engineering Culture, Inspirational] A quick video about continuous improvement, and visualizing the work that makes the work work with Popcorn Flow c/o @agilesensei
  • The subtle difference between a constraint and a bottleneck (Theory of Constraints) (Chris Hohmann) [Lean, TOC] (⭐⭐⭐⭐⭐) 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.)
Reminder, All these talks are interesting even just listening to them, without seeing them.

Related: 

Sunday, July 12, 2020

Good talks/podcasts (Jul 2020 I)


These are the best podcast/talks I've seen/listen to recently:
  • Boundaries (Gary Bernhardt) [Architecture, Architecture patterns, Design, Evolutionary Design] (⭐⭐⭐⭐⭐) 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.
  • Cross-functional Leadership for High-Performance Product Teams (Dan Olsen) [Engineering Culture, Inspirational, Lean, Product] Interesting intro about modern product management. Interesting to understand concepts as product market fit and the Product-Market Fit Pyramid.
  • Habits, Practices & Strategy For Building Viral Products (Oji Udezue) [Inspirational, Product, Product Strategy] A discussion on the habits, practices and strategy for building products that are extremely viral and able to catch the attention of your target market, so you can grow your business faster.
  • Ask for the unreasonable… and then get out of the way (Andrew Harcourt) [Engineering Culture, Inspirational, Teams, Technology Strategy] The talk describe some ways to map strategy to execution by setting “unreasonable” goals - and then working out how to get organisational constraints - and ourselves - out of the way.
  • Life as a Chief Architect (Gregor Hohpe) [Architecture, Inspirational, Technical leadership, Technology Strategy] Gregor Hohpe will share insights from his life as a Chief Architect.

Reminder, All these talks are interesting even just listening to them, without seeing them.

Related: 

Continuous learning. What / How


“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
“Working software is the primary measure of progress.”

But making software is complex and requires a good understanding of the customer's needs, the market (WHAT), and the reactions of the system we are developing (HOW). Let's remember that current software systems are complex systems, and that implies that they have emerging behaviors that we don't know when we create them.
“The main idea behind complex systems is that the ensemble behaves in way not predicted by the components. The interactions matter more than the nature of the units. ... This is called an “emergent” property of the whole, by which parts and whole differ because what matters is the interactions between such parts. And interactions can obey very simple rules.” 
Nassim Nicholas Taleb

Therefore the bottleneck to create software that meets customer needs is continuous learning. But learning is useless if we bring the system down or piss off our customers.

In a software system each of the deployments/changes we make, allows us to learn and make decisions for the next steps. Therefore we are interested in shortening the learning and decision cycles as much as possible.

What is Agile delivery's strategy for doing so?

Agile Delivery's strategy is to deliver increments in small safe steps (3S), each of which must attempt to generate learning about the WHAT (user needs) or the HOW (technology/system).

Learning WHAT / User needs / Valuable software

If we have a lean product development process, we will try to validate and learn this aspect by generating as little software as possible. This implies generating hypotheses and trying to achieve validated learning using everything we have at our disposal: data analysis, prototypes with or without code, or software increments. For the latter, we will have to divide using Vertical Slicing in increments so small as possible.
Of course, to learn about user behavior, it is also essential that we instrument the product to learn continuously from the use that the customer makes of the system.

Learning HOW / Technology/System / Working software

Software is a complex system. This means that we can't foresee the final behavior when we develop each of its parts independently. That is why it is essential to make small safe changes (technical Slicing) that allow us to learn from the behavior of the system in production without affecting the user. Of course, in order to get these learnings, we need to decouple the deployments (putting into production a change) from the releases (activating a change for the end-user).


Summary

In summary, the sure way to achieve this continuous learning of the WHAT and HOW that agile delivery offers is the Continuous Delivery of Small Safe Steps (both purely technical increases and increases in value for the user).
It seems that the data confirm that this is the right approach for making digital products.



References:

Vertical Slicing Continuous Delivery

Sunday, June 28, 2020

Good talks/podcasts (Jun 2020 II)


These are the best podcast/talks I've seen/listen to recently:
  • 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.
  • Strategic Autonomous Design: Patterns & Heuristics (Nick Tune) [DDD, Design] Practical techniques for identifying effective modules in your software systems and enabling autonomous teams in your organization, and you’ll see modeling patterns based on real-world examples from a variety of domains. Along the way, you’ll learn about the theoretical concepts underpinning the techniques, touching on DDD, Systems Thinking, Promise Theory, Theory of Constraints, and more. 

  • Product Discovery: Engineering perspective (Eduardo Ferro) [Engineering Culture, Product, Teams] A product team with excellent product discovery habits has a tremendous competitive advantage.​​​​​​​ Engineers must get involved in the continuous product discovery process. Learn how to leverage technology, team organization, and practices to facilitate this learning process. The talk tries to explain why every team needs Product Discovery, what does an effective team look like​​​​ and how our systems should facilitate Product Discovery.
    Slides: http://www.eferro.net/2020/06/technology-at-core-of-product-discovery.html
    Additional Notes: https://miro.com/app/board/o9J_ksGhEsM=/
    Disclaimer: This is my first public talk in English, and I think the delivery is awful, but I think the content adds value, so I decided to include it in this post.
Reminder, All these talks are interesting even just listening to them, without seeing them.

Related: 

Sunday, June 21, 2020

Charlas/Podcasts interesantes (Castellano) (2020 Junio)


Estas son algunas charlas y podcast interesantes que he visto o escuchado ultimamente: