Skip to content

Instantly share code, notes, and snippets.

@erfan-rfmhr
Last active March 2, 2025 13:44
Show Gist options
  • Save erfan-rfmhr/58b64e52d15471f989aa1ac7cf49d18a to your computer and use it in GitHub Desktop.
Save erfan-rfmhr/58b64e52d15471f989aa1ac7cf49d18a to your computer and use it in GitHub Desktop.
Domain-Driven Design: How to start?

What is Domain-Driven Design?

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

Why did I write this gist?

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.


Table of Contents


Resources

Do not trust Eric!

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 :)

Zero step

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!

First step

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!

Second step

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.

Show time!

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.

Contact

My socials:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment