Hard Boiled Software podkast

"Event Modeling: The Blueprint for Building Maintainable Software" with Adam Dymitruk

0:00
1:03:55
Do tyłu o 15 sekund
Do przodu o 15 sekund

Adam Dymitruk is the creator of event modeling and the CEO and founder of Adaptech Group, a consultancy that builds information systems using event sourcing and event modeling. A software developer with over three decades of experience, Adam is a core contributor to CQRS and event sourcing theory and practice since 2008, a top 0.1% Stack Overflow contributor, and one of the original voices in the ALT.NET movement. He’s currently writing the definitive book on event modeling, with a companion booklet due out first.

Episode Description

Why do we keep building software that breaks every time we add a feature? And what if there were a way to describe a system so clearly that business people, designers, and developers could all work from the same blueprint?

In this conversation, Adam Dymitruk traces a path from the rebellion of the ALT.NET movement in the mid-2000s through the rise of domain-driven design, the discovery of event sourcing, and the creation of event modeling, a notation and process for describing information systems that has quietly become one of the most practical innovations in modern software design. Along the way, Adam and Dave revisit shared history: the nHibernate Mafia, the fight against sealed classes, the moment when Martin Fowler’s 2005 article on event sourcing planted a seed that would take years to fully grow, and the community of developers who decided they’d rather take care of each other than wait for permission from Microsoft.

The heart of the episode is Adam’s case for why event sourcing and event modeling eliminate entire categories of problems that most teams accept as inevitable: the hockey-stick cost curve, the coupling that turns codebases into houses of cards, the schema migrations that become existential crises, and the tech debt that accumulates because every new feature has to touch code that already works. Adam explains how Adaptech Group has built its business on fixed-cost contracts and free bug fixes, not as a loss leader but because the architecture genuinely makes it possible. The conversation closes with Adam’s view on AI as the next irreversible point of no return, why event modeling provides exactly the kind of specification that AI needs to generate good code, and a first look at the two books he’s writing to bring this work to a wider audience.

Links & Resources

Guest Links

* Adaptech Group — Adam’s consultancy

* Event Modeling — the official site for the event modeling methodology

* Event Modeling: What is it? — Adam’s original 2019 article

* Adam Dymitruk on LinkedIn

* Adam Dymitruk on GitHub

* Event Modeling Discord Community

Books & Articles Mentioned

* Understanding Eventsourcing by Martin Dilger — the first book combining event modeling and event sourcing

* Domain-Driven Design by Eric Evans — the influential “blue book” both Adam and Dave reference on multiple occasions

* Domain-Driven Design Reference by Eric Evans — the companion booklet that Adam credits as a model for his own booklet approach

* Working Effectively with Legacy Code by Michael Feathers — cited by Adam as a model for the reference-pattern format of his upcoming book

* “Event Sourcing” by Martin Fowler — the December 2005 article that introduced Adam to event sourcing

Tools, Frameworks & Concepts

* Event Sourcing — an architectural pattern of storing state changes as an immutable sequence of events

* CQRS (Command Query Responsibility Segregation) — a pattern for separating read and write models

* Domain-Driven Design — Eric Evans’ approach to software development that became the intellectual home for event sourcing in the .NET world

* Event Storming — Alberto Brandolini’s workshop format that influenced event modeling’s collaborative approach

* ALT.NET — the mid-2000s .NET developer community that championed open source, TDD, and better practices

* Test-Driven Development (TDD) — discussed at length, including Adam’s controversial position that event sourcing eliminates the need for it

* Cucumber — BDD testing tool that Adam used before discovering that events themselves serve as specifications

* Storyteller — Jeremy Miller’s graphical DSL testing framework for .NET that Adam used extensively for specification by example

* NUnit — Charlie Poole’s open source .NET testing framework, a counterpart to Java’s JUnit

* nHibernate — the open source .NET ORM ported from Java’s Hibernate; central to ALT.NET’s origin story (originally nicknamed the “nHibernate Mafia”)

* Dynamic Consistency Boundary — an evolution beyond DDD aggregates for managing consistency in event-sourced systems

* Specification by Example / Behavior-Driven Development — the testing and specification approaches that preceded event modeling

* Open/Closed Principle — referenced by Adam in the context of event sourcing’s add-only architecture

* Cursor — AI coding tool Adam used to demonstrate that event model screenshots produce correct implementations on the first try

* Unix Philosophy — invoked by Dave to describe the component architecture that event sourcing enables: many specific tools that each do one thing well

People Referenced

* Greg Young — CQRS and event sourcing pioneer, longtime collaborator

* Scott Bellware — Founder of the Eventide project and co-founder of ALT.NET

* Martin Fowler — author of the 2005 event sourcing article

* Eric Evans — author of Domain-Driven Design

* Michael Feathers — author of Working Effectively with Legacy Code (also former podcast guest)

* Alberto Brandolini — creator of Event Storming

* Martin Dilger — author of Understanding Eventsourcing

* Jeremy Miller — creator of the Storyteller testing framework

* Mike Stockdale — creator of SpecSharp, from Calgary

* Charlie Poole — creator of NUnit

* Sebastian Lambla — .NET open source contributor whose work was famously overwritten by Microsoft

* Scott Hanselman — referenced in the context of ALT.NET’s reach into the Microsoft community

Topics Discussed

The ALT.NET Rebellion and Finding Your People

Adam and Dave open by tracing their shared history in the ALT.NET movement, a community of .NET developers who pushed back against Microsoft’s top-down approach to software development in the mid-2000s. What started as frustration with sealed classes, proprietary tooling, and the “embrace, extend, extinguish” mentality became a proving ground for open source, test-driven development, and the architectural ideas that would shape both of their careers.

Key points:

* ALT.NET (originally nicknamed the “nHibernate Mafia”) was born from developers needing to take care of each other because Microsoft wasn’t supporting the open source community

* The community brought together TDD practitioners, open source advocates, and domain-driven design enthusiasts, creating the conditions for ideas like event sourcing to gain traction

* Figures like Sebastian Lambla experienced the worst of Microsoft’s competitive stance, having their open source work overwritten overnight by official Microsoft alternatives

* Both Adam and Dave credit ALT.NET as the environment where their points of view coalesced, particularly around DDD and event-driven architectures

From Domain-Driven Design to Event Sourcing

The conversation traces how DDD provided the intellectual soil for event sourcing to take root, beginning with Martin Fowler’s 2005 article and evolving through Adam’s own experiments writing his first event store in 2009. Adam describes the shift from thinking about domain models and objects to thinking about state changes, facts, and immutable ledgers.

Key points:

* Adam wrote his first production event store in 2009 as a single page of C# code, proving the simplicity of the approach

* The key insight: treat information the way accountants treat money, with full accountability and no erasures

* Specification by example and BDD, while valuable stepping stones, became unnecessary once events themselves served as human-readable specifications

* The community continues to evolve; practices like dynamic consistency boundaries are replacing traditional DDD aggregates, and event versioning through upcasters is giving way to handling multiple event versions directly in read …



This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit newsletter.nerdnoir.com

Więcej odcinków z kanału "Hard Boiled Software"