Feelings about DDD & DDDEU 2020 conference

VeepeeTech
VeepeeTech
Published in
6 min readMar 20, 2020

--

What is DDD?

DDD stands for domain driver design. The domain driver design expression comes from a title of a book of Eric Evans written in 2004.

Basically, DDD is based on these concepts:

  • identify and define the core domain,
  • place the focus on the core domain and the domain logic,
  • enhance the collaboration between the technical experts and domain experts.

“A Domain Model represents a view, not the reality, of the problem domain, it exists only to meet the needs of business use cases. The various expressions of the model — code, diagram, docs — are bound by the same language. It usefulness comes from its ability to represent complex logic and policies in the domain to solve business use cases. The model contains only what is relevant to solve problems in the context of the application being created. It needs to constantly evolve with to keep itself useful and valid in the face of new uses cases.”[1]

Overview of the DDD Europe 2020

DDD Europe is a conference splitted on several sessions that allows people interested in how to build software systems for complex domains to learn more about that. The conference held this year was scheduled on February 6–7, 2020 in Amsterdam. During these 2 days, more than 40 sessions occurred. Some of these sessions were a talk and some others were a hands-on lab.

My feelings about DDD Europe 2020

Personally, I really enjoyed this conference. Many of the talks were very interesting, specially the talks about Dissection Bounded Contexts by Nick Tune, the talk about Experience applying DDD for aligning an enterprise scale data model by Oleg Kutyrin and Juergen Heymann, who are SAP employees. I enjoyed as well the talk about Continued Learning: The Beauty of Maintenance by Kent Beck, the creator of extreme programming and the one about Experiments in Reasoning by Aslam Khan.

Some talks were very abstract, but I also liked this kind of presentation. I think that some people, especially developers who are not very interested about model design and modeling concepts might find a lot of talks boring.

However some talks were more concrete, like the lightning talk about Value Object, Aggregates and Entities and could be very interesting to put in place in vpTech.

Context mapping and defining a single source of truth for an ubiquitous language for the domain model was some concepts that I had already identified in order to improve our processes in vpTech and were very well explained during this conference.

Other talks presented how microservices and event-store databases could be used in a DDD way.

Our application uses some concepts from the DDD (code domain model, functional programming, micro-services, entities, distinct layers for the services and the domain logic) so this conference gave me confirmation about things I need to use like context bounded domains or ubiquios languages, for example. I am happy that I got to attend the talks as it has given me more confidence for the upcoming vpTech challenges.

For me, it was a very good things to attend to all of these talks, because it give me more confident in the architecture that we put in place in one of our application that uses a lot of concept from the DDD (code domain model, functional programming, micro-services, entities, distinct layers for the services and the domain logic) and gave me some confirmation about things I already identified like the need to use context bounded domains and ubuquios languages.

Hands-on lab

I participated in one hands-on lab: Scratch Refactoring to Understand: Unearthing Your Domain animated by Barry O’Sullivan.
First of all, it was a subject that interested me a lot. As a developer, I had to deal with a lot of pieces of code that I didn’t master because I was not the original developer of it. In vpTech we deal with both clean and understable codes but also sometimes with some legacy applications written by people who left the company or simply are now in another team and work with other applications. Currently I have to maintain a legacy application was that contains more than hundred thousand lines of codes.
Before joining vpTech, I worked for a financial company and maintained an application that contained more than one million code lines. This helped me creating a strategy to be able to understand and maintain on a very complicated code base:

  • do some architecture diagrams
  • try to identify the dependencies to other applications, services and databases
  • try to identify the different kinds of users of the applications
  • use profilers and debuggers
  • split mentally a big application into several small applications

For all of these reasons, I was really interested about the topic of this lab. The lab was scheduled for 2 hours, the first half-hour. The teacher, Barry O’Sullivan, presented us some slides that explained all the theoretical concepts about Scratch Refactoring and model understanding. The hands on lab started with a theoretical concepts explanation about Scrath Refactoring and model understanding.

Personally, one of the difficulties of the workshop was to find a suitable code for Scratch regactoring.This needs to be hard to understand and messy, but the ones I had where already easy to understand for me as I already worked on them. I think it would be a good if an existing code base was provided for the participant in order to do this exercise with a relevant code that would allow us to learn the most.

The slides are available on his website.

Conclusion

I recommend this conference for people that is interested about leveraging their abstraction level when they develop and think about software architecture. It’s a conference made for people who have a good knowledge about how to program and how to create and maintain a software, however for people that is not interested in the high abstraction level of software architecture or methodologies and wants only to be focused on programming languages and development tools, it’s not a good conference.

A way of improvement for the DDD europe and maybe the DDD community might be to provide more source codes about concrete and complete applications that follow the majority of the DDD good practices with maybe some design documentations and some other documents that can be shared between developers and domain experts.

Another good point was the quality of the speakers and of the talk. The building was also very nice. It was relatively easy to meet and discuss with other people thanks of the coffee breaks and the lunch times. I don’t have the time to visit Amsterdam (in fact it was not a problem because this was not the first time I went to Amsterdam). However the location was easy to find because it was near the tram line.

A final good point was the food. It was very good and healthy, there were a lot of things to eat (both cold and warm) and a lot of drinks (also both cold and warm).

The majority of the talks were recorded and should be available soon in their youtube channel, so don’t hesitate to check if you want to learn furtherly about DDD.

About the author

The author of this post is a developer at vpTech. He likes programming and solving problems using both abstract and concrete concepts. He likes modeling methodology like UML and entity relationship diagrams, functional programming, web development, compiler, analyzer and language theory and is interested about formal languages like B-Method and Object Constraint Language and likes software architecture.

Some links

Bibliography

  1. The anatomy of domain driven design (Scott Millet)
  2. Domain Storytelling (Stefan Hofer — Henning Schwentner)
  3. DDD magazine — NUMBER_#1_2020 (Xebia)

--

--

VeepeeTech
VeepeeTech

VeepeeTech is one of the biggest tech communities in the retail industry in Europe. If you feel ready to compete with most of the best IT talent, join us.