DEV Community

Sayantan Banerjee
Sayantan Banerjee

Posted on

How I Learned System Design in 5 Days | Roadmap for Interviews

“Good engineers write code.
Great engineers design systems.
Exceptional engineers understand why systems fail.”

I didn’t fully understand this truth in 2023.
But unknowingly, I was already walking toward it.

I didn’t know what I was building, only that I had to start.

So before every project, I’d pause, feel the paper under my fingers, hear the scratch of my pen, and draw boxes and arrows, like I was mapping a world I couldn’t yet see.

No rules. No frameworks. Just a restless, immature mind chasing a feeling.

At the time, I didn’t know :

  • whether I was thinking frontend or backend,
  • whether what I drew would scale or collapse,
  • or whether I was doing anything right.

What I did know was simple and stubborn: features without structure felt incomplete.

Back then, it felt amateur.
Today, I recognize it as instinct trying to find its language.

This is not a miracle story.
It’s a repeatable learning path from confusion to clarity, from scattered effort to structured thinking, and from “I don’t know what I’m building” to “I can reason about systems with confidence.”

Curiosity Without Structure Is Quietly Painful.

Like most developers, I could build features, follow tutorials, and ship small projects.

But the moment I started observing real production systems, something broke.

I couldn’t explain:

  • Why a particular architecture was chosen,
  • what trade-offs were made,
  • or how the system behaved under failure and scale.

Designing for latency, reliability, or security felt abstract.

Yet while watching logs, outages, bottlenecks, and recoveries, one thing
became clear: my direction of thinking was right but my way of learning was wrong.

That realization changed everything.

Trap Most Developers Fall Into (Me Too)

I did what most motivated learners do:

  • Watched endless YouTube playlists,
  • jumped between tutorials,
  • saved GitHub repos “for later,”
  • and collected PDFs, notes, and cheat sheets.

The result was predictable:

  • fragmented knowledge,
  • no mental model,
  • growing frustration,
  • and declining confidence.

I wasn’t lazy.
I was overloaded without a map.

Late nights turned into restless sleep.
Learning became pressure instead of curiosity.

That’s when I asked an uncomfortable question:
What if the problem isn’t my capability, but my learning strategy?

From Consuming Content to Thinking Like an Interviewer

I didn’t stop watching videos because they were bad.
I stopped because they lacked context.

Instead,

I began observing real systems:

  • how they behave under load,
  • where latency hides,
  • and how failures are anticipated, not avoided.

That’s when a core truth clicked for me:

System design isn’t about memorizing architectures.
It’s about reasoning under constraints.

My struggle was never complexity.
It was mixing levels of abstraction.

Senior engineers don’t simplify systems by ignoring details.
They simplify them by layering their thinking.

HLD vs LLD | The Mental Separation That Brings Order

Once I split these two mentally, the noise faded.

High-Level Design (HLD)

The bird’s-eye view of the system.

It focuses on identifying core components and how they interact, with attention to:

  • scalability under growing traffic
  • reliability during failures
  • availability across regions

operational simplicity for long-term maintenance.

In interviews, HLD answers:
“Can this system survive real-world scale?”

Low-Level Design (LLD)
The micro-level view of the system.

It deals with APIs, classes, schemas, and data models, focusing on:

  • performance and latency
  • maintainability and clean abstractions
  • correctness and edge-case handling

In interviews, LLD answers:
“Can this system be built and evolved safely?”

Once I stopped trying to design everything at once, interviews stopped feeling chaotic.

My question changed

From: “How do I design the whole system perfectly?”

To: “At this level of abstraction, what decision matters most right now?”

That single shift turned system design from theory into conversation.

The Beginning Is Always the Hardest

Let’s be honest :

  • I still struggled at the start.
  • I watched.
  • I took notes.

Yet I couldn’t confidently design even a simple system.

Curiosity slowly turned into frustration.
Passive scrolling replaced active thinking.

That’s when I accepted a truth many avoid:
Random learning kills motivation. Structured learning restores it.

So I paused everything and built my own System Design Syllabus.

Day 1 & Day 2 | Cover the Entire Syllabus

The goal wasn’t mastery.
And that distinction matters.

The goal was exposure, alignment, and building a mental map of what system design interviews actually expect.

Instead of deep-diving into implementations, I focused on understanding the purpose and trade-offs behind each concept.

For every topic, I asked four simple questions:

  • What problem does this solve?
  • How does it work at a high level?
  • Where is it used in real-world systems?
  • What breaks if it’s misused or scaled incorrectly?

This helped me build a complete mental model without drowning in details.

To stay structured, I created my own syllabus covering scalability, databases, caching, networking, reliability, and security.

If you’re starting out, you can use the same approach as your Day 1–2 roadmap.

Day 3 | When Logic Meets Art

Day 3 was intentionally quiet.
No videos. No notes. No code.

I slowed down.
I visualized systems.

I traced a single request moving through:
DNS → CDN → Load Balancer → Service

I watched:

  • cache hits vs. cache misses.
  • traffic spikes absorbed by queues.
  • failures triggering fallbacks, not panic.

There was no abstraction anymore only cause and effect.

That day taught me something critical:
you cannot design what you cannot visualize.

This is where engineering stops being mechanical and becomes intentional.

Day 4 & Day 5 | Designing a Real System

With eager,

I chose one problem:
design an X (Twitter)-like system.

Not to build it but to reason about it like in a real interview.
I assumed 1 million active users.

Everything flowed from that:

  • DNS + CDN for latency
  • API gateway for control
  • rate limiting, auth, caching
  • queues for traffic spikes
  • Redis + replicated databases for scale

Every component had:
a purpose,
a failure mode,
a scaling strategy,
and a clear trade-off.

It wasn’t perfect.
It wasn’t enterprise-grade.

But it was thoughtful.
And that’s what interviewers listen for.

What Changed After Those 5 Days

I started following one rule:
2 hours a day. Every day.

I practiced:

  • designing systems end-to-end
  • explaining trade-offs
  • analyzing failures
  • simulating interview discussions

Interviews stopped feeling like exams.
They became engineering conversations.

I don’t claim to know everything.
But I know how to reason when I don’t.
And that’s what system design interviews actually evaluate.

Final Thought

If you learn system design only to get a job, you’ll burn out.
If you learn how systems really work, opportunities follow naturally.

Master the process, not the outcome.
The results will take care of themselves.

If this resonated with you or challenged your thinking, I’d genuinely love to hear your perspective.

👉 Comment with your thoughts or questions.
👉 Share this with someone preparing for system design interviews.
👉 Connect with me.

Top comments (0)