Cut & Shave - resources & links

Presentation "Cut & Shave" about Domain Modelling (and language / philosophy) on Berlin 2019,October 18
Slides on

In mister Occam's barbershop we'll have Domain Modelling in our chair to have a fresh cut and shave. We'll cut, redefine, rename and rearrange concepts like bounded contexts, ubiquitous language, context maps, aggregates and their roots, entities, value objects and event sourcing. Our modeling tools have grown, but might need some maintenance service... Language is the vehicle of modeling, it is the tool by which we understand the world. Our words are the building blocks of our models. If our language is imprecise, inconsistent or contradictory, so our models will be imprecise, inconsistent or contradictory. Although some practicioners of Domain Driven Design proudly call themselves “domain linguists”, not all DDD-jargon is very well defined. Some concepts come from different paradigms or contain logical errors. Too broad or too narrow definitions introduce unnecessary accidental complexity. This presentation aims to show some mistakes and do proposals to improve the situation. The proof of the pudding is to show how models can be made more useful by that. On our road we'll be helped by some modelers from the past, like Aristotle, Hume, Kant, Wittgenstein or Ryle. And we'll see how a 14th century razor blade can still be sharp.

Creative developer Herman Peeren likes creativity and exploring new ideas. Modelling is a way to better understand the world around us. Computer Science is Philosophy. Languages carry our thoughts, and that holds for both natural languages and computer language.


Sapir-Whorf hypothesis
language can have (some) effect on thought
Keith Chen's saving behaviour research; see TED-talk 2012

criticism: John McWorter, “The Language Hoax” (2014/2016)

Steven Pinker
TED-talk (2005)

categorising entities
A great resource on philosophy is Stanford Encyclopedia of Philosophy (SEP)
About Aristotle's categories in SEP:

time as a separate entity
Some of the articles from the SEP:

Immanuel Kant Song:

about the limits of language
Tractatus logico-philosophicus, 1918
Early Wittgenstein (Tractatus): the picture theory of language

Gilbert Ryle
The Concept of Mind, 1949 (one of the best books I've ever read!)
against Carthesian dualism (body and mind as two separate entities)
You can find the entire work as a free pdf on internet.

Razor: not more entities than necessary


documentation of the model
(in non-technical language, to be shared bertween customer / people working in the domain and software developers)

Book "Living Documentation" by Cyrille Martraire, 2019
Presentations (2016):

Make your tests tell the story of your domain - Mads Opheim & Anne Landro
Was a presentation on KanDDDinsky 2019
See for their presentation on 2019 Booster conf.

Alvaro Videla: Programming Languages are not Languages (blogpost Sept. 2018)

Christopher Alexander: A city is not a Tree (essay, 1965)
Do not simply divide your domain into mutually exclusive parts (tree-structures)

Gödel's Incompleteness Theorems

How to survive the Dutch weather (many different words for rain in Dutch)