← Extractions

The Pillars of Domain Driven Design — Marco Heimeshoff at wroclove.rb 2018

Marco Heimeshoff delivers the opening talk at wroclove.rb 2018, introducing Domain-Driven Design: ubiquitous language, bounded contexts, strategic context mapping, Cynefin-based complexity framing, EventStorming as a modeling practice, hexagonal architecture to protect the domain, risks (hierarchies, perfectionism, constraints), and recommended reading. Q&A covers DDD and OOP, startups, uncooperative clients, and remote modeling.

Model
claude-opus-4-7
Ingestion
6ba7085b
Input tokens
265,437
fresh
101,193
cached
140,959
cache write
23,285
Output tokens
15,668
Duration
236.1s
Roundtrips
6
Tool calls
18
Cost
$0.00
Nodes/edges extracted
39 / 64
Read set (nodes/edges)
65 / 2

Nodes (39)

create Value Object concept
kind (empty) concept
name (empty) Value Object
slug (empty) value-object
attrs (empty) {"category" => "pattern"}
description (empty) Low-hanging fruit of DDD: replace primitive data types in domain code with small typed shells (constructor enforces l...
short_description (empty) Small immutable type that represents a domain primitive with meaning.
create Anti-Corruption Layer concept
kind (empty) concept
name (empty) Anti-Corruption Layer
slug (empty) anti-corruption-layer
attrs (empty) {"category" => "pattern"}
description (empty) A layer that translates between a downstream bounded context's clean model and whatever external/upstream model it ha...
short_description (empty) Translation barrier isolating a bounded context from another context's model.
update Marco Heimeshoff person
attrs (empty) {"domain" => "shift planning for hospitals", "background" => "C#/.NET", "nationality" => "German"}
description Conference speaker. Conference speaker who loves Domain-Driven Design 'to an unhealthy degree'. Started the German DDD community and foun...
short_description Conference speaker. German DDD practitioner, speaker, and co-founder of the KanDDDinsky conference.
update The pillars of Domain Driven Design talk
description Talk at wroclove.rb 2018. Opening talk of wroclove.rb 2018 by Marco Heimeshoff. A language-agnostic introduction to Domain-Driven Design coveri...
short_description Talk at wroclove.rb 2018. Marco Heimeshoff's DDD introduction talk at wroclove.rb 2018.
update Domain-Driven Design concept
description Approach originating in Eric Evans' work, further elaborated by multiple books. The speaker emphasizes DDD requires c... Approach originating in Eric Evans' 2003/2004 book 'Tackling Complexity in the Heart of Software'. Aligns business an...
create Ubiquitous Language concept
kind (empty) concept
name (empty) Ubiquitous Language
slug (empty) ubiquitous-language
attrs (empty) {"category" => "practice"}
description (empty) A language deliberately designed so the same terms are used in spoken discussion, written documentation, tests, and s...
short_description (empty) Designed shared language used by domain experts and code within one bounded context.
update Bounded Context concept
description Encapsulation boundary around domain logic ensuring each concept has a unique meaning inside it. E.g., B2B and B2C cu... Semantic encapsulation inside a domain defining where a term has one meaning. Not a natural boundary — it is a design...
create Context Map concept
kind (empty) concept
name (empty) Context Map
slug (empty) context-map
attrs (empty) {"category" => "pattern"}
description (empty) A map of the bounded contexts that make up a domain, used to identify which are core, supporting, or generic, where t...
short_description (empty) Strategic map of a domain's bounded contexts and their relationships.
create Core Domain concept
kind (empty) concept
name (empty) Core Domain
slug (empty) core-domain
attrs (empty) {"category" => "pattern"}
description (empty) Subset of the domain where a company differentiates itself in the market (e.g., shopping cart for Amazon). Most creat...
short_description (empty) The part of the domain that gives a business competitive advantage.
create Hexagonal Architecture concept
kind (empty) concept
name (empty) Hexagonal Architecture
slug (empty) hexagonal-architecture
attrs (empty) {"category" => "architecture"}
description (empty) Architecture where the domain sits at the center, and all infrastructure (databases, REST, messaging, UI, ORMs) lives...
short_description (empty) Ports-and-adapters architecture that keeps the domain pure.
create Weasel Words concept
kind (empty) concept
name (empty) Weasel Words
slug (empty) weasel-words
attrs (empty) {"category" => "practice"}
description (empty) Shakespeare-derived metaphor (a weasel sucks out the contents leaving an empty shell) for prefixes/suffixes that desc...
short_description (empty) Technical prefixes and suffixes in class names that drain domain meaning.
create Cynefin Framework concept
kind (empty) concept
name (empty) Cynefin Framework
slug (empty) cynefin-framework
attrs (empty) {"category" => "methodology"}
description (empty) Frame of reference for complexity used by Heimeshoff to decide how deeply to apply DDD. Obvious: sense–categorize–res...
short_description (empty) Sense-making framework classifying problems as obvious, complicated, complex, or chaotic.
create Conway's Law concept
kind (empty) concept
name (empty) Conway's Law
slug (empty) conway-s-law
attrs (empty) {"category" => "principle"}
description (empty) Observation that software architecture reflects team/organization communication structure. Heimeshoff cites it to arg...
short_description (empty) Systems mirror the communication structure of the organization that builds them.
update EventStorming concept
description Workshop format invented by Alberto Brandolini in which business experts and developers place colored sticky notes on... Workshop format invented by Alberto Brandolini combining 'domain events' with 'brainstorming'. Business experts and d...
create Domain Storytelling concept
kind (empty) concept
name (empty) Domain Storytelling
slug (empty) domain-storytelling
attrs (empty) {"category" => "practice"}
description (empty) Collaborative modeling technique listed alongside EventStorming and the DDD whirlpool as a way to ask the right quest...
short_description (empty) Collaborative DDD modeling technique using pictographic domain stories.
create DDD Whirlpool concept
kind (empty) concept
name (empty) DDD Whirlpool
slug (empty) ddd-whirlpool
attrs (empty) {"category" => "practice"}
description (empty) Iterative DDD process described by Eric Evans: take a handful of example stories/scenarios, design a model that solve...
short_description (empty) Eric Evans' iterative model-exploration cycle driven by scenarios.
create Five Whys concept
kind (empty) concept
name (empty) Five Whys
slug (empty) five-whys
attrs (empty) {"category" => "practice"}
description (empty) Heuristic used during domain modeling: repeatedly ask 'why is that important?' to move past fake 'because' reasons an...
short_description (empty) Questioning technique that drills to the real reason behind a statement.
create Eric Evans person
kind (empty) person
name (empty) Eric Evans
slug (empty) eric-evans
description (empty) Author of 'Domain-Driven Design: Tackling Complexity in the Heart of Software' (2003/2004), the foundational DDD text...
short_description (empty) Author of the original Domain-Driven Design book.
create Domain-Driven Design: Tackling Complexity in the Heart of Software resource
kind (empty) resource
name (empty) Domain-Driven Design: Tackling Complexity in the Heart of Software
slug (empty) domain-driven-design-tackling-complexity-in-the-heart-of-software
attrs (empty) {"type" => "book", "year" => "2004"}
description (empty) The 'blue book' that launched Domain-Driven Design. Published 2004 (written 2003). Subtitle: 'Tackling Complexity in ...
short_description (empty) Eric Evans' foundational 2003/2004 book that established DDD.
create Domain-Driven Design: Patterns, Principles and Practices resource
kind (empty) resource
name (empty) Domain-Driven Design: Patterns, Principles and Practices
slug (empty) domain-driven-design-patterns-principles-and-practices
attrs (empty) {"type" => "book"}
description (empty) Book by Scott Millett and Nick Tune. Heimeshoff's top recommendation for newcomers: covers strategic analysis, modeli...
short_description (empty) Scott Millett and Nick Tune's practical DDD book.
create Implementing Domain-Driven Design resource
kind (empty) resource
name (empty) Implementing Domain-Driven Design
slug (empty) implementing-domain-driven-design
attrs (empty) {"type" => "book"}
description (empty) Book by Vaughn Vernon ('von Verner' in the transcript). Heimeshoff recommends it particularly for Java developers as ...
short_description (empty) Vaughn Vernon's practical DDD book, often recommended for Java developers.
update Introducing EventStorming resource
description Book recommended by the speaker as the primary reference for learning EventStorming, alongside Brandolini's talks on ... LeanPub book by Alberto Brandolini. Heimeshoff notes it has been ~80% complete for over two years because Brandolini ...
short_description Book by Alberto Brandolini on the EventStorming workshop technique. Alberto Brandolini's LeanPub book on EventStorming.
create Drive resource
kind (empty) resource
name (empty) Drive
slug (empty) drive
attrs (empty) {"type" => "book"}
description (empty) Book by Daniel (David in the transcript) Pink identifying autonomy, mastery, and purpose as the main intrinsic motiva...
short_description (empty) Daniel Pink's book on intrinsic motivation: autonomy, mastery, purpose.
update Alberto Brandolini person
description Author of Introducing EventStorming and creator of the EventStorming workshop technique. The speaker recommends watch... Creator of the EventStorming workshop technique and author of 'Introducing EventStorming' on LeanPub. Frequently cite...
create Matthias Verraes person
kind (empty) person
name (empty) Matthias Verraes
slug (empty) matthias-verraes
description (empty) DDD practitioner credited by Marco Heimeshoff for the modeling heuristic: when someone states something as binary (tr...
short_description (empty) DDD practitioner who taught Heimeshoff the 'one dimension higher' heuristic.
create KanDDDinsky event
kind (empty) event
name (empty) KanDDDinsky
slug (empty) kandddinsky
attrs (empty) {"format" => "in-person", "location" => "Berlin, Germany", "recurrence" => "annual, October"}
description (empty) Small annual DDD conference held in Berlin in October, co-founded by Marco Heimeshoff alongside the German DDD commun...
short_description (empty) Annual German Domain-Driven Design conference in Berlin.
update RealtimeBoard tool
description Online whiteboard (later known as Miro) the team uses for EventStorming sessions, allowing multiple participants to w... Online whiteboard (later known as Miro) the team uses for remote EventStorming: unlimited space, visible cursors for ...
create Sync Space VR tool
kind (empty) tool
name (empty) Sync Space VR
slug (empty) sync-space-vr
attrs (empty) {"category" => "service"}
description (empty) VR tool mentioned by Heimeshoff for distributed collaboration — participants with HTC Vive or Gear VR meet in a virtu...
short_description (empty) VR collaboration tool for meeting and modeling in a virtual room.
create Eliminate Primitives With Value Types takeaway
kind (empty) takeaway
name (empty) Eliminate Primitives With Value Types
slug (empty) eliminate-primitives-with-value-types
attrs (empty) {"type" => "recommendation"}
description (empty) Low-hanging fruit of DDD: wherever a primitive data type appears in domain code (string, int, bool with Hungarian not...
short_description (empty) Replace string/int/bool primitives in domain code with value types.
create One Ubiquitous Language Per Bounded Context takeaway
kind (empty) takeaway
name (empty) One Ubiquitous Language Per Bounded Context
slug (empty) one-ubiquitous-language-per-bounded-context
attrs (empty) {"type" => "insight"}
description (empty) The single genuinely new contribution of Evans' DDD book, per Heimeshoff: don't build one global 'Customer' class — b...
short_description (empty) Each bounded context must have its own ubiquitous language.
create Write Domain Code Free of Frameworks takeaway
kind (empty) takeaway
name (empty) Write Domain Code Free of Frameworks
slug (empty) write-domain-code-free-of-frameworks
attrs (empty) {"type" => "recommendation"}
description (empty) Third pillar of DDD in Heimeshoff's 3-step model: after extracting the right model and expressing it in semantic code...
short_description (empty) Protect domain code from framework, database, and messaging corruption.
create Three Steps of DDD takeaway
kind (empty) takeaway
name (empty) Three Steps of DDD
slug (empty) three-steps-of-ddd
attrs (empty) {"type" => "lesson-learned"}
description (empty) Heimeshoff's simplified essence of DDD: (1) extract the right model that can help with business problems — not the re...
short_description (empty) Extract the right model, express it semantically, protect it from corruption.
create Bounded Contexts Are Not Microservices takeaway
kind (empty) takeaway
name (empty) Bounded Contexts Are Not Microservices
slug (empty) bounded-contexts-are-not-microservices
attrs (empty) {"type" => "warning"}
description (empty) Heimeshoff's explicit warning: bounded contexts are not microservices. Sometimes they coincide, but more often they d...
short_description (empty) Do not conflate bounded contexts with microservices.
create Risks of DDD: Hierarchy, Perfectionism, Constraints takeaway
kind (empty) takeaway
name (empty) Risks of DDD: Hierarchy, Perfectionism, Constraints
slug (empty) risks-of-ddd-hierarchy-perfectionism-constraints
attrs (empty) {"type" => "warning"}
description (empty) Three pain points Heimeshoff has encountered adopting DDD: (1) Hierarchies — middle management loses power when teams...
short_description (empty) Main risks when adopting DDD in an organization.
create Standard Meetings Kill Collaboration takeaway
kind (empty) takeaway
name (empty) Standard Meetings Kill Collaboration
slug (empty) standard-meetings-kill-collaboration
attrs (empty) {"type" => "insight"}
description (empty) In a seated circle, neighbors become allies, opposites become enemies, and people behind you are invisible — and atte...
short_description (empty) Seated circle meetings inhibit modeling; stand at a shared wall instead.
create Does DDD require object-oriented programming? question
kind (empty) question
name (empty) Does DDD require object-oriented programming?
slug (empty) does-ddd-require-object-oriented-programming
attrs (empty) {"answer_summary" => "No correlation. DDD grew up in OO because 2003 norms were OO, but it is paradigm-agnostic — wor...
description (empty) Audience member asks whether there is a correlation between DDD and object-oriented programming. Heimeshoff answers: ...
short_description (empty) Whether DDD is tied to or intersects with OOP.
create Does DDD apply to startups? question
kind (empty) question
name (empty) Does DDD apply to startups?
slug (empty) does-ddd-apply-to-startups
attrs (empty) {"answer_summary" => "Yes. Use EventStorming to explore multiple candidate business models in parallel, use the DDD w...
description (empty) Audience member asks if DDD is efficient for startups exploring new ideas. Heimeshoff: yes, on a daily basis. Don't d...
short_description (empty) Whether DDD fits startups where the business is still being discovered.
create How to apply DDD when the client refuses to learn ubiquitous language? question
kind (empty) question
name (empty) How to apply DDD when the client refuses to learn ubiquitous language?
slug (empty) how-to-apply-ddd-when-the-client-refuses-to-learn-ubiquitous-language
attrs (empty) {"answer_summary" => "Do the work for them: write specs/tests in presumed domain language, print outputs, give them a...
description (empty) Audience member asks how to apply DDD when the client is the domain expert but refuses to share or learn the ubiquito...
short_description (empty) Handling DDD when the domain-expert client is uncooperative.
create How to do DDD remotely? question
kind (empty) question
name (empty) How to do DDD remotely?
slug (empty) how-to-do-ddd-remotely
attrs (empty) {"answer_summary" => "Not fully. Tools like RealtimeBoard, VR (Sync Space), and online sticky-note boards help after ...
description (empty) Audience member asks for tips on remote DDD. Heimeshoff: it doesn't really work at full power — you lose the ability ...
short_description (empty) Remote collaborative modeling when teams are distributed.

Edges (64)

create The pillars of Domain Driven DesignaboutDomain Storytelling
context (empty) Listed alongside EventStorming and whirlpool as domain-discovery techniques.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 07ed09a5-2783-41ef-849f-098f0958d194
create How to apply DDD when the client refuses to learn ubiquitous language?asked_atThe pillars of Domain Driven Design
context (empty) Q&A on uncooperative clients.
relation (empty) asked_at
source_node_id (empty) 076a5538-157d-4e19-8735-ef1a678d8ba0
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
update Marco HeimeshoffauthoredThe pillars of Domain Driven Design
context (empty) Delivered this talk at wroclove.rb 2018.
update The pillars of Domain Driven Designpresented_atwroclove.rb 2018
context (empty) Opening talk of the conference.
create Marco Heimeshoffattendedwroclove.rb 2018
context (empty) Traveled (missed his flight, took the next plane) to deliver the opening talk.
relation (empty) attended
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 9243ef2c-21bb-4f23-b450-9ecd87882dfe
create Marco Heimeshoffworks_onKanDDDinsky
attrs (empty) {"role" => "founder/organizer"}
context (empty) Started the German DDD community and founded this annual Berlin DDD conference.
relation (empty) works_on
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 04c6c917-7d2c-47f7-9eba-40347f423459
create Marco Heimeshoffhas_skillDomain-Driven Design
attrs (empty) {"level" => "expert"}
context (empty) Self-described as loving DDD 'to an unhealthy degree'; teaches and advocates it.
relation (empty) has_skill
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create The pillars of Domain Driven DesignaboutDomain-Driven Design
context (empty) Talk is an introduction to DDD and its strategic and tactical pillars.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create The pillars of Domain Driven DesignaboutUbiquitous Language
context (empty) Extensive section on designing a ubiquitous language free of weasel words.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 143ce1ce-e02c-4efb-abeb-ad39d8cdc0d6
create The pillars of Domain Driven DesignaboutBounded Context
context (empty) Talk explains bounded contexts, how to discover them, and why they are the core new idea in DDD.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) bb2674d4-360e-4ac8-84a1-85be3230a187
create The pillars of Domain Driven DesignaboutContext Map
context (empty) Strategic section uses context maps to place core, supporting, and generic contexts.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 3c367b71-bec9-4e84-94d1-1eb3d26c7e21
create The pillars of Domain Driven DesignaboutCore Domain
context (empty) Heimeshoff explains where to concentrate DDD effort via core-domain identification.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) d1c08be1-c3b0-486b-80c6-7238a7556f15
create The pillars of Domain Driven DesignaboutValue Object
context (empty) Exercise refactors primitives into value types as the low-hanging fruit of DDD.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) e870e700-bd72-4f1f-94cd-23f966838928
create The pillars of Domain Driven DesignaboutAnti-Corruption Layer
context (empty) Introduced as a remedy when warehouse/shopping-cart teams are upstream/downstream.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 412ff074-79c0-4af8-89b6-682f888fc1a0
create The pillars of Domain Driven DesignaboutHexagonal Architecture
context (empty) Third step: protect domain code from corruption via ports-and-adapters.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) c1788fd2-7758-44ff-91c8-1bec25aca2ae
create The pillars of Domain Driven DesignaboutWeasel Words
context (empty) Entire section on prefixes/suffixes that drain domain meaning.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) bb60efe6-643a-4a31-8815-d4d285259568
create The pillars of Domain Driven DesignaboutCynefin Framework
context (empty) Used to decide how strongly to apply DDD per bounded context.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 4612bfc9-a5f1-4412-ac56-c23757f8bbe2
create The pillars of Domain Driven DesignaboutConway's Law
context (empty) Cited when explaining team alignment with bounded contexts.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 97af1782-f2e0-4641-9b10-37c21478bb8f
create The pillars of Domain Driven DesignaboutEventStorming
context (empty) Presented as Heimeshoff's favorite collaborative modeling method.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create The pillars of Domain Driven DesignaboutDDD Whirlpool
context (empty) Described as Eric Evans' iterative scenario/prototype modeling cycle.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 50fc3676-7723-4a85-95b1-e00b0a3633df
create The pillars of Domain Driven DesignaboutFive Whys
context (empty) Heuristic used during modeling to reach the real reasons.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 6f4c953b-3e32-4593-904d-b621f89920f2
create The pillars of Domain Driven DesignaboutCQRS
context (empty) EventStorming stickies map directly to commands/events in a CQRS/event-sourced system.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 8918002a-9def-4449-a187-e3052bf175b5
create The pillars of Domain Driven DesignaboutEvent Sourcing
context (empty) Shown as how wall-modeling translates directly into source code.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create The pillars of Domain Driven DesignaboutDrive
context (empty) Daniel Pink's autonomy/mastery/purpose framework used to explain DDD's developer benefits.
relation (empty) about
source_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
target_node_id (empty) 19ae8b01-d24d-4ae1-9091-48c7ab91f1d1
create Alberto BrandoliniauthoredEventStorming
context (empty) Invented the EventStorming workshop technique.
relation (empty) authored
source_node_id (empty) bdbfabf7-feeb-4cfe-a40d-191dca70e0ec
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
update Alberto BrandoliniauthoredIntroducing EventStorming
context Author of the book. LeanPub book on EventStorming.
create Eric EvansauthoredDomain-Driven Design: Tackling Complexity in the Heart of Software
context (empty) Wrote the foundational DDD book.
relation (empty) authored
source_node_id (empty) 7361f3c1-0565-4aed-9cb6-a152905b7615
target_node_id (empty) 48659931-177d-43aa-a529-8bde7532565a
create Eric EvansauthoredDDD Whirlpool
context (empty) Coined the whirlpool iterative modeling process.
relation (empty) authored
source_node_id (empty) 7361f3c1-0565-4aed-9cb6-a152905b7615
target_node_id (empty) 50fc3676-7723-4a85-95b1-e00b0a3633df
create Domain-Driven Design: Tackling Complexity in the Heart of SoftwareaboutDomain-Driven Design
context (empty) Foundational text of the methodology.
relation (empty) about
source_node_id (empty) 48659931-177d-43aa-a529-8bde7532565a
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Domain-Driven Design: Patterns, Principles and PracticesaboutDomain-Driven Design
context (empty) Practical overview of DDD strategy, modeling, and implementation.
relation (empty) about
source_node_id (empty) 63f39969-d51a-4d40-9c51-cc85575ad2ef
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Implementing Domain-Driven DesignaboutDomain-Driven Design
context (empty) Vaughn Vernon's practical DDD guide.
relation (empty) about
source_node_id (empty) 916d3eaa-b068-442e-8a6d-34daa49142cc
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Introducing EventStormingaboutEventStorming
context (empty) Book on the EventStorming workshop method.
relation (empty) about
source_node_id (empty) 3eba1d1d-8917-4a38-91c1-77dad0f41209
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Marco HeimeshoffrecommendsDomain-Driven Design: Tackling Complexity in the Heart of Software
context (empty) Recommends starting at chapter 7 or 8; re-read every few years.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 48659931-177d-43aa-a529-8bde7532565a
create Marco HeimeshoffrecommendsDomain-Driven Design: Patterns, Principles and Practices
context (empty) Top recommendation for newcomers; written the way he would have written a book.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 63f39969-d51a-4d40-9c51-cc85575ad2ef
create Marco HeimeshoffrecommendsImplementing Domain-Driven Design
context (empty) Recommended for Java developers.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 916d3eaa-b068-442e-8a6d-34daa49142cc
create Marco HeimeshoffrecommendsIntroducing EventStorming
context (empty) Recommends buying/limping through it despite being only 80% done.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 3eba1d1d-8917-4a38-91c1-77dad0f41209
create Marco HeimeshoffrecommendsDrive
context (empty) Uses Pink's autonomy/mastery/purpose model in the talk.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 19ae8b01-d24d-4ae1-9091-48c7ab91f1d1
create Marco HeimeshoffrecommendsEventStorming
context (empty) Describes it as his favorite modeling method.
relation (empty) recommends
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Marco Heimeshoffrelated_toAlberto Brandolini
context (empty) Credits Brandolini for EventStorming and for the seated-meeting critique.
relation (empty) related_to
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) bdbfabf7-feeb-4cfe-a40d-191dca70e0ec
create Marco Heimeshoffrelated_toMatthias Verraes
context (empty) Credits Verraes for the 'one dimension higher' modeling heuristic.
relation (empty) related_to
source_node_id (empty) 983f122a-93f7-4090-8620-e279d9104c2c
target_node_id (empty) 0b7a2c6c-ff2c-42f4-8dc2-bb37db51c405
create Eliminate Primitives With Value Typesfrom_talkThe pillars of Domain Driven Design
context (empty) Explicit recommendation delivered in the talk's refactoring exercise.
relation (empty) from_talk
source_node_id (empty) a046e0e9-f3a2-4ff7-b6a4-a7a1fac9fd12
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Eliminate Primitives With Value TypesaboutValue Object
context (empty) Directly about value objects.
relation (empty) about
source_node_id (empty) a046e0e9-f3a2-4ff7-b6a4-a7a1fac9fd12
target_node_id (empty) e870e700-bd72-4f1f-94cd-23f966838928
create One Ubiquitous Language Per Bounded Contextfrom_talkThe pillars of Domain Driven Design
context (empty) Heimeshoff calls this the only new idea in Evans' DDD book.
relation (empty) from_talk
source_node_id (empty) c077c56c-fb4d-4058-81df-092f7571fa8b
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create One Ubiquitous Language Per Bounded ContextaboutUbiquitous Language
context (empty) Insight concerns ubiquitous language.
relation (empty) about
source_node_id (empty) c077c56c-fb4d-4058-81df-092f7571fa8b
target_node_id (empty) 143ce1ce-e02c-4efb-abeb-ad39d8cdc0d6
create One Ubiquitous Language Per Bounded ContextaboutBounded Context
context (empty) Insight concerns bounded contexts.
relation (empty) about
source_node_id (empty) c077c56c-fb4d-4058-81df-092f7571fa8b
target_node_id (empty) bb2674d4-360e-4ac8-84a1-85be3230a187
create Write Domain Code Free of Frameworksfrom_talkThe pillars of Domain Driven Design
context (empty) Third of Heimeshoff's three DDD steps.
relation (empty) from_talk
source_node_id (empty) 5ebe00d9-fbaa-485e-90e3-e56892054132
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Write Domain Code Free of FrameworksaboutHexagonal Architecture
context (empty) Implemented via ports-and-adapters.
relation (empty) about
source_node_id (empty) 5ebe00d9-fbaa-485e-90e3-e56892054132
target_node_id (empty) c1788fd2-7758-44ff-91c8-1bec25aca2ae
create Three Steps of DDDfrom_talkThe pillars of Domain Driven Design
context (empty) Core framing of the talk: extract, express semantically, protect.
relation (empty) from_talk
source_node_id (empty) d95c8f7f-1a09-4ee9-80d7-5d68d4c55f3b
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Three Steps of DDDaboutDomain-Driven Design
context (empty) Summarizes DDD practice.
relation (empty) about
source_node_id (empty) d95c8f7f-1a09-4ee9-80d7-5d68d4c55f3b
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Bounded Contexts Are Not Microservicesfrom_talkThe pillars of Domain Driven Design
context (empty) Explicit warning against confusing the two.
relation (empty) from_talk
source_node_id (empty) 46901ae1-dc08-4aa3-b67c-c1fae0db5a03
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Bounded Contexts Are Not MicroservicesaboutBounded Context
context (empty) Concerns bounded contexts.
relation (empty) about
source_node_id (empty) 46901ae1-dc08-4aa3-b67c-c1fae0db5a03
target_node_id (empty) bb2674d4-360e-4ac8-84a1-85be3230a187
create Risks of DDD: Hierarchy, Perfectionism, Constraintsfrom_talkThe pillars of Domain Driven Design
context (empty) Risks section near the end of the talk.
relation (empty) from_talk
source_node_id (empty) bfa2b57a-0b28-4a6a-a15e-340c20088c1d
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Risks of DDD: Hierarchy, Perfectionism, ConstraintsaboutDomain-Driven Design
context (empty) Describes risks of adopting DDD.
relation (empty) about
source_node_id (empty) bfa2b57a-0b28-4a6a-a15e-340c20088c1d
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Standard Meetings Kill Collaborationfrom_talkThe pillars of Domain Driven Design
context (empty) Heimeshoff contrasts seated meetings with standing EventStorming.
relation (empty) from_talk
source_node_id (empty) 2d93aef1-ace3-43a5-a01d-65d19e58ea5e
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Standard Meetings Kill CollaborationaboutEventStorming
context (empty) Presents EventStorming as the antidote.
relation (empty) about
source_node_id (empty) 2d93aef1-ace3-43a5-a01d-65d19e58ea5e
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Does DDD require object-oriented programming?asked_atThe pillars of Domain Driven Design
context (empty) First Q&A question after the talk.
relation (empty) asked_at
source_node_id (empty) f9e7fdc1-f7d8-4804-b2bc-983de6dc5585
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Does DDD require object-oriented programming?aboutDomain-Driven Design
context (empty) Question probes DDD's relationship to OOP.
relation (empty) about
source_node_id (empty) f9e7fdc1-f7d8-4804-b2bc-983de6dc5585
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Does DDD apply to startups?asked_atThe pillars of Domain Driven Design
context (empty) Q&A question on startup applicability.
relation (empty) asked_at
source_node_id (empty) 3754bc2d-50d1-43c4-ac4c-c2ef9414215b
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create Does DDD apply to startups?aboutDDD Whirlpool
context (empty) Answer invokes Evans' whirlpool for startup prototyping.
relation (empty) about
source_node_id (empty) 3754bc2d-50d1-43c4-ac4c-c2ef9414215b
target_node_id (empty) 50fc3676-7723-4a85-95b1-e00b0a3633df
create How to apply DDD when the client refuses to learn ubiquitous language?aboutUbiquitous Language
context (empty) Question is about getting clients to use a ubiquitous language.
relation (empty) about
source_node_id (empty) 076a5538-157d-4e19-8735-ef1a678d8ba0
target_node_id (empty) 143ce1ce-e02c-4efb-abeb-ad39d8cdc0d6
create How to do DDD remotely?asked_atThe pillars of Domain Driven Design
context (empty) Final Q&A question on remote modeling.
relation (empty) asked_at
source_node_id (empty) 085bbbf6-c5c0-4000-92b4-a8d829f38871
target_node_id (empty) a24880d7-ef1f-484e-aeeb-a190bdcf1230
create How to do DDD remotely?aboutRealtimeBoard
context (empty) Cited as one of the remote-modeling tools in the answer.
relation (empty) about
source_node_id (empty) 085bbbf6-c5c0-4000-92b4-a8d829f38871
target_node_id (empty) 7f1b2c99-31ff-4bbd-ae18-b1b682f173ce
create How to do DDD remotely?aboutSync Space VR
context (empty) Cited as a VR remote-modeling option in the answer.
relation (empty) about
source_node_id (empty) 085bbbf6-c5c0-4000-92b4-a8d829f38871
target_node_id (empty) accb3e46-9d12-4599-a8d9-507fbb52f57a
create How to do DDD remotely?aboutEventStorming
context (empty) Question specifically about remote EventStorming.
relation (empty) about
source_node_id (empty) 085bbbf6-c5c0-4000-92b4-a8d829f38871
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1

Read set

65 nodes

question Can parts of Eventide, Rails Event Store and Trailblazer be combined in one project? search_nodes talk Building uls for microservices search_nodes talk Event Sourcing and Actor model in Ruby search_nodes tool dry-validation search_nodes event EmberConf search_nodes takeaway Sign serverlessforruby.org petition search_nodes talk Typical DDDomains In Rails Apps search_nodes takeaway Prefer conventions over custom code search_nodes talk Adventures in durable execution search_nodes concept CSS-in-JS search_nodes concept Convention over Configuration search_nodes concept Developer vs Programmer search_nodes takeaway Break Code Into Small Units Orchestrated By A Process Engine search_nodes takeaway AI Will Not Replace Developer-Client Empathy search_nodes person Marco Heimeshoff search_nodes tool Faker search_nodes person Adam Okoń search_nodes tool Babel search_nodes concept Process Manager search_nodes question How to persist commands in an event-sourced system? search_nodes talk The pillars of Domain Driven Design search_nodes+get_node_edges talk Might & Magic of Domain-Driven Design search_nodes concept Domain-Driven Design search_nodes concept CQRS search_nodes talk How wroclove.rb impacts developers and companies search_nodes resource Domain-Driven Rails search_nodes resource Object-Oriented Software Construction search_nodes concept EventStorming search_nodes concept Event Sourcing search_nodes takeaway Bounded Contexts Are Natural Microservice Seams search_nodes talk Events events events search_nodes tool BME280 search_nodes tool RealtimeBoard search_nodes talk Ruby on a $4 Computer search_nodes project mruby-esp32 search_nodes resource Rocket Real-Time Benchmark search_nodes tool GraphQL search_nodes talk Building LLM powered applications in Ruby search_nodes tool ESP32 search_nodes tool mruby search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2025 search_nodes talk Business logic in Ruby search_nodes talk Data Management With Ruby search_nodes takeaway Courage to Try New Patterns search_nodes concept Event Store search_nodes talk The good, the bad and the remote — collaborative domain modeling with EventStorming search_nodes takeaway Event Sourcing Mind Shift Trade-off search_nodes talk Dealing With A Project's Complexity In A Changing Environment search_nodes takeaway Eventual Consistency Trade-off search_nodes concept Breadth-First Search for Code Removal search_nodes takeaway Silver Bullet Anti-Pattern search_nodes talk Forms Are Dead: Building Agentic Workflows in Ruby search_nodes talk Towards the post framework future search_nodes concept Bounded Context search_nodes person Alberto Brandolini search_nodes talk Event Sourcing Anti Patterns and Failures search_nodes concept Snapshotting search_nodes project Eventide search_nodes takeaway Use CQRS And Event Sourcing Independently search_nodes

2 edges