Skip to main content
Next edition: Autumn 2026

Nail Your Complex
Go Backend

Become the backend engineer that companies beg to hire.
Learn to design and build backends that survive production.

Avatar 0Avatar 1Avatar 2Avatar 3Avatar 4Avatar 5Avatar 6Avatar 7Avatar 8
🔥 771 developers are already on board
6,900+ Go devs trainedWatermill 9,670 ★Wild Workouts Go DDD example 6,298 ★270K+ yearly blog readers

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

Petr Vitek

Developer
Previous training verified buyer

Complex domains need
real engineering

"Is there a way to build software fast without making it a maintenance nightmare?"

"Is the way I've been coding for the last 5 years the best way? Or are there teams that do it better?"

A couple of years ago, we worked on a product that succeeded quickly, but at some point hiring more people to write more code didn't help anymore. Despite best efforts of very talented people, it ended up stuck in maintenance mode for years.

AI won't fix this. It can produce code faster than you, but it will surface those architectural problems faster too. System design and domain modeling are the decisions you have to make. You can't afford to trust in ‘You are absolutely right.’

Most engineers never get the chance to work on a team where adding a feature doesn't break three other things. You repeat the same patterns because there's no time to learn through trial and error on production code.

The Domain Engineer gives you that missing experience. You work through the same decisions a well-run team would make, compressed into exercises you can do on your own schedule.

In this training we cover timeless skills that are a must-have for every engineer who wants to own technical decisions, not just be a coder. Doesn't matter if you are writing code by hand or doing AI-assisted coding.

You'll learn how to:

Find the right boundaries. Split modules in a way that speeds up, not slows down development.
Model the domain code. Keep business rules in one place, not scattered across services.
Write idiomatic Go. Clean patterns that were developed exclusively for Go, not ported from Java.
Know when to avoid overengineering. And when simpler patterns are enough.
Model the system on a high level. From Event Storming sessions to code running in production.

No more "I understand the theory but..."

Gopher with cup
Gopher of time

You can't buy time

Shortcuts work on a side project. They fall apart when three teams need to ship in the same codebase without breaking each other. We've been shipping production systems for 17 years. Long enough to know which shortcuts end in rewrites.

The Domain Engineer lets you skip the costly production mistakes and architectural dead-ends we already made. Years of hard-won lessons, distilled to what works.

Gopher of success

Real-world examples

Toy examples teach toy skills. Real projects have messy requirements and compromises.

In The Domain Engineer, every exercise comes from a scenario you'd hit on a real team. You'll build billing, settlements, and payout systems. The domain is complex enough that different parts need different tools: sometimes a simple CRUD is the right call, sometimes you need aggregates protecting domain invariants. You'll learn to tell the difference.

Practical Gopher

Hands-On

In real life, you don't work on projects alone. We'll work together as a team. We write the boring code. You write the most enjoyable and critical code.

Not videos you passively watch. Not theory you read and forget. You run a CLI command, write code in your IDE, and tests validate your solution immediately.

It's not another course that feels like homework. It's a training that feels like work on a world-class team.

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

Included with the training: early access to the Backend Masterclass beta
11 hands-on modules covering project setup, clean architecture, OpenAPI-first APIs, repositories, component testing, read models, and modular monolith design.
Future updates included.

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.

What do graduates like about our platform?

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

Damian Trzepała

Software Development Engineer
Previous training verified buyer

Don't miss the next edition

We are planning next edition of The Domain Engineer Autumn 2026. Usually it's available to buy for just two weeks period. Don't miss the next edition. Join the waiting list and be the first to know.