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:

Small Safe Steps

Vertical Slicing

Continuous Delivery