Domain-Driven Design in C#

Learn to build rich domain models and use advanced tactical patterns
Gien Verschatse, Thomas Coopman, and Stijn Vannieuwenhuyse

Domain-Driven Design in C#

Domain-Driven Design in C#

Gien Verschatse, Thomas Coopman, and Stijn Vannieuwenhuyse
🇬🇧 English

Online
Total duration: 21h00

Timezone: Europe, Amsterdam
Monday September 2 09:00 - 12:30
Monday September 9 09:00 - 12:30
Monday September 16 09:00 - 12:30
Monday September 23 09:00 - 12:30
Monday September 30 09:00 - 12:30
Monday October 7 09:00 - 12:30
 
Timezone: Asia, Singapore
Monday September 2 15:00 - 18:30
Monday September 9 15:00 - 18:30
Monday September 16 15:00 - 18:30
Monday September 23 15:00 - 18:30
Monday September 30 15:00 - 18:30
Monday October 7 15:00 - 18:30


Learn to build rich domain models and use advanced tactical patterns

Summary

In this training we’ll teach you how to implement a Domain-Driven application in C# from scratch.

Do you want to learn how to use tactical patterns to implement a full and rich domain model? Are you curious how you can leverage tactical patterns to implement business rules, to express the language of domain experts explicitly? And do all of this while building a full application, not small isolated examples?

Then this is the training for you. We’re tackling questions that people still have after reading about tactical patterns:

  • When and why do I use these patterns?
  • How can I explicitly model business rules?
  • How do these patterns work together in a Domain-Driven application?
  • What does a good working Domain-Driven application look like?

We’ll start with the basic building blocks of DDD. Basic as in these building blocks are the basis of a good Domain-Driven applications. Then we’ll teach you how, when and why you should use a certain pattern, and we’ll add more advanced patterns along the way.

You’ll use what you’ve learned to implement a working DDD application yourself. Experienced DDD practitioners will give feedback on your implementation. We’ll also provide an example solution and how we came to this example solution, so you can further evaluate your own solution.

At the end of the training you’ll have working knowledge on how to implement Domain-Driven Design in C# and will have implemented a full application yourself.

If you are interested in another language, check our overview.

Learning outcomes

  • you know what the tactical patterns (value object, entity, specification, repository, aggregate,…) are, when to use which pattern and how to implement them in C#
  • You know how to setup, structure and implement a Domain-Driven application
  • You know how to go from scenarios and domain knowledge to a working application

Audience

This training is aimed at programmers.

Practical

This training is divided in 2 main parts:

  • Interactive theory sessions. These are remote group sessions where the trainers will introduce new theory, explain the domain and introduce new implementation exercises.
  • Exercises that you need to implement on your own, at your own pace. After each exercise we’ll provide an evaluation session where we look at and evaluate your implementation.

The interactive sessions will be recorded if you can’t make it, but it’s highly recommended to join. This will allow you to ask questions, participate in discussions and group activities. The goal after every session is that you fully grasp the theory and are ready to apply it in the next set of implementation exercises.

After each session you get implementation exercises as homework. You will need 2-4 hours per session to implement the homework. To get the most out of this workshop, it’s really important that you do the exercises the best you can.

Experienced DDD practitioners will evaluate what you’ve implemented at the start of every next session. This will be the time to discuss the outcomes and answer possible questions you may have.

a note on pairing

We find it’s really valuable for participants if they pair or mob with other participants. If you’re interested in this, we’ll help you set this up.

Prerequisites

  • Zoom (or access to the Zoom client in your browser).
  • Miro (or access to the Miro client in your browser).
  • Working setup for C#, this includes an editor and git.

Prior knowledge

  • You have experience working in C#. This is not a training to learn the programming language.
  • You don't need knowledge of Tactical Domain-Driven Design.

Prior to the workshop

In the week before the workshop, we’ll send out the practical setup. This includes cloning a template application, making sure it compiles and the tests run. We’ll also plan a slot to help you out with the setup if needed.

Frequently Asked Questions (FAQ)

1. What is the schedule for the workshops?

Each workshop session is scheduled once a week. 1 Session last 3.5 hours with regular breaks in between.

2. When can I complete the homework assignments?

You have the flexibility to complete the homework at your convenience throughout the week. Whether it's immediately after a session or any other time that fits into your schedule, you have the freedom to choose.

3. Do I need to submit the homework on a specific time?

No, submitting the homework on time is not mandatory. However, we highly encourage participants to complete the assignments before the next session. We review the homework during the subsequent session, making the course more valuable for those who actively engage in the assignments.

4. How do we review the homework?

During each session, we dedicate time to review and discuss the homework assignments in small breakout groups with regular time of a facilitator. This interactive review process allows participants to receive feedback, ask questions, and deepen your understanding of the concepts covered in the workshop. We discuss the most prominent questions in a bigger group after the breakout group discussions.

5. Do you provide the solution to the homework as well?

Yes, after each session we submit a solution that you can look at. We only provide that solution at the beginning of the next session.

6. What if I have questions about the homework during the week?

If you have any questions or need clarification on the homework assignments during the week, feel free to reach out to us.

7. Home much time do I need spend on the homework?

You should be able to complete most homework exercises in 2-4 hours.

Testimonials

I liked the exercises, the reviewing of the exercices, the presentation of the different theory parts, and the discussions. I'll be thinking more about design, and also will do more experiments with design in the near future.

I enjoyed the collaboration and the discussions with the other people to get a different perspective. The development team first has to master the mindshift towards a bounded context and the associated building blocks. DDD helps to write more maintainable software, and that will have a big impact on the long term.

I liked the frequency of the session to "digest" the theory. This workshop will have an impact on my mindset and approach: I will avoid usual technical layered architecture and focus first on understanding the business domain and apply it via the patterns presented.

Gien Verschatse

About Gien Verschatse

Gien Verschatse is an experienced consultant and software engineer that specialises in domain modelling and software architecture. She's fluent in both object-oriented and functional programming, mostly in .NET. As a Domain-Driven Design practitioner, she always looks to bridge the gaps between experts, users, and engineers.

Gien is studying Computer Science at the OU in the Netherlands. As a side interest, she's researching the science of decision-making strategies, to help teams improve how they make technical and organisational decisions. She shares her knowledge by speaking and teaching at international conferences.

And when she is not doing all that, you'll find her on the sofa, reading a book and sipping coffee.

All workshops by Gien Verschatse
@selketjah
Thomas Coopman

About Thomas Coopman

Thomas is a software consultant and engineer focused on the full stack: domain modelling, frontend & backend, and most importantly: people, practices, and processes. Thomas develops and teaches training programs for Aardling. He holds a Master of Informatics at the University of Leuven.

Thomas is a programming polyglot and loves to learn new languages. His latest language studies have taken him to Elixir, Elm, and OCaml, and he has a special affinity for functional programming languages. Thomas co-organises the DDD Europe conference and the Belgian Software Crafters community.

All workshops by Thomas Coopman
@tcoopman
Stijn Vannieuwenhuyse

About Stijn Vannieuwenhuyse

Before joining Aardling, Stijn was Head of Engineering at Teamleader, a SaaS-tool to help SMBs sell, organise and bill their work. Stijn has been responsible for delivering product changes in the best way possible. Over the years he's shifted from individual coaching engineering practices, to managing overall technological vision, architecture, and strategy. He's been in charge of product decisions, has modernised the cloud operations, and has built out the quality assurance teams, all while managing the engineering teams and supporting the team leads. At Aardling, Stijn is using his experience creating great teams that deliver world-class products to help companies do the same.

All workshops by Stijn Vannieuwenhuyse
@stijnvnh

Domain-Driven Design in C#

Gien Verschatse, Thomas Coopman, and Stijn Vannieuwenhuyse
🇬🇧 English

Online
Total duration: 21h00

Timezone: Europe, Amsterdam
Monday September 2 09:00 - 12:30
Monday September 9 09:00 - 12:30
Monday September 16 09:00 - 12:30
Monday September 23 09:00 - 12:30
Monday September 30 09:00 - 12:30
Monday October 7 09:00 - 12:30
 
Timezone: Asia, Singapore
Monday September 2 15:00 - 18:30
Monday September 9 15:00 - 18:30
Monday September 16 15:00 - 18:30
Monday September 23 15:00 - 18:30
Monday September 30 15:00 - 18:30
Monday October 7 15:00 - 18:30


Also check out