Skip to main content

Nail Your Next Project

Learn the essentials of Domain-Driven Design by writing real-life Go code. Master reliable backend systems.

  • 🏗️ Get real experience using DDD patterns
  • 🎯 Solve real-life problems, not toy examples
  • 💎 Write idiomatic Go, not overengineered abstractions
  • 🚀 Learn battle-tested ideas based on years of experience
  • 🕐 Go at your own pace with lifetime access
Avatar 0Avatar 1Avatar 2Avatar 3Avatar 4Avatar 5Avatar 6Avatar 7Avatar 8
🔥 5251+ students trained

NOTE: The Domain Engineer is available to buy just for !

avatar

Great hands-on course that immediately puts the theory into practical example.

Small focused programming tasks and one longer bigger project that is built through the whole course is great for having isolated examples of the concepts and also their place in overall architecture which is often missing in courses/tutorials.

And as a bonus contains clever tool that allows you to work on the examples in any IDE you prefer AND does run robust tests that make sure the code works properly.

Petr Vitek, Developer
Review of our previous training

This time, actually learn DDD

So many senior engineers have read about Domain-Driven Design at this point. Yet, they never put it into practice.

The theory gets you only so far. How about seeing how it works in a real codebase?

This training is like joining a team that uses these ideas daily and kicks off a greenfield project with a complex domain.

We'll guide you to write the code and understand the "why" behind it. You'll be confident using the same techniques in your projects.

Laptop

You'll learn how to:

  • Find the right boundaries — Split modules without over-engineering
  • Model the domain code — Keep business rules in one place, not scattered across services
  • Apply DDD in idiomatic Go — Clean patterns that feel natural, not ported from Java
  • Know when to use DDD — And when simpler patterns are enough
  • Mix strategic and tactical patterns — From Event Storming sessions to code running in production

You will be able to use exactly the same approach in your projects. No more "I understand the theory but..."

Gopher of time

You can't buy time

It's rare to find high-quality learning materials. They're often inconsistent, outdated, or incomplete. (We've been there.)

The Domain Engineer distills practical knowledge and years of experience. We focus on essential topics and filter out the noise to ensure you're productive right away.

Practical Gopher

Hands-On

You can't learn to drive a car from a book or a video, and writing software is the same.

This training is all about practice. To grasp the topics, you'll get your hands dirty with coding. If you prefer passively watching videos, you're on the wrong website.

Practical Gopher
Gopher of success

Real-world examples

Have you ever wondered why many tutorials use a coffee machine analogy? Proper examples require work.

Abstract or too simple examples leave you unprepared for real-world challenges. In The Domain Engineer, you apply what you learn to a real-world project.

Stay in your environment. Use your favorite tools.

Our platform guides you through the training. It's a unique experience that helps you learn the fastest way possible: by doing. You won't learn this way anywhere else.

Work on real-life projects doesn't happen in the browser. We let you stay with your favorite tools. VS Code, GoLand, Vim, Emacs? It's up to you.

What graduates like about our platform?


avatar

The CLI tool they've got for hands-on exercises is a game-changer. The CLI tool functions like an interactive debugger, giving immediate feedback and validation as you work through coding exercises. I'm looking forward to using what I learned directly in my job.

The Discord community is also a big win. It's not every day you get to chat directly with the people who made the course. They're super helpful and quick to answer any questions. Also, they continuously take feedback and improve the course.

Damian Trzepała, Software Development Engineer
title

What will you learn?


You will practice each topic with smaller exercises, and then apply them to a complete application.

See the list of topics we plan to cover below.
The exact content may change as we develop the training.

What you will learn
  • ✅️ Know when DDD adds unnecessary complexity and use simpler patterns instead
  • ✅️ Apply only the DDD patterns you need - from light tactical patterns to full strategic design
  • ✅️ Avoid common over-engineering traps that make codebases harder to maintain
What you will learn
  • ✅️ Build maintainable codebases that don't turn into big balls of mud
  • ✅️ Structure your project to handle complexity as your team grows
  • ✅️ Create clear boundaries between modules
What you will learn
  • ✅️ Split large projects into manageable pieces that teams can own
  • ✅️ Define clear contracts between different parts of your system
  • ✅️ Avoid merge conflicts and overhead in large codebases
What you will learn
  • ✅️ Model complex business logic that actually reflects real-world problems
  • ✅️ Write domain code that business stakeholders understand
  • ✅️ Separate business rules from infrastructure for better testing
What you will learn
  • ✅️ Design the transactional boundaries of your domain model
  • ✅️ Protect data consistency in complex scenarios without database locks
  • ✅️ Handle concurrent operations safely in high-load systems
What you will learn
  • ✅️ Map bounded contexts to microservices without creating distributed monoliths
  • ✅️ Decide when to split services and when to keep them together
  • ✅️ Design service boundaries that align with team ownership
What you will learn
  • ✅️ Decouple your domain from database implementation details
  • ✅️ Make your logic code easier to test
  • ✅️ Handle complex queries without leaking infrastructure details into your domain
What you will learn
  • ✅️ Understand how Event Storming sessions reveal domain complexity
  • ✅️ Transform sticky notes and events into concrete bounded contexts and aggregates
  • ✅️ Bridge the gap between business understanding and technical implementation
What you will learn
  • ✅️ Bridge communication gaps between developers and business
  • ✅️ Reduce time spent on requirement clarifications and bug fixes
  • ✅️ Create a shared vocabulary that evolves with your project
What you will learn
  • ✅️ Write tests that catch business logic errors, not just technical bugs
  • ✅️ Test complex domain scenarios without complicated test setup
  • ✅️ Use domain tests as living documentation for business rules
What you will learn
  • ✅️ Use Event Storming to discover business requirements
  • ✅️ Collaborate with domain experts to build better models
  • ✅️ Identify core vs. supporting subdomains to focus on what matters
What you will learn
  • ✅️ Add new features without breaking existing functionality
  • ✅️ Refactor legacy code incrementally using DDD principles
  • ✅️ Plan changes that won't require massive rewrites later
What you will learn
  • ✅️ Collaborate with other teams without tight coupling
  • ✅️ Define integration patterns that won't break when other teams change their code
  • ✅️ Handle external system changes without major refactoring
What you will learn
  • ✅️ Execute bulk operations without loading thousands of entities into memory
  • ✅️ Optimize database queries while keeping domain logic pure and testable
What you will learn
  • ✅️ Learn how to emit domain events to decouple parts of your system
  • ✅️ Introduction to event-driven architecture
What you will learn
  • ✅️ Understand facts and myths about CQRS
  • ✅️ Separate read and write models for better separation of concerns
  • ✅️ Use read models for easier querying and reporting
What you will learn
  • ✅️ Call external APIs from your domain without creating tight coupling
  • ✅️ Create contracts that enable independent team development
  • ✅️ Design adapters that isolate your core business logic
What you will learn
  • ✅️ Use ORM without sacrificing clean domain design and performance
  • ✅️ Map between database models and domain objects effectively
  • ✅️ Avoid the common pitfall of anemic domain models
What you will learn
  • ✅️ Handle external calls from domain entities without violating DDD principles
  • ✅️ Design entities that can make decisions based on external data
What you will learn
  • ✅️ Inject configuration into entities without breaking encapsulation
  • ✅️ Handle feature flags and environment-specific behavior in domain code
  • ✅️ Design entities that adapt their behavior based on runtime configuration

This is the last chance to buy the training for a few months


The Domain Engineer training pre-sale closes in !

Why is it worth buying now?

  • ✅ It's the last chance to buy the training for a few months. After the pre-sale, we start building the training. We don't know the exact date of the next sale.
  • ✅ Get the training now at the best price. We won't have Black Friday or any other discount for The Domain Engineer. The price will never be lower than today. The price will increase in the next sales. The pre-sale price is a special offer for people who support us early.
  • ✅ Return up to 30 days AFTER the release. It may sound cliche, but we want you to be happy with the training. If you don't like it, we'll gladly give you your money back. Even after you've completed it. It's a zero-risk investment for you.
title

Created by

Robert Laszczak & Miłosz Smółka

Three Dots Labs logo Three Dots Labs founders

We are the authors of the Three Dots Labs blog, and our e‑book: Go With The Domain: Building Modern Business Software in Go. These are both some of the most popular resources about advanced programming patterns in Go.

We are also authors of the Watermill library, the most popular Go library for building event-driven and message-driven applications.

We worked in many fields, including infrastructure, complex and global financial domains, healthcare, and security. In the meantime, we've built a few startups and led multiple teams. It gave us a broad perspective on software development across different organizations.

We've been building projects together for over 17 years. In 2024, we switched to working full-time on training for experienced software engineers.

When we meet in our free time, we like to cook and eat some steaks and burgers.

Trusted by the Go community


270K+
blog visitors
unique per year
53K+
E-book downloads
17K+
Newsletter subscribers
12K+
GitHub stars
of our projects

We have been blogging, creating open-source projects, and writing an e-book for the past seven years. This work helped us get the trust of the Go community.

The best proof was that we sold 323 copies of Go Event-Driven in pre-sale without even starting work on it. In other words, over 300 people trusted us enough to pay more than $54k total on the promise that we'll deliver something they'll love.

5251+ students trained

Real reviews of our previous training


See what professional developers about our training.

Review avatar

Tobias Andersson

Site Reliability Engineer

What is often missing when learning new things is interactivity along with easy explanations for complex technical terms.

This course has all the elements that made it an incredible course, it is interesting, challenging but above all incredibly educational.

Review avatar

JP Fontenele

Senior SWE
The hands on training is perfect for engagement and drilling down the concepts of event driven. I've done video training before, and don't get me wrong it's certainly possible to learn with them, but comparing to this approach is certainly a step up in the learning process.
Review avatar

Muhammad Ilham Hidayat

Software Engineer

Before I joined Go Event-Driven course from ThreeDotsLabs, I already used their watermill package for event driven applications.

By joining Go Event-Driven course, I realized that I only scratched the surface for watermill package and event driven applications in Go.

I enjoyed and learned a lot from this course.

Review avatar

Kacper Siuda

DevOps

The Golang Event-Driven training was a highly beneficial experience, especially due to its hands-on approach, which facilitated a deeper understanding and retention of core concepts. Applying the acquired knowledge has brought a new dimension of efficiency and scalability to my daily job tasks.

Review avatar

Viacheslav Ostrovskii

Software developer

That is a great idea to wrap up all infomation about event-driven systems in Go and put it in a traing with a convenient platform. I must admit quality of training parts, thare no boring videos just best practices, real-world examples and joy of coding.

The Three Dots Labs team created a great product to improve yourself in short period of time. Thanks a ton!

Review avatar

Bastiaan Breemer

Low code developer

Good training for understanding event driven design of applications, with the use off Watermill. It's great that you're able to do this training in your own coding environment, sometimes the error messages are a bit cryptic but for the most part it's easy to understand. From the way they first make you do an exercise and then implement that into a project makes you think about where it would fit inside a real implementation.

The training portal could use some more work to make it more user friendly to run on a single screen side by side but overall it's all good.

Review avatar

Cristo Sun

Senior developer

I really love this course! Unlike books or blogs, you can actually code step by step in this course, which gives you a much more solid understanding. Plus, event-driven programming is going to be the next big thing in the future as software becomes more complex. So, this course is totally worth it for you.

Review avatar

Thanh

Fullstack Developer

The training is so great to help me understand concepts of event-driven architect, and technic to apply its to my work. It's included the solutions for my problem when design system with serverless framework like nextjs, trpc. I find like this training so much. Thanks you for all awesome work!

Review avatar

Gyanendra Singh

Full stack Developer

Amazing, it’s just amazing, the course content is really good and the difficulty is just right, that don’t hold your hand through the training neither do they completely leave you, it’s in between and perfect combination of both the things.

Review avatar

Dima Kotik

Programmer

The best technical course I have ever bought! It teaches and demonstrates practical engineering excellence that will level you up and leave you with much to think about.

Review avatar

Luís Pinto

Backend Engineer

The content was really well put together, everything builds upon what we are learning along the way and the approach of the small projects where all the knowledge is tied up together works really well!

This was a really nice course - I'd say that's a 10/10 in terms of value for money. I'm eager to start the next course from Three Dots Labs as soon as it's available!

Review avatar

Fernando Munoz

Developer & Tech Chieff, Microplan

I love this course! I was planning to learn Go but I find it very difficult since there was no single source where I could learn about Project structure... Base concepts of Go... Conventions... Concurrency...

All this in a fun and easy way! I think I came to the right place and I would recommend this course to anyone who would like to learn Go! And improve their skills as a Dev.

Thank you guys!!

Review avatar

Sebastian Will

Software Developer, Freelancer

I managed to break the training into smaller sessions to get a good overview about Go during my holidays. The individual topics contain concise information about the language's specifics and can be used as a short and handy reference later on.

The integration into VS code is working great; all in all it's a no fuss, hands-on primer that gets you up to speed.

Review avatar

Daniel Fenert

Architect, G2A.com

Very good training that systemizes essential Go knowledge with simple exercises. Good value for money.

Review avatar

Bilal Islam

Senior Developer, Freelancer

The Three Dots Labs team created a great training for all Go lovers. I had fun while I was guided to the next step every module. That is to say, I absolutely recommend it to everyone.

Review avatar

Andrés Uris

Software Developer, NaranjaX

Great training to learn and practice go fundamentals

I have enjoyed and learned a lot from this training. I feel more confident with my knowledge about programming Go and now I have a great foundation that will help me a lot in my journey with Go

Review avatar

Juan Lasso

Del Valle University

This is one of the best programming courses online and Threedots way of teaching is awesome. The course is easy to setup and the exercises are ready to go!

Review avatar

Yehor Masalitin

Senior Software Engineer

I'm a Senior Software Engineer with experience in Java / Kotlin / Python / JS but I have never tried Go and didn't want to learn it the regular way as it was too boring to go over again of "Imagine that the variable is a box...".

This course was amazing for me, I just learned what is DIFFERENT in Go from all the other languages I worked with. Loved it. Highly recommended.

Fakhri Aunur

Master's Student of Informatics, Institut Teknologi Bandung

I enjoyed this byte-sized, incrementally challenging, concise learning. This really helped me learn new programming language effectively and efficiently as a student.

Max Wolffe

Sr. Software Engineer, Databricks

Go In One Evening is an incredible way to quickly get a working knowledge of Go!

The training is interactive and follows some excellent teaching patterns (spaced repetition, interleaving, etc). Highly recommend.

Ramzi A.

Software Engineer, Flex

This is really fantastic way to jump in head first using Go and understanding the key pieces of the language. You will use some of the key attributes that make Go unique and why you would grab it (concurrency, error handling, type safety). Can't recommend enough it is challenging at some points but I think its important to be challenged to get better at what you do.

I will be happy to purchase any other products by threedots!

Review avatar

Michal Kozák

SRE, Keboola

Practice beats theory! I have read some books to get me up to speed with Go, but there's nothing better than actually doing it. The AI mentor is goat, helped me get unstuck numerous times.

Review avatar

Mohamed Mirghani

Senior Backend Engineer, Tweeq

The hands-on approach was exactly what I needed it kept me truly engaged and accountable. Unlike passive video courses I could not just breeze through it without understanding the material. The practical exercises forced me to apply what I learned right away.

I highly recommend this training to anyone interested in learning Golang quickly and effectively.

Review avatar

Vladimir Stankovic

Engineering Manager, Code Reflect

This course is absolutely amazing! The course made complex concepts seem incredibly simple, and the explanations were crystal clear. I couldn't have asked for a better learning experience. Highly recommended!

Review avatar

Anirudh Nitin Bakare

Student, Northeastern University

The course is well curated to build enough confidence in you to start that next go project. It abstracts the concepts just enough for any developer to understand grasp the syntax and usage. Enjoyed the course 😁.

Review avatar

Kirill

Senior Python Backend Developer, Compel

This course will be helpful for anyone who wants to quickly learn the basics of Golang. It's also great if you need to figure things out fast and solve a work-related problem using Go. The exercises are well-designed and very similar to real backend tasks you might face when working with Go. Overall, if you're just looking to get started with Go, this course is a solid entry point.

Review avatar

Geovanny Mendoza

Software Engineer, Geovannycode

The course exceeded my expectations. The combination of theory and practice helped me to acquire new skills and improve my job performance. I highly recommend this training to anyone looking to expand their knowledge and skills in the field. I believe it is invaluable for professionals at any stage of their careers, as it provides a solid theoretical foundation and practical applications.

In summary, I consider the course to be an invaluable investment in my professional development.

Freddy Fostvedt

Machine Learning Systems Engineer, Atlassian

I completed the go in one evening course. It's highly integrated into the IDE and terminal and course progress is easy, fun and fast. The course is comprehensive on basics, very hands-on and problem solving-oriented. I'd highly recommend this to anyone wanting to build experience with the basics of go.

Dave Chapman

Engineering Lead, Epic Games

Really well thought out hands-on approach to learning Go. Epic use Go quite a bit so it has been useful for me to learn the fundamentals. Highly recommend the training!

Become The Domain Engineer for:

$200

This is a net price. Local taxes may apply at checkout.


  • ✔️ The best price. The price will never be lower than during the presale.
  • ✔️ Zero risk. Get a full refund within 30 days after the first module is released.
  • ✔️ Lifetime access. Pay once, access forever. We’re sure you’ll go back to this content.
  • ✔️ Free content updates. People who got Go Event-Driven in presale received a huge 2.0 update for free two years later.

This is a presale!

The training is in the making. We expect the first module to be released early 2026.

🔥 5251+ students trained

Based on real-life experience

This training is our condensed experience of using Domain-Driven Desig in production systems for years.

30 days money-back guarantee

You can return the training within 30 days after the first module is released. You risk nothing by buying today.

This is a time-limited offer

The last chance to buy the training this year ends on .

Finance from your training budget

You can ask your employer to cover the cost of the training. It's a great investment in your skills.

Do you need more time to secure training budget? We can refund your purchase once your employer agrees to cover it.

What developers say about us on Reddit


Our blog posts and e-book are considered classics in the Go DDD community.

Reddit comment praising Three Dots blog articles
Reddit discussion thread about Go with DDD ebook
Reddit testimonial about threedotlabs material

We help engineers grow up to the VP level — at least that's what they tell us.

Email testimonial

Our Go DDD example is the most starred Go DDD project on GitHub.

GitHub repository stars

That's the impact of our free DDD content.
Imagine what the full training will do.

I'm in!
We are indie

Built by Engineers, For Engineers

We're a bootstrapped company building the training we wish existed. We answer to students, not investors.
By buying this training, you help us create more high-quality learning materials the community needs.

Still not sure?

We're developers ourselves, and we carefully pick our paid tools. We want you to be sure you've made a good career investment by buying our training.

If you change your mind, you can return it up to 30 days after we release it. Even if you finish the training within 30 days and don't like it. No questions asked. We'll just return your money.

Join now!
Gopher of trust

FAQ


We're doing our best to make you enjoy the content, and we care about your experience. But it would be arrogant to think we can satisfy everyone.

Our return policy is super simple to ensure that you'll be happy with the training: you can return the training up to 30 days after we release it.

No reason required. Of course, it would be great to know your reasons, so we're able to improve the training in the future.

We offer volume discounts when purchasing at least 10 licenses (-10%), 20 licenses (-20%), and 30 licenses or more (-30%).

If you want to buy more licences, please follow this link. The discount will be applied automatically.

You can specify your TAX ID during checkout to receive a VAT invoice. If you want to pay by wire transfer, please contact us at contact@threedotslabs.com.

Yes. Please specify your TAX ID during checkout.

We would really like to do that, but it's just not possible as long as there are 24 hours in a day.

Instead, we provide support in a private Discord channel. You'll receive access to private channels after joining the training.

You can buy the training out of your own pocket, and after you have the approval, we will refund your money after receiving the payment from your company. If you need a new invoice, we will issue it for you. If you don't receive budget approval and don't want to keep the training, we can still refund your money within 30 days after the purchase.

Please contact us (contact@threedotslabs.com) after you receive the approval, and we'll take care of the rest!

Yes! We only require that your project implements a given public API, but the implementation is totally up to you. The only place where you depend on provided code snippets is non-project exercises. They are designed so you can practice the techniques that you will later apply to the project.

The training is designed for intermediate and advanced Go developers.

Don't know Go yet? Check out our Go In One Evening training. It will give you a solid foundation to join The Domain Engineer training.

You can implement the training only in Go, but the patterns you'll learn are universal and can be applied in any programming language.

We're considering adding support for other programming languages in the future. If you purchase during this sale, you will receive access to all future updates, including new programming languages.

We are working on the training content now. We plan to release first modules at the beginning of 2026. You can always change your mind, and request a refund up to 30 days after the first module is released.

You will have lifetime access to the training content, including all future content updates.

One account can be used only by one user.

If you want to buy more licences, please follow this link.

We offer volume discounts when buying at least 10 licences. For more details, please contact us at contact@threedotslabs.com.

If you want to buy more licences, please follow this link.

We offer volume discounts when buying at least 10 licences.

Yes, it is possible in EUR, USD and GBP. Please contact us at contact@threedotslabs.com for more details. We will need your company details and the number of licences you want to buy.

Unfortunately, we don't offer any discounts for students, as the training may be too advanced for you. We recommend you to join the training once you're more experienced. It'll be more useful this way.

If you have any other questions, please contact us at contact@threedotslabs.com.