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
| Phase | Days | Focus | Key Output |
|---|---|---|---|
| Phase 1 β OOP & SOLID Foundations | Days 1β15 | OOP pillars, SOLID, UML, design thinking | Solid mental model for every future design |
| Phase 2 β Design Patterns | Days 16β35 | 23 GoF patterns, when to use each, anti-patterns | Pattern recognition in code reviews |
| Phase 3 β Core LLD Problems | Days 36β55 | Parking Lot, Chess, Elevator, Vending Machine | 6 fully designed + coded systems |
| Phase 4 β Advanced LLD Problems | Days 56β75 | Rate Limiter, Cache, Pub-Sub, Payment, Ride-share | 5 production-grade class designs |
| Phase 5 β Expert LLD | Days 76β90 | Concurrency, thread safety, code review methodology | Staff-level design + review skills |
β‘ The LLD Design Framework
Use this structure for every low-level design β interview or production.
- Clarify requirements β functional (what it does) + constraints (what it must not do)
- Identify entities β nouns in the problem are your classes
- Define relationships β inheritance vs composition vs association
- Apply SOLID β check each principle against your design
- Select patterns β which GoF pattern solves the extensibility problem?
- Draw UML β class diagram + sequence diagram for key flows
- Write the interface first β code the contract before the implementation
- 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
π Quick links
- ποΈ 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
| Principle | One-line definition | Violation smell |
|---|---|---|
| S β Single Responsibility | One class, one reason to change | Class name contains βAndβ, βManagerβ, βHelperβ |
| O β Open/Closed | Open for extension, closed for modification | Adding a feature requires editing existing code |
| L β Liskov Substitution | Subclass can replace superclass without breaking anything | Subclass throws UnsupportedOperationException |
| I β Interface Segregation | No client should depend on methods it doesnβt use | Interface has 15 methods, clients implement 3 |
| D β Dependency Inversion | Depend on abstractions, not concretions | new 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