DOMAIN DRIVEN DESIGN TUTORIAL SOFTWARE
Once agreed upon, it enables developers to connect what the software implementation to what actually occurs in the real world. The Ubiquitous Language (which is a fancy DDD term for the common language that best describes the domain model concepts) can only be learned by talking with the domain experts.
Initially conceptualized by Eric Evans who wrote the bible of DDD (famously known as the Blue Book), DDD's primary technical benefits are that it enables you to write expressive, rich and encapsulated software that are testable, scalable and maintainable. Protect that domain model from all the other technical intricacies involved in creating a web application.Take those newly discovered terms and embed them in the code, creating a rich domain model that reflects the actual living, breathing business and it's rules.Discover the domain model by interacting with domain experts and agreeing upon a common set of terms to refer to processes, actors and any other phenomenon that occurs in the domain.About Domain-Driven Designĭomain-Driven Design is an approach to software development that aims to match the mental model of the problem domain we're addressing. It was at this point I started to seek out solutions to the problem. Lack of encapsulation and object-oriented design were to blame. Since 2017, we've iterated many times, adjusting and encorporating features based on feedback from students and employers such as job recommendations, interviews, an Applicant Tracking System and several portals to integrate with the existing platform (developers, campus reps, etc).Įventually, the codebase had became so large that adding new features on top of it took nearly 3x the amount of time it would have taken when I first started. Employers could sign up, post jobs, browse students and invite them to apply to the jobs they've posted. Students could sign up, create their profile and apply to jobs. In 2017, I started working on an application called Univjobs, a marketplace for Canadian students and recent-grads to find co-op jobs, gigs and entry-level jobs and internships. Quick history about my experience with DDD I came across Domain-Driven Design when I realized I needed it the most. I've wondered all of this while coding on a 3 year old Node.js app with a line count pushing ~150K+. How are able they able to break off large bodies of code, assign them to teams, and then integrate all the teams together? How do they get anything done? How do they manage that complexity? What about enterprise companies? How are they doing it? Their codebases must be massive.
DOMAIN DRIVEN DESIGN TUTORIAL CODE
Or have you ever been in the situation where you're nervous to add new code to an existing codebase in the fear that you'll break something else in a completely different part of the code somewhere? Have you ever wondered, "how do you organize business logic anyways"? Have you ever worked on a codebase where it felt like "the more code I add, the more complex it gets"? Check it out if you liked this post.Īlso from the Domain-Driven Design with TypeScript article series. This is part of the Domain-Driven Design w/ TypeScript & Node.js course.