Software engineer, founder, and amateur musician.

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.

1. Domain-Driven Design

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.

2. Domain-Driven Design – Ubiquitous Language

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.

3. Domain-Driven Design – Domain Model

The domain model uses the Ubiquitous Language to provide a rich visual view of the domain. It primarily consists of entities and their relationships.

4. Domain-Driven Design – Bounded Context

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.


  1. Company
    Principal Engineer
  2. Company
    Publicis Sapient
    VP Technology
  3. Company
    Cayenne Software
    Director of Engineering
  4. Company
    MultiQuest Corporation
  5. Company
    Motorola, Inc.
    Software Engineer