Menu
Course/Interview Strategy/The RESHADED Framework

The RESHADED Framework

A systematic approach to system design interviews: Requirements, Estimation, Storage, High-level design, API, Detailed design, Evaluation, Distinctive features.

15 min readHigh interview weight

Why You Need a Framework

System design interviews are deliberately open-ended. The interviewer gives you a vague prompt — "Design Twitter" or "Build a notification service" — and then watches how you decompose ambiguity into structure. Without a repeatable framework, most candidates either ramble without direction or dive straight into implementation details before agreeing on the problem. Both patterns signal poor engineering judgment.

The RESHADED framework gives you a consistent mental checklist that ensures you cover every dimension an interviewer cares about, in the right order. It stands for: Requirements, Estimation, Storage schema, High-level design, API design, Detailed design, Evaluation, Distinctive component.

💡

Interview Tip

Open every interview by saying: "I'd like to walk through this systematically — first clarify requirements, then estimate scale, then design from the top down. Does that work for you?" This immediately signals structured thinking and buys you a few seconds to compose yourself.

The Eight Steps of RESHADED

Loading diagram...
The RESHADED framework — eight sequential phases of a system design interview answer

R — Requirements

Start by separating functional requirements (what the system must do) from non-functional requirements (how well it must do it). Ask clarifying questions to pin down scope. Never assume — interviewers reward candidates who ask smart questions because it mirrors real engineering work.

Functional RequirementsNon-Functional Requirements
Users can post tweets99.99% availability (52 minutes downtime/year)
Users can follow other usersReads must return in < 200ms at p99
Timeline shows latest tweetsSystem must handle 100M daily active users
Users can like and retweetEventual consistency is acceptable for timelines
💡

Interview Tip

Limit your clarifying questions to 3-5 targeted questions. Ask about: scale (how many users?), read/write ratio (read-heavy or write-heavy?), consistency requirements (is stale data acceptable?), and any explicit out-of-scope features. Avoid asking things you should already know.

E — Estimation

Back-of-the-envelope math grounds your design in reality. Estimate QPS (queries per second), storage requirements, and bandwidth needs. These numbers drive every subsequent decision — whether you need sharding, caching, CDNs, and how many servers to provision.

📌

Example: Twitter Timeline Estimation

100M DAU, 50M post tweets/day → ~580 writes/sec. 500M read timeline requests/day → ~5,800 reads/sec. Read:Write ratio ≈ 10:1 (read-heavy). Average tweet = 300 bytes. Storage: 50M tweets/day × 300 bytes = 15GB/day → 5.4TB/year for tweet text alone (before media).

S — Storage Schema

Choose your database type (SQL vs NoSQL, relational vs document vs column-store vs graph) and define your primary data models. Explain the access patterns driving your choice. Identify your primary keys and how you will handle sharding keys to avoid hot spots.

H — High-Level Design

Draw the system's major components on a whiteboard: clients, load balancers, application servers, databases, caches, CDNs, and message queues. At this stage, stay at the service boundary level — do not detail internal algorithms yet. Get alignment from the interviewer before going deeper.

A — API Design

Define the public API contracts for your core operations. Specify endpoints, HTTP methods, request parameters, and response shapes. Good API design demonstrates that you think about the client experience and not just the server internals.

http
# Post a tweet
POST /v1/tweets
Authorization: Bearer {token}
Content-Type: application/json

{
  "text": "Hello, world!",
  "media_ids": ["m_123", "m_456"]
}

# Response
HTTP 201 Created
{
  "tweet_id": "t_789",
  "created_at": "2024-01-15T10:30:00Z",
  "author_id": "u_456"
}

# Get home timeline
GET /v1/timeline?cursor={cursor}&limit=20
Authorization: Bearer {token}

# Response
HTTP 200 OK
{
  "tweets": [...],
  "next_cursor": "eyJ0aW1lc3RhbXAiOiAxNzA1MzE0MjAwfQ=="
}

D — Detailed Design

Zoom in on the two or three most technically interesting components. The interviewer will often guide you here — follow their lead. This is where you discuss fan-out strategies, sharding schemes, consensus algorithms, or custom data structures. Demonstrate depth without losing the big picture.

E — Evaluation

Critically evaluate your own design. Identify failure modes (what happens when the database goes down?), bottlenecks (which component hits capacity first?), and trade-offs (what did you sacrifice for performance?). This self-evaluation shows engineering maturity — great engineers know the limits of their own designs.

💡

Interview Tip

Say something like: "Let me stress-test my own design. The weakest point is probably the fan-out service under celebrity write load. I'd address this with a hybrid fan-out model where users with fewer than 10k followers get write-time fan-out, and celebrities get read-time fan-out." Proactively identifying weaknesses and proposing mitigations is a senior-level signal.

D — Distinctive Component

Every great system design answer has a "wow moment" — one area where you go noticeably deeper or propose something non-obvious. This could be a clever sharding scheme, a specific algorithm for ranking, an unusual caching strategy, or a reliability pattern from a real-world system you've studied. The distinctive component is what interviewers remember after the interview.

💡

What Makes a Good Distinctive Component

It should be directly relevant to the core challenge of the problem, technically grounded (not hand-wavy), and something you can explain clearly in 2-3 minutes. Good examples: Twitter's timeline cache pre-population for celebrities, Google's consistent hashing with virtual nodes in Chubby, or Kafka's log-structured storage for throughput.

RESHADED at a Glance

PhaseLetterKey OutputTime Allocation
RequirementsRFunctional + non-functional list, scope confirmed5 min
EstimationEQPS, storage, bandwidth numbers3 min
Storage SchemaSDB choice justified, data model sketched3 min
High-level DesignHComponent diagram, data flow drawn7 min
API DesignACore endpoints defined with request/response5 min
Detailed DesignDTwo or three components explored deeply10 min
EvaluationEBottlenecks, failure modes, trade-offs named4 min
Distinctive ComponentDOne standout insight or deep-dive3 min
📝

Knowledge Check

5 questions

Test your understanding of this lesson. Score 70% or higher to complete.

Ask about this lesson

Ask anything about The RESHADED Framework