I’m Naresh, a software engineer and entrepreneur based in Boston. I am a Principal Engineer at Cruise, where I work on our driverless car platform, connecting people to the places, things, and experiences they care about.
Domain-Driven Design (DDD) is an approach for building high-quality products that meet the needs of a business and its customers. It emphasizes collaboration among domain experts, product managers, designers, engineers, and other disciplines to create a domain model that reflects these needs.
When we design a new system, it's critical that everyone clearly understands the domain and the business problem we are trying to solve. The first step towards this goal is to establish a common language that everyone understands. This language should be rooted in the terminology used by the domain experts and your customers. In DDD, this is known as the Ubiquitous Language because everyone on the team should be using it.
The sheer volume of concepts on a large project can be daunting. We must divide large domains into smaller manageable models, each of which is bounded within a context.