System Design the Agentic Way
I wanted to learn system design. Not "memorize CAP theorem for interviews" learn — actually understand why things break at scale and what to do about it.
The problem: most resources give you theory without pain. You read about load balancers without ever watching one fail. You learn about replication without seeing stale data appear in front of you.
So I built something different.
The Idea
What if I had a pair-programmer that:
- Starts every topic with a real production failure (so I feel why it matters)
- Makes me predict what will happen before I run anything
- Forces me to build minimal prototypes, not just read
- Then makes me break them deliberately
- And finally tests my judgment with ambiguous 3am scenarios
That's what I built — using GitHub Copilot's custom agents and skills as a structured teaching system.
The Curriculum
12 phases. Each one builds on the previous. No skipping.
| Phase | What Goes Wrong Without It |
|---|---|
| 1. Single Machine Ceiling | Your server hits 15K connections and starts refusing |
| 2. Stateless Horizontal Scaling | You deploy and lose 47 payments during the restart |
| 3. Data Storage Trade-offs | Redis crashes and your last 30 seconds of writes vanish |
| 4. Caching & Invalidation | Users see stale prices and buy at the wrong amount |
| 5. Async Processing & Queues | Payment service is down for 2 seconds, 500 orders lost |
| 6. Replication & Consistency | Read replicas serve yesterday's data as if it's current |
| 7. Partitioning & Sharding | One customer has 90% of the data, hot partition melts |
| 8. Coordination & Consensus | Two nodes both think they're the leader, split-brain |
| 9. Service Decomposition | Distributed transaction fails halfway, money vanishes |
| 10. Observability | Something is wrong. You have no idea what. |
| 11. Resilience Patterns | One slow dependency freezes your entire service |
| 12. Capacity Planning | Black Friday hits 10x predictions, everything collapses |
The Method
Every phase follows the same loop:
Motivate → Model → Decide → Build → Break → Gate
🔥 War Story → Feel the pain
🧠 Concepts → Understand the mechanism
⚖️ Trade-off → Pick an approach (and own the downsides)
🔨 Build → Minimal prototype with real code
💥 Break It → Deliberately kill components
🎯 Gate Check → Scenario-based judgment test
The "Break It" step is where most of the learning happens. My prediction is almost always wrong the first time. That gap — between what I expected and what actually happened — is the lesson.
The Tooling
The whole system runs inside VS Code using GitHub Copilot's custom agent features:
- 5 agents — instructor, gate-keeper, adversary, reviewer, orchestrator
- 8 skills — war stories, concept deep-dives, prototype specs, failure labs, etc.
- Knowledge files — real production patterns, failure catalogs, anti-patterns
- Learning journal — auto-captured insights, predictions, and mistakes
The agents don't give me answers. They ask me to predict, let me fail, then explain why.
Where I Am
I've completed Phase 1 (single machine limits) and Phase 2 (horizontal scaling with Docker + Nginx + Redis). In the next posts, I'll walk through each phase — what I built, what I broke, and what surprised me.
Try It Yourself
The full system is open source:
What I'd Love From You
- ⭐ Star the repo if this approach resonates
- 🐛 Open issues if something's broken or confusing
- 💡 Suggest improvements to the curriculum
- 📝 Tell me: how do YOU learn system design? What works? What doesn't?
Next up: Phase 1 — The Single Machine Ceiling. I'll show you what happens when 15,965 TCP connections hit one Node.js process, and what it taught me about operating systems.
Follow for the full series. Each post covers one phase of the journey.
Clone it, open in VS Code with Copilot, and start Phase 1. All you need is Node.js and Docker.
What I'd Love From You
- ⭐ Star the repo if this approach resonates
- 🐛 Open issues if something's broken or confusing
- 💡 Suggest improvements to the curriculum
- 📝 Tell me: how do YOU learn system design? What works? What doesn't?
Next up: Phase 1 — The Single Machine Ceiling. I'll show you what happens when 15,965 TCP connections hit one Node.js process, and what it taught me about operating systems.
Follow for the full series. Each post covers one phase of the journey.
Top comments (0)