Domain-Driven Design is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain.
Martin Fowler
Recently, I found DDD hard to learn, as it is a complex subject with concepts that are difficult to understand. Most of these concepts are completely new to beginners, which makes it tough to start. Hence, I decided to share the process I took to learn DDD. I hope everyone finds it helpful.
- What is Domain-Driven Design?
- Why did I write this gist?
- Resources
- Do not trust Eric!
- Steps
- Show time
- Contact
Thanks to Eric Evans, we have a comprehensive book titled Domain-Driven Design - Tackling Complexity in the Heart of Software, which I highly recommend not starting with if you are new to DDD. Sorry, but your book is not beginner-friendly, dear Eric :)
As I mentioned, there are many new concepts to learn. Thus, it is better to start with content that introduces these concepts briefly with some good examples. In the shared folder, besides three books, there is a file named DDDEU-Booklet published by the dddeurope organization. This is a good starting point for learning DDD!
Now that the main concepts are well-known, it's time to delve deeper with real-world examples. You are ready to start Learning Domain-Driven Design, by Vlad Knonov. If you find something confusing or unclear while reading the book, I recommend reviewing the concept by watching dddeurope YouTube videos. Thanks to the community, there are many useful and helpful recorded presentations by DDD experts. Don't miss them!
We are ready to learn DDD in practice! By reading Implementing Domain-Driven Design by Vauge Vernon, you will tackle practical examples and exercises. Again, consolidate your knowledge by watching YouTube videos.
Nothing shows how much you really know like using your knowledge in practice. This can be done through several actions, such as reading practical books. Based on your tech stack, you can find various books like Domain-Driven Design in Go or Domain-Driven Design in C#, or maybe you will find useful github repositories to do so (comment if you know any).
The coding language is not really important in this case because you are not learning a language, you are learning an approach. So if you are a bit familiar with Go or C#, start reading those books.
My socials:
- Email: [email protected]