Production-ready Domain-Driven Design

5 x 3.5 hours remote workshop
Bruno Boucard and Kenny Baas-Schwegler

Production-ready Domain-Driven Design

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.


Production-ready Domain-Driven Design

The essence of Domain-Driven Design is designing shared models between all disciplines involved in creating software. We should spend most of our effort on the part of the software that handles complex business requirements. We need to focus on a language where we really crisply concisely describe the situation in the domain, a shared language created through conversations between all disciplines involved.

Eric Evans wrote about the Model Exploration Whirlpool. It describes a process for exploring models. In this workshop, you will learn to use this process from exploring the problem space to probing a model in code to deploying production-ready software.

Who should attend?

You want to know how to explore models collaboratively. You want to learn how to move from collaboration tools like EventStorming and Example mapping to designing models and implementing them, especially in an Agile or Lean setting.

Learning objectives

We’ll explore scenarios and models for a business domain during the first part with EventStorming, Example Mapping, context mapping, and Responsibility Driven-Design. In the second part, we will refactor to deeper insights with supple design and deep model and start our code probing with our newly designed bounded context. We will go from outside-in Object-Oriented TDD and bug hunting toward functional-style programming in several labs. We’ll finish protecting our bounded context with the Ports & Adapters architecture. You will leave this session with hands-on experience to start your exploration into creating a production-ready, Domain-Driven Design!

Key take-aways:

  • How to model and design bounded contexts with the Model Exploration Whirlpool and create production-ready software.
  • Collaboratively design with visual collaboration tools like EventStorming, Example Mapping, Context Mapping, and Responsibility mapping based on CRC cards.
  • Learn how to use and implement the basic tactical DDD patterns like Entity, Value Object, Aggregate, Service, and Repository.
  • How to work towards a functional mindset in an object-oriented language.
  • The DDD concepts Supple Design and Deep Model.
  • Protect your bounded context by splitting accidental complexity from the essential model complexity with the Ports and Adapters architecture.

Is this workshop right for me?

  • You are a Software Developer or a Software Architect
  • You know how to do object-oriented programming in Java or/and C#

Program

Module 1 (Scenario):

  • Introduction
  • Domain-Driven Design a brief tour
  • Process Eventstorming
  • Introduction to the Bounded Context pattern and context mapping

Module 2 (Model):

  • Software design level Eventstorming
  • Example mapping
  • Responsibility Driven-Design based on CRC cards

Module 3 (Model-Driven Design through Code probe):

  • Coding Lab 1: Implementing a bounded context using Outside-in TDD
  • Coding Lab 2: Supple design - Make the potential of the model clear

Module 4 (Deep modelling):

  • Coding Lab 3: Deep Model - refactoring to deeper insights

Module 5 (Production Ready):

  • Coding Lab 4: Ports and Adapters aka Hexagonal architecture - Protecting your bounded context domain model
  • Ask us anything on how to move on from here!

Prerequisites:

  • Read the free ebook The Anatomy Of Domain-Driven Design: https://leanpub.com/theanatomyofdomain-drivendesign
  • It is nice to have read Domain-Driven Design by Eric Evans (the blue book), it is not required.
  • Your favourite IDE with java (Maven/Lombok) or C# (nuget)

Online:

  • An up to date Zoom client (https://zoom.us/)
  • A free Miro account (https://miro.com/)
Bruno Boucard

About Bruno Boucard

Bruno is a developer, trainer, agile coach, and speaker. He loves to explain with concrete examples with live-coding if needed. He is also the organizer of the BDD Paris meetup. He is a long-time Microsoft MVP, but he still is coding java, Python, and C++ with a C# accent ;-).

His company 42skillz, which aims to help organizations make software and work differently, provides training, coaching, consulting about TDD, BDD, legacy code refactoring techniques, and DDD.

All workshops by Bruno Boucard
@brunoboucard
Kenny Baas-Schwegler

About Kenny Baas-Schwegler

A lot of knowledge is lost when designing and building software — lost because of hand-overs in a telephone game, confusing communication by not having a shared language, discussing complexity without visualisation and by not leveraging the full potential and wisdom of the diversity of the people. That lost knowledge while creating software impacts the sustainability, quality and value of the software product. Kenny Baas-Schwegler is a socio-technical organisation designer and software architect. He blends IT approaches like Domain-Driven Design and Continuous Delivery and facilitates change through using visual collaboration practices, the Cynefin framework and Deep Democracy. Kenny empowers and collaboratively enables organisations, teams and groups of people in designing and building sustainable quality software products.

One of Kenny's core principles is sharing knowledge. He does that by writing a blog on his website baasie.com and helping curate the Leanpub book visual collaboration tool. Besides writing, he also shares experience in the Domain-Driven Design community as an organiser of Virtual Domain-Driven Design (virtualddd.com) and Domain-Driven Design Nederland. He enjoys being a public speaker by giving talks and hands-on workshops at conferences and meetups.

All workshops by Kenny Baas-Schwegler
@kenny_baas

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.


Also check out