Skip to contentSkip to content

About The Engineer's Handbook

Why This Exists

System design is one of the most important skills for software engineers, yet quality learning resources are scattered across books, blogs, and paid courses. This handbook consolidates the most important concepts into a single, free, open-source reference.

After years of preparing for interviews, mentoring engineers, and building distributed systems in production, I found myself writing the same explanations repeatedly. This handbook is that knowledge — organized, illustrated, and freely available so every engineer can access it regardless of budget or geography.

Who Is This For?

  • Engineers preparing for system design interviews — structured chapters with practice questions at every level
  • Mid-level engineers growing into senior roles — deep dives into architecture patterns and trade-offs
  • Tech leads and architects — comprehensive reference for distributed systems concepts
  • Anyone curious about how large-scale systems work — case studies of real-world systems

How It's Built

  • 31 chapters — 25 on system design + 6 on design patterns
  • 27 design patterns with practical Go BEFORE/AFTER code
  • 200+ Mermaid diagrams for visual learning
  • Comparison tables for quick decision-making
  • Practice questions with difficulty levels and hints
  • Code examples in Go for key patterns (caching, rate limiting, gRPC, WebSocket)
  • Built with VitePress and the Dracula color theme

Credits & Inspiration

This handbook draws inspiration from several excellent resources:

  • "System Design Interview" by Alex Xu (Volumes 1 & 2)
  • "Designing Data-Intensive Applications" by Martin Kleppmann
  • "Site Reliability Engineering" by Google
  • "Building Microservices" by Sam Newman
  • The System Design Primer by Donne Martin
  • ByteByteGo by Alex Xu

All interpretations, diagrams, code examples, and additions are original work.

Contributing

Contributions of all sizes are welcome. Here's how to get involved:

  1. Report an error — Open an issue on GitHub with the chapter name and a clear description.
  2. Suggest improvements — Open a discussion or issue with your idea before writing code.
  3. Submit a pull request — Fork the repo, create a feature branch, make your changes, and open a PR against main. Keep PRs focused on a single chapter or concern.
  4. Fix typos or diagrams — Even small fixes are appreciated. No issue required for obvious corrections.

Please ensure all Mermaid diagrams render correctly (npx vitepress dev) before submitting. By contributing you agree that your work will be released under the MIT License.

Author

Built by Bach Duong — a software engineer who enjoys learning and sharing technical knowledge.

If this handbook helped you land a role, level up your skills, or simply understand a concept more clearly — that's the whole point. Feel free to reach out.

Last updated:

Comments powered by Giscus. Enable GitHub Discussions on the repo to activate.

Built with VitePress + Dracula Theme