My DDDutch adventure
At Novanet, each year we get a competence fund we can use for attending conferences. This year I did choose DDD Europe. The conference was held in Amsterdam on 30th and 31st of May. There is also a pre-conference and even a couple of multi-day workshops earlier in the week but I did only attend the main conference. DDD Europe is all about Domain Driven Design. As one of the organizers mentioned, DDD is a niche but they still got over 500 responses to their call for papers so the conference has multiple tracks with simultaneous sessions.
I guess many of you have been to Amsterdam and know that it is quite a unique and nice city. The conference venue was located a bit outside of the main center of Amsterdam, around 20 minutes with the tram from the Central station. The trams ran all the time so it was not really an issue. The venue itself was nice but it did actually feel a bit crowded during the breaks. So it seems that after all, DDD is maybe growing out of its niche.
In addition to the two tracks with multiple sessions, there were quite a few so-called hands-on labs. The hands-on labs are a kind of mini-workshops, typically lasting 90 minutes, where you dive into a topic with a mix of presentation and group discussions. I only followed the more traditional sessions but in retrospect I regretted not attending some workshops. It can be a bit monotonous to just follow speakers and their presentations so a hands-on lab could probably have spiced things up a bit.
That being said, I attended many interesting presentations. The sessions were recorded but at the time of writing they have not been made available so I can not post links to them. DDD Europe has a YouTube channel that you can follow to get notified when the sessions are available to watch. So instead I will try to share some key takeaways that I found interesting from some of the sessions.
Modelling the Law: Turning Intent Into Code
I have to mention this since it was the only Norwegian participants. Chris Atherton and Halvor Grizzly Bjørn told us about how they, working at NAV, had modeled (a small but very complex) part of Norwegian welfare laws. The talk was mostly about how they had created a system that could link the domain together with the laws and how to keep the cross references between all of the different sources (more sources than you could think of!) that ends up with the domain rules that should be implemented in software.
Shades of Conway's Law
I feel that Conway's law (software will always mimic the organization that build it) has been “popular” lately with the advent of Team Topologies. Thierry de Pauw talked about the origin of the law but mostly of the different nuances and research that had been done around it in the almost 50 years that have passed since Conway's original paper came out.
Modern Trade-off Analysis for Software Architecture
Neal Ford held a great presentation emphasising that every decision in software making comes with a trade off. There is no perfect solution, and if you think you have a perfect solution you have not thought everything thing enough through. This also means that best practice really does not exist, since every case and its trade off analysis is unique.
How to understand almost anything
Markus Völter talked about how DDD can be used to understand almost anything. He told how he used multiple techniques to get all kind of information about a domain from the domain experts in an organization. He also used a tool called MPS from JetBrains to actually build the domain language and use it to execute the domain! He told that this always led to both many discoveries about additional parts of the domain but maybe even more importantly revealed errors in what was modelled so far.
I picked out these four examples of some of the great talks held to show the spread of topics. I would recommend anyone interested in Domain Driven Design and Software Architecture to attend the DDD Europe conference. There were many “big names” and a lot of inspiration to get from the talks. Most of the talks were also non-technical, meaning no code samples or other stuff so the principles given could probably be applied in any modern programming language. And if you are more of the type that is “learning by doing” you could attend some of the hands-on labs or maybe even a pre-conference two day workshop to learn even more!