Asking better questions and senior-level signals
We'll cover the following
Two acronyms, two columns: ACTORS and SCALED
Questions come from a checklist, not inspiration. Split the whiteboard into two columns and fill each with its own acronym. ACTORS gives you the functional requirements (what the system does). SCALED gives you the non-functional ones (how well it must do it). Say the two words in your head the moment the prompt ends.
| Column | Acronym | Answers | Time |
|---|---|---|---|
| Functional | ACTORS | What does it do, for whom, and what is out of scope? | ~2 min |
| Non-functional | SCALED | How big, how fast, how reliable, how correct, how safe? | ~3 min |
| Later, per box | 4 what-ifs | Slow, down, duplicated, 100x bigger | during deep dive |
ACTORS: functional questions
| Letter | Ask about | The deep ones people miss |
|---|---|---|
| Actors | Who uses it? | Different user types (end user, admin, internal service, bot)? Anonymous or logged in? Do they see different things? |
| Core flows | The 2-3 things it must do | Which single flow matters most? What is the happy path, step by step? |
| Triggers and inputs | How does work start? | User action, API call, event from another service, or a schedule? What does the request carry? Bulk or single? |
| Outputs | What comes back? | What does the user see or get (response, feed, notification, file)? Ordering, filters, search, pagination? Real-time push or pull? |
| Rules | Business rules | Permissions and sharing, limits per user, user preferences (opt-out, quiet hours), priorities, expiry. |
| Scope and lifecycle | What is in, out, and for how long? | Out of scope (say it aloud)? v1 or replacing an old system? Can items be edited, deleted, expired, restored? Which platforms? |
SCALED: non-functional questions
| Letter | Ask about | The deep ones people miss |
|---|---|---|
| Security and privacy | Who may do what, and what is sensitive? | Authentication and authorization, PII, encryption, abuse and spam, rate limiting, delete/GDPR and audit rules. |
| Count | Users, QPS, payload size, read:write ratio, growth | Peak vs average (10x bursts?). Skew: hot keys, celebrity users. How much data in total, and how long do we keep it? How many regions? |
| Availability | What if a part is slow or down? | Which flows must never go down and which may degrade? What happens if a queue, a dependency or a whole region fails? Recovery target? |
| Latency | Which flows are time-critical? | Is the user waiting, or can it be async? p99 target, not only the average? Is slightly stale data okay, and for how long? |
| Exactness | Can we lose it, duplicate it, reorder it? | Strong or eventual consistency? Must retries be idempotent? At-least-once plus dedupe, or truly exactly-once? Money or audit trail involved? |
| Dependencies and dollars | Third parties, cost, operations | Third-party rate limits and cost per call. Budget per user. How do we monitor it, roll it out (flags, canary) and migrate from the old system? |
When to ask: the first phase, and again later
- Minutes 0-5: ACTORS and SCALED, all of it. Write answers in two columns (Functional, Non-functional) and put numbers next to Count. These choose your design, so do not draw anything before you have them.
- Minutes 5-10: turn answers into estimates. Count gives QPS and storage. Write "Hard part: ..." at the bottom of the board (the one letter that was unusual, like bursts or ordering).
- Deep dive: ask again, but per box. Now the four what-ifs (slow, down, duplicated, 100x bigger) on each component. These are the "deep" questions you keep missing, and they only make sense once boxes exist.
- Last 5 minutes: where it breaks at 10x, what you would monitor, what you would build differently.
A 5-minute opening you can say out loud
"Before designing, let me clarify. Functional first:
A who are the users: end users only, or admins too?
C the core flow is X, is that right? Anything else for v1?
T does it start from a user action, an API, or a schedule?
O what does the user get back, and does it need to be real time?
R any rules: permissions, limits, opt-outs?
S what is out of scope, and can items be edited or deleted?
Now non-functional:
S anything sensitive: PII, auth, abuse, compliance?
C how many users and requests per second? Peak? How much data, kept how long?
A what must never go down, and what can degrade?
L which part must be fast, and what is the target?
E can we lose, duplicate or reorder? Strong or eventual consistency?
D any third parties with limits or cost, and a budget?"Check yourselfThe prompt is "design a notification system". Which SCALED letters are the special ones?
Count (a marketing burst to 100M in minutes), Exactness (duplicate OTP is bad, a lost marketing push is fine), Dependencies (SMS and email providers have rate limits and cost), and Latency (OTP in under 5 s, marketing can wait). Name these as the hard part early and spend your deep dive there.
How to practice
- After each design, write one line: "what made this problem special?" Notifications: bursts + priority + dedupe. URL shortener: read-heavy + key lookup. After 6-8 problems you have a pattern library.
- When stuck, say a trigger phrase aloud instead of going silent: "Let me think about failure modes" or "Let me check the data model". It buys time and shows structure.
- Drill one problem a day with the System Design cards in the Reels section.
Senior-level signals
- You drive the interview. "I will spend 5 min on requirements, 10 on the high-level design, then deep-dive where it is hardest. Okay?" Check in as you go.
- You name trade-offs, with costs. Not "I would use Kafka" but "Kafka for replay and throughput, at the cost of operational complexity; at small volume SQS is simpler".
- The numbers choose the design. "At 40 writes/s one Postgres plus a cache is enough." Not over-engineering is itself a signal.
- You find the hard part early and say it: "The hard part is the 100x burst and OTP priority, so I will spend my time there."
- You raise failure unprompted: retries, duplicates, a dependency down, a hot key, a region outage.
- You think in time and evolution: v1 is simple, what changes at 10x and 100x, and how to migrate from the old system safely.
- You bring operations and people: monitoring and alerts, rollout (feature flags, canary), cost, which team owns which service.
- You push back politely when requirements conflict: "Strong consistency and 5 ms global latency cannot both hold, so which matters more?"
Three questions for the last five minutes
- Where would this break first at 10x scale?
- What would I monitor?
- What would I build differently with more time?
Summary: say it in the interview
- Skip any letter that does not apply, but skip it on purpose ("no payments here, so Exactness is relaxed"). Skipping out loud also scores as a signal.
- For every box you draw, ask four things: what if it is slow, down, duplicated, or 100x bigger? Slow leads to timeouts and backpressure. Down leads to retries, fallback and DLQ. Duplicated leads to idempotency keys. 100x bigger leads to sharding, hot keys and caching.