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









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

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
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.
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.
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?

Damian Trzepała, Software Development EngineerThe 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.
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.

Created by
Robert Laszczak & Miłosz Smółka
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
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.

Tobias Andersson
Site Reliability EngineerWhat 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.

JP Fontenele
Senior SWEThe 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.

Muhammad Ilham Hidayat
Software EngineerBefore 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.

Kacper Siuda
DevOpsThe 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.

Viacheslav Ostrovskii
Software developerThat 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!

Bastiaan Breemer
Low code developerGood 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.

Cristo Sun
Senior developerI 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.

Thanh
Fullstack DeveloperThe 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!

Gyanendra Singh
Full stack DeveloperAmazing, 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.

Dima Kotik
ProgrammerThe 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.

Luís Pinto
Backend EngineerThe 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!

Fernando Munoz
Developer & Tech Chieff, MicroplanI 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!!

Sebastian Will
Software Developer, FreelancerI 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.

Daniel Fenert
Architect, G2A.comVery good training that systemizes essential Go knowledge with simple exercises. Good value for money.

Bilal Islam
Senior Developer, FreelancerThe 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.

Andrés Uris
Software Developer, NaranjaXGreat 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

Juan Lasso
Del Valle UniversityThis 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!

Yehor Masalitin
Senior Software EngineerI'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 BandungI 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, DatabricksGo 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, FlexThis 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!

Michal Kozák
SRE, KeboolaPractice 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.

Mohamed Mirghani
Senior Backend Engineer, TweeqThe 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.

Vladimir Stankovic
Engineering Manager, Code ReflectThis 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!

Anirudh Nitin Bakare
Student, Northeastern UniversityThe 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 😁.

Kirill
Senior Python Backend Developer, CompelThis 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.

Geovanny Mendoza
Software Engineer, GeovannycodeThe 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, AtlassianI 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 GamesReally 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:
$450
$200
$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.
We help engineers grow up to the VP level — at least that's what they tell us.

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

That's the impact of our free DDD content.
Imagine what the full training will do.
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.
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.