PPrepLearn
Progress Β· 0/5 phases

🧩 🧩 90-Day LLD Roadmap β€” Low-Level System Design

4 min read Β· Notion

🧩 Frontend β†’ Systems Engineer transition. 90 days. 5 phases. Low-Level Design mastery from OOP fundamentals to production-grade class architecture.


πŸ“Œ How to use this template

  • Work phases in strict order β€” every phase builds on the last
  • Daily ritual: study the concept β†’ implement it in code β†’ review your own code against the principles β†’ log one mistake
  • Use the Daily Tracker to stay accountable
  • Open each Phase page for full breakdowns, code problems, real-world references, and mistake corrections

πŸ’‘ The #1 rule of LLD: A design that cannot be changed without touching 10 files is a failed design. Every principle in this roadmap exists to make change cheap and isolated.


πŸ—ΊοΈ Roadmap at a glance

PhaseDaysFocusKey Output
Phase 1 β€” OOP & SOLID FoundationsDays 1–15OOP pillars, SOLID, UML, design thinkingSolid mental model for every future design
Phase 2 β€” Design PatternsDays 16–3523 GoF patterns, when to use each, anti-patternsPattern recognition in code reviews
Phase 3 β€” Core LLD ProblemsDays 36–55Parking Lot, Chess, Elevator, Vending Machine6 fully designed + coded systems
Phase 4 β€” Advanced LLD ProblemsDays 56–75Rate Limiter, Cache, Pub-Sub, Payment, Ride-share5 production-grade class designs
Phase 5 β€” Expert LLDDays 76–90Concurrency, thread safety, code review methodologyStaff-level design + review skills

⚑ The LLD Design Framework

Use this structure for every low-level design β€” interview or production.

  1. Clarify requirements β€” functional (what it does) + constraints (what it must not do)
  2. Identify entities β€” nouns in the problem are your classes
  3. Define relationships β€” inheritance vs composition vs association
  4. Apply SOLID β€” check each principle against your design
  5. Select patterns β€” which GoF pattern solves the extensibility problem?
  6. Draw UML β€” class diagram + sequence diagram for key flows
  7. Write the interface first β€” code the contract before the implementation
  8. Review for change β€” if requirement X changes tomorrow, which classes change? Should be ≀1.

πŸ“Š My progress

  • Current phase: Phase 1
  • Current day: Day 1 of 90
  • LLD problems fully designed: 0 / 11
  • Design patterns recognised in code: 0 / 23

  • πŸ—οΈ Phase 1 β€” OOP & SOLID Foundations
  • 🧩 Phase 2 β€” Design Patterns
  • πŸ—‚οΈ Phase 3 β€” Core LLD Problems
  • βš™οΈ Phase 4 β€” Advanced LLD Problems
  • 🧠 Phase 5 β€” Expert LLD

πŸ“ SOLID Principles β€” quick reference

PrincipleOne-line definitionViolation smell
S β€” Single ResponsibilityOne class, one reason to changeClass name contains β€˜And’, β€˜Manager’, β€˜Helper’
O β€” Open/ClosedOpen for extension, closed for modificationAdding a feature requires editing existing code
L β€” Liskov SubstitutionSubclass can replace superclass without breaking anythingSubclass throws UnsupportedOperationException
I β€” Interface SegregationNo client should depend on methods it doesn’t useInterface has 15 methods, clients implement 3
D β€” Dependency InversionDepend on abstractions, not concretionsnew ConcreteService() inside a business class

πŸ’» Language recommendation

Use Java or Go for all LLD implementations in this roadmap.

  • Java: Native OOP, interfaces, abstract classes, generics, synchronized. Most LLD interview solutions are in Java. Best choice if targeting product companies.
  • Go: Interfaces via duck typing, goroutines for concurrency problems, no inheritance (composition only). Best choice if you’re already on the backend Go path.
  • Avoid: Python for LLD β€” dynamic typing hides design problems that static typing would catch.

πŸ“… LLD Daily Tracker

Related