Software development is a perculiar mix of generalised principles and incredibly specific edge cases that you need craft unique solutions to. When you start working with a business to develop software for them you need to talk extensively with the experts in that business so you can share a common understanding of the solution you're going to build to solve their problem. Domain Driven Design provides a toolkit and language for engaging in that conversation so that you can extract the specific edge cases you need to understand in order to craft the solutions for that particular business.