This is part 2 of the series Journey to writing better code. You can read the previous posts in this series by clicking the links below:
we have two points we'll be talking about in this post
- when should you use Domain-Driven Design?
- where can you learn Domain-Driven Design from?
When should you use Domain-Driven Design?
In the last post, I talked about how I started learning DDD and why Transaction Script was the cause of a lot of pain for me. Before I talk about that, I should clarify that like everything in life Transaction Script has its own use-cases and DDD has its own use-cases. For example, if the project you are working on is mostly CRUD based then you do not need to add the complexity of DDD. Another scenario where DDD is not suitable is projects where speed is of importance (single, double-digit response). But, if the project you are working on has a lot of domain rules and invariants that you need to enforce and you expect more invariants/rules to be added or existing ones to be modified then DDD could be what you need.
Where can you learn Domain-Driven Design?
Luckily, DDD is a very famous approach and you can find a lot of resources about it on the internet. From Blog Posts to Video Courses, no matter what kind of a learner you are, you can find resources teaching you DDD. I'm going to list some of the resources that helped me understand DDD better and thus made me a better developer (arguable).
- Khalil Stemmler Khalil's blog has been an absolute godsend for me. He talks about DDD with typescript which is a very valuable resource in the JS world we live in. His blog is a great way to familiarize yourself with DDD's core concepts and layered Architecture. I'm eagerly waiting for khalil's Book
- Vladimir Khorikiv Valdimir's blog is another great resource to learn DDD and TDD among other things. He has a couple of courses on pluralsight on DDD, CQRS and TDD. His blog has been a great help in recognizing how to model complex scenarios into DDD.
I'll be starting another series talking about the core concepts of the DDD and modeling common scenarios with DDD which I expect to be more hands on. if you'd like to read that, do follow me and shoot me an email at email@example.com with any questions you may have.