Beyond transactions in software and in life
At the root of catastrophes in both code and life lies a pervasive fallacy: the attempt to model processes as if they were transactions. Join me for an honest, sometimes raw retrospective on two decades of building a software development career. We’ll examine how personal philosophy impacts software design—and vice-versa. We’ll encounter the Transactional Fallacy, and how it can hinder our attempts to build resilient systems. And we’ll explore how a narrative-oriented mindset can lead to both better code and a more joyful life.
If you’ve just watched a version of this talk and you’re looking to follow up on some of the ideas or technologies I mentioned, you’re in the right place. I’ve collected a list of further recommended reading/viewing below.
Also! If you liked the talk, you might like my newsletter: SIGAVDI. I do a lot of musing at the intersection of life, philosophy, and code there, and I also respond to replies! 😁 You can sign up here.
- The Early History of Smalltalk is one of my all-time favorite software papers. It’s a beautifully written retrospective that introduces not only the philosophy of the Smalltalk design, but also contains a wealth of insight into creating the right environment for revolutionary technological change.
- For more on the Actor Model: Learning Elixir is a an approachable hands-on way to experience the actor model. There’s also the original Actor Model paper, by Carl Hewitt.
- Celso Vieira: Which is more fundamental: processes or things?
- In some versions of this talk I’ve referenced The Miracle of Mindfulness by Thich Nhat Hanh as a nice introduction to mindfulness meditation.
- To learn about observability, I recommend Charity Major’s writings, particularly her article Observability — a 3-year retrospective.
- Domain-Driven Design is a classic, and the community that has sprung up around it is at the forefront of grappling with the design of complex software systems.
- For Event Storming, I really like Paul Rayner’s introductory talk at YOW.
- For Temporal Modeling, check out talks by Mathias Verraes.
- Martin Fowler has an introduction to Event Sourcing on his website.
- If you want to learn to work more skillfully with failure and suffering in a software context, I recommend Amy Newell’s talk on that topic.
- You can find a concise introduction to the Saga Pattern here. For a more comprehensive look, I recommend the book Microservice Patterns by Chris Richardson.
- A great way to start learning about Resilience Engineering is by reading The STELLA Report. The definitive book on the topic is Resilience Engineering: Concepts and Precepts, by Hollnagel, Woods, & Leveson. If you want a short, engaging introduction to the way resilience engineers think about system failures, check out The Field Guide to Understanding ‘Human Error’, by Sydney Dekker.
- The Circuit-Breaker Pattern is described in Michael Nygard’s superb book Release It!, now in a second edition.
- Roland Kuhn’s Reactive Design Patterns covers everything from futures/promises to queue backpressure to supervisor hierarchies. It’s a cohesive and comprehensive guide to every level of a graceful software architecture.
- Abeba Birhane: Descarte was Wrong: a Person is a Person Through Other Persons.