Martin Fowler, one of the most respected authorities on software design, has a number of articles embracing diverse DDD topics.
If anyone is serious about DDD, then Eric Evans is for sure the name to look for. He wrote the Domain-Driven Design: Tackling Complexity in the Heart of Software book that is considered the “the DDD bible” by people that are familiar with it. It is the canonical source for anything DDD and has certainly helped tons of software developers and software architects to grasp the DDD concepts and to understand how to better communicate and organize their projects.
In both Martin Fowler’s articles and Eric Evans’ book, the focus is on the development of software using object-oriented languages. I’ve been using Elixir as the main programming language. Elixir is a functional language, with different characteristics from object-oriented languages.
I was wondering: Is there any difference if I want to apply the same DDD concepts using a functional language? With that question in mind, I start reading the book Domain Modeling Made Functional, written by Scott Wlaschin.
The book is a gentle introduction to the Domain-Driven-Design concepts and its characteristics. Scott guides readers through the concepts and lay them down step-by-step, which I found quite helpful, even tough I had already read the “DDD bible” and I am quite familiar with the concepts.
Although the book is focused on DDD using F# (another functional language) and extremely reliant on types, it was easy to “translate” the concepts to “the Elixir way” of doing things.
What I found quite fascinating about the book is the focus on communication. Scott has invested a considerable amount of time highlighting that good software design depends on good communication between the involved parts (usually the developers and domain experts).
I strongly recommend anyone working with functional languages to read this book. It connects the DDD concepts and usage with functional languages and shows the process of simplification and composability using what functional languages have the best.
By joining this free, 5-lesson course, you'll receive personalized & actionable lessons that cover: