Permaculture By Succession: Growing Bounded Contexts Through Ecological Software Design
Abstract
Domain models don't emerge fully-formed. They evolve through careful cultivation. This talk introduces "Permaculture By Succession: Growing Bounded Contexts Through Ecological Software Design", a pattern for growing sophisticated domain-driven systems by deliberately engineering the conditions that allow complexity to flourish.
Just as Douglas Fir forests cannot take root in barren soil, rich domain models cannot emerge in hostile organizational terrain. The speaker will explore how to transform greenfield chaos and brownfield rigidity into fertile ground for deep models through succession planning: identifying pioneer patterns that prepare the soil, nurse crops that establish nutrients, and climax architectures that represent the ultimate vision.
Attendees will learn to recognize when their domain is ready for Aggregates (and when it needs humbler Value Objects first), how to let tactical patterns emerge from genuine domain insight rather than premature abstraction, and why the most sophisticated DDD implementations often begin with what appears to be embarrassingly simple code.
Extended Description
The Barren Terrain Problem
Every DDD practitioner has witnessed it: teams attempt to implement Aggregates, Repositories, and complex event-driven architectures on day one, only to watch these patterns collapse under their own weight. The soil isn't ready. The domain understanding hasn't matured. The organizational culture doesn't support the nutrient cycles these patterns require.
Teams make the fundamental error of mistaking their destination for their starting point.
The Succession Strategy
In ecological restoration, practitioners don't plant redwoods in clearcuts. They plant nitrogen-fixing grasses that can survive harsh conditions. These pioneers don't just tolerate poor soil. They actively improve it, creating microclimates where more demanding species can be established. Manzanita shrubs follow, deepening root networks and building organic matter. Only then, in soil transformed by its predecessors, can the climax forest emerge.
Software systems demand the same humility and patience.
Act I: Pioneer Patterns - Establishing the Foothold
The first "grass" might be:
- Anemic models that honestly reflect anemic understanding - Rather than prematurely forcing behavior into entities teams don't yet comprehend, they acknowledge their ignorance with transaction scripts and simple CRUD. This isn't failure; it's honesty. They're buying time for domain insight to develop.
- Coarse-grained contexts that will later subdivide - Starting with a monolithic "Customer Management" context that will, through successive refinement, differentiate into "Identity & Access," "Customer Lifecycle," and "Preference Management" as boundaries reveal themselves through friction.
- Event logs before event sourcing - Simply appending events to a table before investing in event stores, snapshot strategies, or projection infrastructure. The pattern germinates; the complexity waits.
These pioneers share a trait: they're optimized for discovery, not permanence. They establish cognitive footholds in terra incognita.
Act II: Nurse Crops - Building Domain Nutrients
As ubiquitous language begins crystallizing and domain experts develop trust, teams introduce intermediate patterns:
- Value Objects that name discovered invariants - "Money" replaces primitive decimals not because someone read it in a book, but because the domain revealed that currency and amount are inseparable concepts.
- Domain Events that capture true business moments - Not technical notifications, but business facts: "PolicyUnderwritten", "ClaimAdjudicated", "CoverageEndorsed". These emerge from listening, not from architecture astronautics.
- Anti-Corruption Layers at genuine integration seams - Placed only where translation is painful, where impedance mismatches are visceral, not defensively wrapping every external system.
Nurse crops do double duty: they provide immediate value while conditioning the environment for what comes next.
Act III: The Climax Forest - Sophisticated Domain Models
Only now, with rich soil established, do teams introduce:
- True Aggregates with transactional boundaries derived from domain invariants - Not because they need to demonstrate DDD sophistication, but because the business rules demand it. The Order Aggregate emerges not from pattern catalogs but from the discovered truth that order line items cannot be individually valid; the order is the atom of consistency.
- Process Managers orchestrating long-running sagas - After teams have felt the pain of trying to coordinate multi-step business processes with simpler patterns, they introduce the abstraction that captures genuine process complexity.
- Bounded Contexts with published language - Only after contexts have proven their boundaries through collision do teams formalize their contracts and upstream/downstream relationships.
The Meta-Pattern: Succession as Discovery Protocol
The deeper insight: succession planning is actually a discovery protocol. Each stage reveals what the next stage needs to address:
- Grass reveals where water collects (pain points)
- Shrubs reveal where nutrients concentrate (value clusters)
- The forest reveals the stable climax state (the core domain)
Transaction scripts reveal where behavior wants to cluster. Anemic models reveal which concepts carry business meaning. Simple contexts reveal where bounded contexts should split. The system tells teams what it wants to become, if they listen.
Anti-Patterns: When Succession Fails
The talk will examine failure modes:
- Premature climax: Implementing event sourcing before understanding which events matter
- Arrested succession: Staying with CRUD when the domain is screaming for richer models
- Invasive species: Introducing patterns from other domains that outcompete native growth (e-commerce patterns don't belong in healthcare)
- Monoculture: Applying one pattern everywhere (not every concept deserves to be an Aggregate)
Practical Heuristics
Attendees will leave with diagnostic questions:
- "Can the team name three invariants this Aggregate protects?" (If not, it's not ready)
- "Has this boundary caused coordination pain?" (If not, don't split the context)
- "Do domain experts use these terms unprompted?" (If not, it's not ubiquitous language)
- "Could this be implemented with one less abstraction layer?" (If yes, do that first)
Why This Matters for DDD
Domain-Driven Design's greatest liability is that its most powerful patterns look simple in isolation but require sophisticated soil to flourish. Aggregates make sense in books; in practice, they demand domain insight that only emerges through cultivation. This talk provides the missing manual for how to create the conditions where DDD's promise becomes reality.
The speaker is not advocating for permanent simplicity or for pointless complexity. The talk advocates for succession — for recognizing that the path to sophisticated domain models runs through less sophisticated ones, and that this progression is not technical cowardice but ecological wisdom.
Target Audience
This talk speaks to:
- Practitioners suffering from premature pattern application - those who've implemented Aggregates that protect no invariants
- Teams stuck in CRUD purgatory - those who know their domain deserves better but can't see the path forward
- Architects planning greenfield systems - those who need a strategy beyond "implement all the patterns"
- Anyone who's failed at DDD - and wants to understand why the soil wasn't ready
Takeaways
- A diagnostic framework for assessing whether a domain is ready for specific DDD patterns
- A progression path from simple to sophisticated that respects domain maturity
- Recognition that "simple for now" is often the most sophisticated choice
- The courage to plant grass when everyone expects redwoods
The domain tells teams what it's ready for. Then they give it exactly that - and nothing more.
This is not a talk about lowering standards. It's about recognizing that the tallest trees grow from the most patiently prepared soil.