Henning Schwentner

Information & Communications Technology

Programming Software Architecture Domain Driven Design microservices Agile Methodologies Collaborative Modeling

Hamburg, Germany

Henning Schwentner

Coder, Coach, Consultant at WPS – Workplace Solutions

Henning loves programming in high quality. He lives this passion as coder, coach, and consultant at WPS – Workplace Solutions in Hamburg, Germany. There he helps teams to structure their monoliths or to build new systems from the beginning with a sustainable architecture. Microservices or self-contained systems are often the result. Henning is author of “Domain Storytelling – A Collaborative Modeling Method” and the www.LeasingNinja.io as well as translator of “Domain-Driven Design kompakt”.

Henning Schwentner

Coder, Coach, Consultant bei der WPS – Workplace Solutions

Henning liebt Programmieren in hoher Qualität. Diese Leidenschaft lebt er als Coder, Coach und Consultant bei der WPS – Workplace Solutions aus. Dort hilft er Teams dabei, Ihre gewachsenen Monolithen zu strukturieren oder neue Systeme von Anfang an mit einer tragfähigen Architektur zu errichten. Häufig kommen dann Microservices oder Self-Contained Systems heraus. Henning ist Autor von »Domain Storytelling – A Collaborative Modelling Method« und dem www.LeasingNinja.io sowie Übersetzer von »Domain-Driven Design kompakt«.

Current sessions

Modern Software Architecture with the Architecture Hamburger EN DE

How to structure your program right? This has been a central question since the beginning of software development. Layers are a start, but not enough. Hexagonal, Onion, and Clean Architecture have joined the club together with DDD's Tactical Design and Pattern Languages. Great system design is not achieved with one of these alone. Putting all the ingredients together we can build the Architecture Hamburger – the combination that makes high quality software possible.


Moderne Software-Architektur mit dem Architektur-Hamburger EN DE

Wie strukturiert man ein Programm richtig? Dies ist seit Beginn der Software-Entwicklung eine zentrale Frage. Schichten sind ein Anfang, aber nicht genug. Modernere Stile sind Hexagonal, Onion und Clean Architecture. Auch Tactical Design und Pattern Languages helfen. Großartiges Systemdesign wird nicht nur mit einer dieser Zutaten erreicht. Nur wenn wir alle zusammenfügen, können wir den Architektur-Hamburger bauen – die Kombination, die qualitativ hochwertige Software möglich macht.


Domain Storytelling—Understanding Your Users by Drawing Pictures EN DE

Misunderstandings between developers and the business are a plague. Bad communication makes projects fail. This talk presents a remedy. The session's highlight will be a practical demonstration with the auditorium as an interview partner.

Domain Storytelling is a technique to transform domain knowledge into effective business software. It brings together domain experts and development teams to: (a) understand the domain of a software system, (b) find microservices boundaries, and (c) talk about requirements.

We let domain experts tell us stories about their tasks. While listening, we record the stories using an easy-to-understand pictographic language.

The domain experts can see immediately whether we understand their story correctly. After very few stories, we are able to talk about the people, processes, and events in that domain.

The talk is aimed at everyone involved or interested in software development, including non-technical people.

My book on the topic has just been published in Vaughn Vernon's Addison-Wesley Signature Series. See https://domain-storytelling.org/book


Anwender verstehen mit Domain Storytelling EN DE

Missverständnisse zwischen Entwicklern und dem Fachbereich sind eine Plage. Schlechte Kommunikation lässt Projekte scheitern. Dieser Vortrag stellt eine Abhilfe vor (einschließlich einer praktischen Demonstration mit Beteiligung des Auditoriums).

Domain Storytelling ist eine Technik, um Domänenwissen in effektive Business-Software zu verwandeln. Sie bringt Domänenexperten und Entwicklungsteams zusammen, um: (a) die Domäne eines Softwaresystems zu verstehen, (b) die Grenzen von Microservices zu finden und (c) über Anforderungen zu sprechen.

Wir lassen uns von Domänenexperten Geschichten über ihre Aufgaben erzählen. Während wir zuhören, zeichnen wir die Geschichten in einer leicht verständlichen, piktografischen Sprache auf.

Die Domänenexperten können sofort sehen, ob wir ihre Geschichte richtig verstehen. Nach wenigen Geschichten sind wir in der Lage, über die Menschen, Prozesse und Ereignisse in dieser Domäne zu sprechen.

Der Vortrag richtet sich an alle, die mit Softwareentwicklung zu tun haben oder sich dafür interessieren, auch an Nicht-Techniker.

My book on the topic has just been published in Vaughn Vernon's Addison-Wesley Signature Series. See https://domain-storytelling.org/book


The Joy of Multiple Models – Structuring Monoliths and Microservices with Domain-Driven Design EN DE

Software development is model building. We rebuild a part of the world as a program in Java and improve it by doing so. A traditional approach is to reproduce the domain as accurate in every detail as possible. But is this the actual goal of models? If we look close enough, we will see that a model is the exact oposite—a model is actually an abstraction of the reality in which only the essential is transferred. The inessential is left out of the model. What parts of the reality are essential or inessential is defined by the domain.

A simple model is easier to understand than a complicated one. Therefore, it is a good idea to break a complex reality into multiple simple models. Exactly this effect is what microservices and DDD with its strategic design take advantage of. Here instead of one complex company-wide model we build several small models that are easy to understand.

In this talk we look into the tools that are available to build good models and to divide the domain in a way that we can work with several teams independently from each other.


Convincing colleagues and bosses of good ideas and new technologies EN DE

At a conference like the XXX you learn great new things. In every session you think, “I can't wait to try these new language features.” Or, “This new framework is just the thing for our problem.” Or, “With those agile techniques, we need fewer meetings and I finally have more time for programming.”

Then when you get back from the conference and come into the office on Monday, you tell all your colleagues about it full of euphoria. And unfortunately they don't like it at all. Tey say, “Nobody needs this newfangled stuff.” Or, “This is nothing new. We've always done it like that.” And half a year later you look back and think: “We haven't implemented any of my nice ideas”.

It doesn't have to be like that! In this talk I will look at what we techies can learn from psychologists, sociologists & co. With the right (soft) tools we can convince bosses and colleagues of good ideas for the benefit of all of us.

We look into the toolbox that Fearless Change, Communication Patterns, Reframing, Secrets of Consulting, Nonviolent Communication and even the interrogation techniques of the secret services offer us.


Carving Microservices out of the Monolith with Domain Storytelling EN DE

For a microservices architecture to be succesful it is crucial to have the right boundaries between the microservices. But where are the right boundaries? I would like to present a tool that helps us answer this question.

Domain Storytelling (www.domainstorytelling.org) means that we let our users tell us stories about their work. While listening, we record the stories using a pictographic language. The experts can immediately see if we understand their story. After very few stories, we understand the language of our users and find different areas of the domain. Each of these areas (called a subdomain) is a good candicate to become a microservice in our architecture.

In this talk I show how to find subdomains and which heuristics can help us.


The joy of multiple models – Wie man mit Domain-Driven Design einen Monolithen zerschneidet EN DE

Softwareentwicklung ist Modell-Bildung. Wir bauen einen Teil der Wirklichkeit als Programm nach und verbessern sie so. Ein traditioneller Ansatz ist, die Domäne als Ganzes möglichst detailgenau nachzubilden. Aber ist das eigentlich der Zweck von Modellen? Wenn wir genau hinschauen, bemerken wir, dass ein Modell eigentlich genau das Gegenteil ist – Ein Modell ist nämlich eine Abstraktion der Wirklichkeit, in die nur das Wesentliche übertragen und das Unwesentliche weggelassen wird. Was wesentlich und was unwesentlich ist, ergibt sich aus dem Kontext.

Ein einfaches Modell ist leichter zu verstehen als ein kompliziertes. Deshalb ist es eine gute Idee, von einer komplizierten Wirklichkeit mehrere einfache (und einfach verständliche) Modelle zu bilden. Genau diesen Effekt machen sich Microservices und DDD mit seinem Strategischen Design zu nutze. Hier werden statt dem einen großen unternehmensweiten Modell mehrere kleine gut verständliche Modelle gebildet.

In diesem Talk betrachten wir, welche Mittel uns zur Verfügung stehen, um gute Modelle zu bauen und die Domäne so aufzuteilen, dass wir auch mit mehreren sinnvoll und unabhängig arbeiten können.


Kollegen und Chefs von guten Ideen und neuen Technologien überzeugen EN DE

Auf einer Konferenz wie der XXX lernt man tolle neue Sachen kennen. In jeder Session denkt man: »Diese Sprach-Features muss ich unbedingt mal ausprobieren.« Oder: »Das neue Framework ist genau das richtige für unser Problem.« Oder: »Mit jenen agilen Techniken brauchen wir weniger Meetings und ich hab endlich mehr Zeit fürs Programmieren.«

Wenn man dann von der Konferenz zurück ist und am Montag ins Büro kommt, erzählt man allen Kollegen voller Euphorie davon. Und die finden das leider gar nicht toll. Sagen: »Diesen neumodischen Kram braucht kein Mensch«. Oder: »Das ist doch nix neues. das haben wir schon immer so gemacht.« Und ein halbes Jahr später schaut man zurück und denkt: »Wir haben keine meiner schönen Ideen umgesetzt«.

Das muss nicht sein! In diesem Vortrag betrachte ich, was wir Techies von Psychologen, Soziologen & co lernen können. Mit den richtigen (soften) Tools können wir zum Wohle aller Chefs und Kollegen von guten Ideen überzeugen.

Wir schauen in den Werkzeugkasten den uns Fearless Change, Communication Patterns, Reframing, Secrets of Consulting, Gewaltfreie Kommunikation und sogar die Verhörtechniken der Geheimdienste bieten.


It's all about the domain, honey – DDD as basis for great architecture EN DE

To build software, we use great technologies, programming languages, and tools. And we have a lot of fun programming in this technical environment. But we must not forget that the most important point for a successful project is not the technology but the *domain*! To understand the domain we need a common language with the domain experts. Also, if we don't reflect the domain model in the software and its architecture, it will not help our users doing their work.

It is easy for developers to fall into the trap of focussing on technology instead of the domain. To prevent you from this, I will show in this talk how Domain-Driven Design (DDD) can help you to gather the domain knowledge and transform it into a Ubiquitous Language. To do this we use techniques like Interviews, Domain Storytelling, and Event Storming.

In practice it is not easy to decide how to divide up the domain and develop microservices for it. Here the DDD pattern Bounded Context can help us. It shows us where vertical cuts can be made.

Using these tools together with the Building Blocks of DDD enables us to build an architecture that represents the domain and makes our users happy.


It's all about the domain, honey – Fachliche Architektur mit DDD EN DE

Beim Bauen von Software werden tolle Technologien, Programmiersprachen und Tools eingesetzt. Das ist gut und richtig. Aber leider wird dabei oft aus den Augen verloren, dass das Entscheidende für den Projekterfolg nicht die Technik, sondern die *Fachlichkeit* ist. Um die Fachlichkeit (=Domäne) verstehen zu können, brauchen wir eine gemeinsame Sprache mit den Fachexperten. Außerdem: wenn wir in der Software und ihrer Architektur nicht das fachliche Modell abbilden, dann wird sie unseren Anwendern nicht bei Ihrer Arbeit helfen. Davor schützt uns keine Technologie der Welt.

Als Informatiker kann man leicht in die Falle tappen, sich auf Technologie statt auf Fachlichkeit zu fokussieren. Um das zu verhindern, zeige ich in diesem Vortrag, wie man mit Domain-Driven Design (DDD) das Wissen um die Fachlichkeit lernen und in eine Ubiquitous Language übertragen kann. Dazu werden Techniken wie Interviews, Domain Storytelling und Event Storming eingesetzt.

In der Praxis ist es schwierig zu erkennen, wie wir unsere Domäne schneiden und daraus Microservices entwickeln können. Hierbei kann uns das Prinzip der Bounded Contexts aus DDD helfen. Es gibt uns Hilfestellung wo vertikale Schnitte sinnvoll sind.

Setzt man diese Techniken gemeinsam ein, dann kann man die Architektur von Software-Systemen so bauen, dass sie die Fachlichkeit darstellt und unsere Anwender glücklich macht.


Using Record Types to Build Better Domain Models in Java EN DE

Starting with Java 14 Oracle has provides us with Record Types. They are a step towards true value types. We look at the current status and what's in the box for the future.

In this talk we will look at:

* what's behind the motto "Codes like a class - works like an int"
* why immutabilty leads to less failures
* why value types make your code at the same time better readable and more efficient
* the difference between refence and value types
* the new syntax to support value types in Java
* how value types are implemented in other languages
* what inheritance means for value types
* the advantages of storing data on the stack versus storing data on the heap
* and most important: how value types can help us to provide a better domain model


Mit Record Types zu besseren Domänenmodellen in Java EN DE

Mit Java 14 hat Oracle uns mit Record Types versorgt. Sie sind ein Schritt hin zu echten Werttypen (value types). Wir schauen uns den aktuellen Status von »Project Valhalla« an und was in Zukunft noch kommen wird:

* was hinter dem Schlachtruf »Codes like a class, works like an int« steckt.
* warum Immutability geringere Fehleranfälligkeit bringt
* warum value types gleichzeitig effizienteren wie auch besser lesbaren Code ermöglichen
* den Unterschied zwischen Reference Types und Value Types
* was die Vorteile von Speicherung auf dem Stack versus Speicherung auf dem Heap sind
* und besonders wichtig: wie Value Types uns helfen, ein besser verständliches Domänenmodell zu bauen. Also z.B. die Value Objects aus Domain-Driven Design mit Value Types implementieren kann.


From Domain to Code with Domain Storytelling EN DE

We all love programming. But programming is not an end in itself. And how do we actually know, what we should program? For that we need a tool to learn about the domain.

Domain Storytelling is a collaborative modeling method. It brings together domain experts and development teams. It means that we let our users tell us stories about their work. While listening, we record the stories using a pictographic language.

The experts can see immediately if we understand their story. After very few stories, we understand the language of our users and can build a domain model from it and implement this in the programming language of our choice.


Von der Domäne zum Code mit Domain Storytelling EN DE

Wir alle lieben Programmieren. Nur ist Programmieren ist ja kein Selbstzweck. Und woher wissen wir eigentlich, was wir programmieren sollen? Dazu brauchen wir ein Werkzeug mit dem wir die Domäne und Ihre Sprache kennenlernen können.

Domain Storytelling (www.domainstorytelling.org) heißt, dass wir unsere Anwender Geschichten von ihren Aufgaben erzählen lassen. Beim Zuhören zeichnen wir die Geschichten mit einer grafischen Sprache auf. Unsere Fachexperten können direkt verstehen, ob wir sie richtig verstehen und was wir noch falsch verstehen. Nach nur wenigen Stories verstehen wir die Sprache unserer Anwender und können ein Domänenmodell daraus bauen und implementieren.


Workshop: Domain-Driven Design hands-on EN DE

In the times of microservices, it becomes clear how important Domain-Driven Design (DDD) still is. Only with strategic design (i.e. DDD on a large scale) and the division of the domain into bounded contexts can a sensible cut be found for the microservices.

But also Tactical Design (i.e. DDD on a small scale) with the Ubiquitous Language and the "Building Blocks" Entities, Value Objects, Aggregates, Services and co. have lost nothing of their relevance.

In this workshop we will take a day to take a closer look at DDD. The workshop consists of alternating lecture, discussion and exercises.

***

The structure will be such that we first give an overview of DDD and then look at the individual topics in detail. In doing so, we will approach DDD from the outside in. Content structure:
1. introduction and overview
2. getting to know the domain
3. splitting up the domain
4. learning the domain language
5. model the domain
6. implement the domain model


Workshop: Domain-Driven Design hands-on EN DE

In den Zeiten von Microservices wird klar, wie wichtig Domain-Driven Design (DDD) nach wie vor ist. Denn nur mit Strategischem Design (also DDD im Großen) und dem Aufteilen der Domäne in Bounded Contexts kann ein sinnvoller (nämlich fachlicher) Schnitt für die Microservices gefunden werden.

Aber auch Taktisches Design (also DDD im Kleinen) mit der Ubiquitous Language und den "Building Blocks" Entities, Value Objects, Aggregates, Services und co. haben nichts an Aktualität verloren.

In diesem Workshop nehmen wir uns einen Tag Zeit um DDD näher anzuschauen. Der Workshop besteht aus abwechselnd Vortrag, Diskussion und Übungen.

***

Der Aufbau wird so sein, dass wir zunächst einen Überblick über DDD geben und uns dann die einzelnen Themen detailiert betrachten. Dabei nähern wir uns DDD gewissermaßen von außen nach innen. Inhaltlicher Aufbau:
1. Einführung und Überblick
2. Domäne kennenlernen
3. Domäne aufteilen
4. Sprache lernen und bauen
5. Domäne modellieren
6. Modell implementieren


Using Record Types to Build Better Domain Models in C# EN

Not everything in the world is an object. That's why DDD defines different design patterns, like Entity, Value Object, Repository, etc. With C# 9 Microsoft has provides us with Record Types. They help in many cases to implement DDD's Value Objects. That way we can express our domain in a natural way and reduce boilerplate code.

In this talk we will look at:

* what's behind the motto "Codes like a class - works like an int"
* why immutabilty leads to less failures
* the new syntax to support record types
* how value types are implemented in other languages
* and most important: how value types can help us to provide a better domain model


Microservices aus dem Monolithen schneiden mit Domain Storytelling EN DE

Damit eine Microservices-Architektur erfolgreich sein kann, ist es elementar wichtig, die richtigen Grenzen zwischen den Microservices zu ziehen. Aber wo sind die richtigen Grenzen? Ich möchte ein Werkzeug präsentieren, das uns hilft, diese Frage zu beantworten.

Domain Storytelling heißt, dass wir unsere Anwender uns Geschichten über ihre Domäne erzählen lssen. Während wir zuhören, zeichnen wir die Domain Stories vor den Augen der Fachexperten mit einer Bildsprache auf. Dadurch können alle Beteiligten unmittelbar sehen, ob sie richtig verstanden wurde. Schon nach wenigen Domain Stories verstehen wir die Sprache unser Anwender und finden unterschiedliche Bereiche in unser Fachlichkeit. Jeder dieser Bereiche (eine sog. Subdomain) ist ein guter Kandidat​ dafür, ein Microservice in unser Architektur zu werden.

In diesem Vortrag zeige ich, wie man Subdomänen findet und welche Heuristiken uns dabei helfen.


Past and future events

NDC Oslo 2021

29 Nov 2021 - 3 Dec 2021
Oslo, Norway

Build Stuff 2021 Lithuania

17 Nov 2021 - 21 Nov 2021
Vilnius, Lithuania

Update Conference Prague 2021

18 Nov 2021 - 19 Nov 2021
Prague, Hlavní město Praha, Czechia

Tech Con '21

20 Oct 2021 - 21 Oct 2021

Virtual NetCoreConf 2021 - 2

8 Oct 2021 - 10 Oct 2021

JCON 2021

5 Oct 2021 - 8 Oct 2021

Java Forum Nord 2021

16 Sep 2021
Hannover, Lower Saxony, Germany

Code PaLOUsa 2021

18 Aug 2021 - 20 Aug 2021

Developer Week '21

28 Jun 2021 - 2 Jul 2021
Nürnberg, Bavaria, Germany

DeveloperWeek Europe 2021

27 Apr 2021 - 28 Apr 2021

CodeGen 2021

13 Feb 2021

OOP 2021

Tutorial: DDD hands-on
Talk: Domain Storytelling
8 Feb 2021 - 12 Feb 2021
Munich, Bavaria, Germany

Domain-Driven Design Europe 2021

4 Feb 2021 - 5 Feb 2021

NDC London 2021

25 Jan 2021 - 29 Jan 2021
London, England, United Kingdom

Update Now 2020

23 Nov 2020 - 26 Nov 2020
Prague, Hlavní město Praha, Czechia

Developer Week '20

29 Jun 2020 - 3 Jul 2020
Nürnberg, Bavaria, Germany

BED-Con 2019

5 Sep 2019 - 6 Sep 2019
Berlin, Germany

microXchg 2019

1 Apr 2019 - 2 Apr 2019
Berlin, Germany

Domain-Driven Design Europe 2019

29 Jan 2019 - 1 Feb 2019
Amsterdam, North Holland, Netherlands

KanDDDinsky

17 Oct 2018 - 19 Oct 2018
Berlin, Germany