2025-11-20 –, Stage 1 (first floor)
Do you know the feeling when you just implemented an algorithm, but while using it in production, new edge cases keep popping up that you hadn’t considered? You strictly followed Domain-Driven Design and created value objects, entities and aggregates, tested everything thoroughly, but that apparently didn’t help you with this phenomenon of “yet another edge case gone wrong”.
Especially for algorithms, it is essential to peek beyond your own nose and into the realm of mathematics. Lightweight ideas like closure of operations allow you to solidify your algorithms and to make them sound. And if you think that you actually only want to follow DDD and not any random esoteric fad, you may be pleasantly surprised that Eric Evans already mentioned that in his book.
We will introduce the ideas behind closure of operations, demonstrate them using monoids, a lightweight representative of these ideas that delivers real composability on the domain level, and show you how you can apply these to your codebase as well.
Basic
Nicole Rauch is an independent software developer and development coach with a solid background in compiler construction and formal methods. Her focus is on Software Craftsmanship / Clean Code and Domain-Driven Design, working with React.js in the frontend as well as working with legacy code. Nonetheless, her secret love is for functional programming. Also, she is committee member and co-organizer of a number of conferences and magazines as well as co-founder of Softwerkskammer, the German-speaking Software Craftsmanship community.
Martin has been consulting and supporting companies in the implementation of their software projects as a software architect and agile coach for many years. He always has the big picture in mind, looking for the boundaries that naturally divide the domain into conceptual units in order to build robust and efficient systems from these parts. Additionally, his profound experience in facilitating workshops helps him to accompany groups in their process of gaining insights and decision-making and to enable all team members to interact in an appreciative and effective manner.