Nail Your Complex
Go Backend
Become the backend engineer that companies beg to hire.
Learn to design and build backends that survive production.
Next cohort: Autumn 2026. Join the waiting list now and get the ebook and the mini-course right away.
Engineers learning with us work at
One of the most valuable backend courses I've taken. The training combines solid theory with practical implementation, making it easy to apply the concepts directly to real projects. I've already used several of the patterns and architectural approaches at work with great results.
The content is relevant, well-structured, and focused on real-world challenges. I highly recommend it to backend engineers who want to improve their system design and architecture skills.
Thanh Dao
Software Engineer, Airtasker · Verified buyerEvery exercise is a change
you'd ship at work.
You build a food delivery platform module by module, with feedback in seconds. Theory comes in small pieces, right when you need it.
We've been shipping production systems for 17 years. The Domain Engineer lets you skip the mistakes and dead ends we already made.
What will you learn?
Each exercise is a focused, small change. You can finish something meaningful even in a 5-minute session.
Together, we'll build a global food delivery platform from scratch. ~20,000 lines of production Go. Each module needs different patterns. You'll learn when to use which.
The Domain Engineer is a cohort-based training. Modules start releasing weekly after the sale ends. Finishing a week's work requires between 4 and 6 hours of coding for a senior developer.
Going with the cohort is optional. You can go over the exercises at your own pace.
See the full agenda below.
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
- Common traps making codebases unmaintainable
What you will learn
- Know which patterns are worth adopting and which add unnecessary overhead
- Present improvements in terms your team and management care about
- Introduce changes incrementally without disrupting ongoing work
What you will learn
- Apply Clean Architecture so domain logic stays independent of infrastructure
- Create clear boundaries between domain, application, and infrastructure layers
- Organize code that multiple teams can work on without stepping on each other
What you will learn
- Use bounded contexts to split large projects into independent modules that teams can own
- Define clear contracts between different parts of your system
- Decide when to extract a separate module and when to keep things together
What you will learn
- Model business rules that reflect real-world problems
- Use factories to handle complex object creation with external dependencies
- Write tests that catch business logic errors, not only technical bugs
What you will learn
- Design the transactional boundaries of your domain model
- Protect data consistency in complex scenarios without database locks
- Handle concurrent operations and bulk updates efficiently
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
- Build a ubiquitous language to communicate effectively with product managers, designers, and domain experts
- Reduce time spent on requirement clarifications and bug fixes
- Create a shared vocabulary that evolves with your project
What you will learn
- Distinguish core domain from supporting code to focus your design effort
- Apply complex patterns only where they have the highest impact
- Stop wasting time on areas that don't need sophisticated modeling
What you will learn
- Understand what users need, not only what's in the ticket
- Extract requirements that translate directly into code structure
- Collaborate with domain experts to build better models
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
- Protect your code from breaking when external systems change
What you will learn
- Learn how to emit domain events to decouple parts of your system
- Understand the basics of 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
- Shield your domain from external API changes and data models
- Design adapters that isolate your core business logic
What you will learn
- Map between database models and domain objects effectively
- Choose between ORMs, query builders, and raw SQL for your domain complexity
- 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
What you will learn
- Write tests that verify business rules, not only technical correctness
- Test complex domain scenarios without complicated test setup
- Use domain tests as living documentation for business rules
No prerequisites from our other trainings
The Domain Engineer builds on the project from our Go Backend Masterclass, but you don't need it to join: you start with the complete codebase, and the first module recaps all the patterns it uses.
Stay in your environment. Use your favorite tools.
Real-life projects don't happen in the browser. We let you stay with your favorite tools. VS Code, GoLand, Vim, Emacs? It's up to you.
You want to write all code by hand? Or use Claude, Copilot or Cursor? Our training is compatible with AI-assisted coding.
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.
You can solve the exercises at any time that suits you best. You can start the training now, in a week, or a year.
Real reviews of our trainings
See what professional developers say about our trainings.
Nicolás Palumbo
Senior Software Engineer, New Relic · Verified buyerThis training goes in depth on a practical project using DDD, explaining as much theory as required to understand what's coming next. The outcome is a neat multi-module codebase that you build on your own with guidance, a working domain model with aggregates, entities and value objects that work well for the domain under question.
The course it's not easy peasy, it requires some time, but you definitely come out learning something.
Petr Vitek
DeveloperPrevious training verified buyer
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.
Damian Trzepała
Software Development EngineerPrevious training verified buyer
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.
Dima Kotik
ProgrammerPrevious training verified buyer
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.
Tobias Andersson
Site Reliability EngineerPrevious training verified buyer
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.
JP Fontenele
Senior SWEPrevious training verified buyer
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.
Vladimir Stankovic
Engineering Manager, Code ReflectPrevious training verified buyer
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!
Mohamed Mirghani
Senior Backend Engineer, TweeqPrevious training verified buyer
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.
Michal Kozák
SRE, KeboolaPrevious training verified buyer
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.
Muhammad Ilham Hidayat
Software EngineerPrevious training verified buyer
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.
Kacper Siuda
DevOpsPrevious training verified buyer
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.
Viacheslav Ostrovskii
Software developerPrevious training verified buyer
That is a great idea to wrap up all information about event-driven systems in Go and put it in a training with a convenient platform. I must admit quality of training parts, there are 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 developerPrevious training verified buyer
Good training for understanding event driven design of applications, with the use of 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.
Cristo Sun
Senior developerPrevious training verified buyer
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.
Thanh
Fullstack DeveloperPrevious training verified buyer
The training is so great to help me understand concepts of event-driven architecture, 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. Thank you for all awesome work!
Gyanendra Singh
Full stack DeveloperPrevious training verified buyer
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.
Luís Pinto
Backend EngineerPrevious training verified buyer
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!
Fernando Munoz
Developer & Tech Chief, MicroplanPrevious training verified buyer
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.
Sebastian Will
Software Developer, FreelancerPrevious training verified buyer
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.
Daniel Fenert
Architect, G2A.comPrevious training verified buyer
Very good training that systemizes essential Go knowledge with simple exercises. Good value for money.
Bilal Islam
Senior Developer, FreelancerPrevious training verified buyer
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.
Andrés Uris
Software Developer, NaranjaXPrevious training verified buyer
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
Juan Lasso
Del Valle UniversityPrevious training verified buyer
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!
Yehor Masalitin
Senior Software EngineerPrevious training verified buyer
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.
Anirudh Nitin Bakare
Student, Northeastern UniversityPrevious training verified buyer
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.
Kirill
Senior Python Backend Developer, CompelPrevious training verified buyer
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.
Geovanny Mendoza
Software Engineer, GeovannycodePrevious training verified buyer
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.
Dave Chapman
Engineering Lead, Epic GamesPrevious training verified buyer
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!
Max Wolffe
Sr. Software Engineer, DatabricksPrevious training verified buyer
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.
Freddy Fostvedt
Machine Learning Systems Engineer, AtlassianPrevious training verified buyer
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.
Created by
Miłosz Smółka & Robert Laszczak
Three Dots Labs founders
Over the last couple of years, we gained the trust of the Go community by sharing what we know. We are the authors of the Three Dots Labs blog (270K+ unique visitors per year), and our e‑book: Go With The Domain (60K+ downloads).
We are also authors of the Watermill library (9,888 ★ on GitHub), 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. Along the way, 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.
So far, 7,400+ Go developers have trusted us with their learning.
The cohort isn't open yet.
Get a head start for free.
The Domain Engineer opens Autumn 2026, for two weeks. Leave your email and you get, today:
- Go with the Domain, our free ebook: 221 pages on Go backends that stay easy to change, with a real open-source project you can run. Agents imitate the code they find: tangled domain logic multiplies with every prompt. The ebook is the theory behind The Domain Engineer: the DDD, Clean Architecture, and CQRS you'll practice in the training. Downloaded by 60,000+ developers.
- The email mini-course: 15 short lessons on the patterns behind production Go, one a week. Clean Architecture in Go, the repository pattern, introducing CQRS, combining it all with DDD.
- First to know when the next cohort opens. Sales run twice a year, for two weeks each. The list gets you the date in time for the next one, not six months later.
60,000+ downloads