Once, when I worked in TransferWise (now called Wise), one very smart engineer named Urgo Ringo gave me a book recommendation to learn more about Domain Driven Design.
I am very thankful to him for this book recommendation (see below). DDD philosophy and practices changed dramatically my mindset on how I approach software design.
What is DDD anyway?
To put it really simply, DDD gives you techniques that help you explore the domain you work with, and then suggests tactics to translate the domain knowledge into readable, maintainable, and testable code that resembles your ‘domain language’ (called ubiquitous language in DDD lingo) as closely as possible.
I am planning to write more on DDD (Domain Driven Design), but, meanwhile, I highly recommend this DDD book by Scott Millett, as it’s both very practical and delves into core principles of DDD.
In addition to the book recommendation below, I highly recommend these resources on DDD:
- Blog by Martin Fowler, specifically his ddd tag.
- DDD dev talks on dev.tube.
- Domain-Driven Design Europe youtube channel.