“Domain-Driven Design is a Set of Guiding Principles and Heuristics.” – Eric Evans
This was my first Domain-Driven Design conference, and let me tell you, what an experience! In these two days I met new people, I learned new concepts, refreshed others, and brought back new ones to research.
To be honest, it was so much information that I got overloaded! I’m still assimilating it and remember everything is not even possible. So, in this blog post I will expose my helicopter view on some of the talks and hands-on sessions I went to.
Day 1 - Talks & Hands-on sessions.
Opening Keynote - Eric Evans
The conference started with Eric Evans talking about “Language in Context”.
Eric started by explaining some basic concepts about Domain-Driven Design (DDD) and how Language as to be framed in the right context. A word can have multiple meanings and the context in which is framed is what makes that distinction. An example could be “a bird crane” compared to “they had to lift a crane in a construction site”, as you can see the same word but different meanings. This also happens in complex domains in which the same word for the Customer Support can mean one thing but for Finance can mean another. Eric did also explain some of the DDD basic concepts and new ones (at least for me) and how they can help us to frame the language in the right context. These are the concepts he talked about: sub-domains, context map, bounded context, bubble context, quaint context, patch on patch context, and the exposed legacy asset. At the end of his presentation, I was astonished and was questioning myself how did I miss all those concepts?
Eric ended his talk by (re-)defining the meaning of DDD:
“Domain-Driven Design is a Set of Guiding Principles and Heuristics!” – Eric Evans
Collaborative Modelling in Practice – Marijn Huizendveld
Marijn started the hands-on by explaining to us what was the goal of the hands-on and what we had to do. After that, he gave us nine ordered tasks to do. Each task brought new insights about the Business needs, each represented a conversation with certain people from the Business or Domain Experts. At each step we had to do some modelling with the new learnings, this was a bit difficult because, in my group, I’d technical people immediately starting to use technical jargons and thinking about the technical details/implementation instead of focus in the Business Problem to be solved and modelled. Also, the fact that we were from different countries and speaking different languages made communication a challenge. I would say the biggest learning here, was the reinforcement that communication with the people that are Distilling a Domain and modelling it is, in fact, the most challenge thing, more than the Business Problem we’re tackling.
Crunching ‘real-life stories’ with DDD EventStorming and combining it with BDD techniques - Hands-on by Kenny Baas-Schwegler & João Rosa
Before this hands-on, I have had one experiment doing it at Teamleader. It was an incredible experience, in half a day we were able to map an entire complex process and we discovered so many things about the domain that we didn’t know about or was not that clear.
So, my expectation for this hands-on was high. It started by Kenny and João explaining the basic concepts of EventStorming, the exercise goal, requirements and constraints, and after that, they introduced the first post-it™ colour and its meaning.
We started writing our domain events in the past tense and sticking the orange sticky notes in the plotter paper in a chronological fashion that the events happened. When the right time came to Kenny and introduced another colour and so forth.
After that, they introduced Example Mapping. A technique to discover business rules and to visualise them. The reason they introduced it was to make sure we discover all business rules as much as possible by looking at it from a different perspective/technique.
Day 2 - Talks & Hands-on sessions.
Breaking Illusions with Testing - Maaret Pyhäjärvi
Testers don’t break the code, they break the illusions about the code – Maaret Pyhäjärvi
Maaret’ve broken some Illusions by telling us some truths about things we often avoid to speak off or we don’t want to acknowledge. For example, the product/code that is being built it’s doing what is supposed/needed to do. This most of the time isn’t true, the product/code can have bugs and users might have found workarounds for the limitations of your product and thus figuring out of using it in a different way that you intended it to be used.
She also mentioned how important is to Learn about your product/system/environment because things can look different from different perspectives. She exposed some of her learnings and the lessons she took from them.
Lost in transaction? Strategies to manage consistency across boundaries – Bernd Ruecker
I had a lot of expectations for this talk. Mainly because it’s about a topic I’m aware of its complexity. Transactions across boundaries are hard and to be honest if I can avoid it I will! Bernd did a great presentation, he presented a wide range of topics and explained it very well and provided solutions to the problems he faced/mentioned. Some of the topics that he mentioned in his presentation were, ACID 2.0, Architecture, Sagas/Compensation, Event-Driven Choreography and Orchestration, the usage of BPMN to describe Orchestration and the processes with the compensations steps, State Machines, Eventual Consistency, Idempotency and some other things I can’t remember. If you are interested in these topics, you should indeed see his presentation.
The conference was really fantastic and it made a big difference for me. I consolidated the knowledge I already had, got introduced to new concepts, added more tools to my toolset, and I returned home eager to continue learning and put into practice what I’ve learned. But if I would have to pick one learning that was more impactful to me, I would say it was the inability/difficulty that people have to understand Business Problems and thus makes it very difficult to model them and agree on. This showed me once again that communication, personal experiences, business thinking, avoiding technical details are crucial for a successful modelling session.
To close this blog post, I would like to say that I’m grateful to Teamleader, the company I work for, for giving me the opportunity to go to the conference and also to all Speakers and Organisers for such an amazing conference. I hope to be back in 2020!