Collaborative Data Modeling: Discovering Domain Types Through Linguistic Cues
DDD Europe - Hands-on Lab
- Speakers
Marco Schneider and Martin Günther


- Description
(This is a hands-on lab with limited capacity)
How do you actually arrive at a "good" domain model? One that aligns closely with the conceptual contours? DDD's tactical patterns describe the destination—entities, value objects, aggregates—but not the journey. Especially not when that journey includes domain experts who cannot read code.
Here's a secret: domain experts already encode type structure in their language. When they say "a violation can be illegal parking or speeding," they're describing a sum type. When they say "an address consists of street and city," that's a product type. You just need to listen—and capture it.
In this hands-on lab, you'll learn Collaborative Data Modeling: a sticky-note technique that makes algebraic data types accessible to everyone. Through collaborative exercises, you'll practice hearing linguistic cues and translating them into visual models. Once the types are on the wall, the structure of your functions follows — case distinctions emerge from data, not guesswork.
Think of it as Event Storming's complement: where Event Storming focuses on what happens, Collaborative Data Modeling focuses on what kinds of things exist. Together, they give you a complete picture.
What you'll take home:
- A repeatable technique for collaborative domain modeling sessions
- The skill to hear type structure in domain language
- Understanding of how "program structure follows from data structure"
- Confidence to facilitate your first Collaborative Data Modeling session on Monday
Prerequisites
No laptop required. Basic familiarity with DDD concepts (Ubiquitous Language, Conceptual Contours) is helpful but not mandatory. We will introduce the key ideas. Come ready to collaborate and discuss with fellow participants.
About Marco Schneider
Marco is a software architect at Active Group GmbH in Tübingen (Germany). Active Group builds software exclusively using functional programming. Other than functional programming, he is interested in the nuances of programming languages and how the tools they provide shape the design of our programs.
About Martin Günther
Martin has been consulting and supporting companies in the implementation of their software projects as a software architect and agile coach for many years. He always has the big picture in mind, looking for the boundaries that naturally divide the domain into conceptual units in order to build robust and efficient systems from these parts. Additionally, his profound experience in facilitating workshops helps him to accompany groups in their process of gaining insights and decision-making and to enable all team members to interact in an appreciative and effective manner.