System Design Interviews: Judgment Beats Familiar Diagrams

In system design interviews where candidates arrive with similarly familiar prepared diagrams, the diagram itself offers limited differentiation within the discussion.
A candidate can rehearse a URL shortener, news feed, or chat system and reach for the familiar components: Kafka for the event stream, Redis for the cache, sharded Postgres for the writes. If several candidates reach for the same components, naming them does little by itself to distinguish one discussion from another.
System design interviews have long assessed trade-offs, bottlenecks, failure handling, capacity, and operational judgment. Rubrics still vary by company and interviewer. Familiar preparation can standardize the recognizable shape of a competent design. In that situation, the useful differentiating signal within the interview discussion is how each candidate adapts the design to the actual workload, product risk, and operating constraints.
That judgment tends to become visible in five places: scope, targets, cost, failure behavior, and operations. In a particular interview discussion, naming any one of them in isolation may provide limited evidence of judgment. The signal comes from connecting a decision in each area to a specific requirement or risk.
Why familiar diagrams carry less signal
A box diagram gives the discussion a shared structure, but each box creates commitments the drawing alone does not resolve: where state lives, which consistency rules apply, how failures propagate, and what the team must operate.
A cache, queue, or sharding scheme earns its place only in context: the traffic pattern, consistency requirements, expected failure modes, operating burden, and cost of the alternatives. When preparation centers on recognizable system shapes rather than how to challenge them, architectural recall becomes easier to demonstrate than architectural judgment.
An interviewer can recover the missing signal with a few questions:
- What happens during a provider outage?
- Which operations are safe to retry?
- How would the design change under a tighter budget?
- Which subsystem deserves most of the remaining interview time?
- How would you know the system was failing before customers complained?
Answers to those questions can show whether the candidate understands what the diagram commits the company to operating.
One notification prompt, five judgment calls
Consider a prompt given to a senior candidate:
Design a notification platform used by two hundred internal services.
The complete system could include ingestion, routing, user preferences, email, SMS and push delivery, retries, analytics, compliance, and multiple external providers. Forty-five minutes is not enough to design all of it at equal depth.
The time limit makes prioritization part of the exercise.
1. Prioritize the risky part
Before drawing components, clarify what matters. Which notification classes are in scope? Which channels are required? Does ordering matter? What delivery guarantees do users expect? Are there consent or retention constraints that affect storage and routing?
Suppose the interviewer says that transactional and promotional notifications share the platform; email, SMS, and push are in scope; consent, suppression, retention, and channel-eligibility rules are already defined but must be preserved by routing; events require durable acceptance before acknowledgment; and provider latency and availability vary by channel. Those assumptions make cross-channel delivery behavior a reasonable focus. If the interviewer instead says that producers can send uncontrolled bursts without quotas, admission control and producer isolation may deserve the depth. Strict or unsettled consent rules could shift the focus to preference and compliance correctness.
Before narrowing the discussion, confirm the interviewer’s expected breadth and depth. Parking a subsystem prematurely can obscure an important requirement.
Then state the prioritization explicitly:
The hard problem here is delivery guarantees across channels with very different reliability. Assuming the consent, suppression, retention, and channel-eligibility rules are defined, I'll preserve those invariants at the routing interface, define the preference service's contract, and park its lower-risk storage and API details so we can spend our time on the delivery pipeline.
Preference management is real work in production. Under that assumption, its storage and API details are less likely, in this discussion, to determine whether the proposed system succeeds. A candidate who makes and confirms this prioritization provides evidence that they can identify where the risk lives and allocate their time accordingly.
2. Establish provisional targets
Targets should come from the product when possible. Ask whether the interviewer has requirements for durable acceptance latency, time to provider handoff, provider-reported outcomes, any observable end-user receipt, message loss, duplication, and cost.
These are distinct stages: durable platform acceptance, provider handoff, provider-reported outcome, and, where measurable, end-user receipt. Provider acceptance alone does not establish receipt.
When those targets are unavailable, state reasonable assumptions and make it clear that they are provisional.
For the notification platform, a candidate might assume that an event is acknowledged only after durable platform acceptance. They should state whether any guarantee ends there, at provider handoff, or at a provider-reported outcome; end-user receipt belongs in the guarantee only when the system can observe it. They might decide that a transactional notification should prefer a possible duplicate over silent loss, while a promotional message can tolerate more delay and may not justify the same delivery cost. Those are not universal policies. A password reset, payment receipt, and marketing campaign may require different behavior even when they share the same infrastructure.
This is more credible than inventing polished numbers with no basis. A target such as "p99 under 300 milliseconds at ten times the current load without more than doubling infrastructure spend" can make the trade-offs concrete, but only when the interviewer supplies it or the candidate labels it as an assumption.
Targets also give scaling a definition. Scaling does not simply mean handling more traffic. It means handling more traffic while continuing to meet latency, throughput, availability, and cost goals. Without those goals, there is no defensible way to decide whether a scaling change succeeded.
3. Connect the architecture to cost
A reasonable first pass might accept events through an ingestion service, write them to durable storage or a durable queue, route them by notification type and channel, and use channel-specific workers to call external providers.
That diagram starts the discussion. The judgment appears in the constraints attached to it.
Batching promotional email sends may improve throughput and reduce per-message provider costs, but it adds waiting time. That may be acceptable for a campaign and unacceptable for a password reset.
Separate worker pools can prevent an unhealthy SMS provider from consuming the capacity required for email delivery. The isolation can improve reliability, but it may require reserved headroom, reduce pooling efficiency, and add operational complexity.
Longer queue retention gives the system more time to recover from an outage, but increases storage cost and may conflict with privacy or data-retention requirements.
A secondary provider can improve availability only when its failure modes are sufficiently independent, its semantics are compatible, standby capacity and operational readiness exist, and failover is exercised under representative conditions. Even then, the cost and complexity may be high enough to reserve failover for high-value transactional messages rather than all traffic.
Capacity choices also depend on the shape of the workload. Predictable capacity may fit the baseline. Interruptible capacity can be useful for replayable overflow, but it is risky as the only capacity behind a latency-sensitive delivery path. Serverless execution may be economical at low, spiky volume and less attractive once utilization becomes steady enough that the elasticity premium no longer pays for itself.
In an interview discussion, listing any of these options by itself provides limited evidence of judgment. The useful signal is whether the candidate connects the choice to traffic shape, interruption tolerance, latency, and cost.
In this exercise, an exact cloud bill is less useful than identifying the primary cost driver, the workload variable that controls it, and the evidence that would cause the design to change.
4. Define failure behavior by dependency
"Replicated across three zones" does not finish the failure analysis. The design still needs a policy for each meaningful dependency.
If an email provider times out, the worker may not know whether handoff succeeded. It may retry with exponential backoff and jitter so a recovering provider is not immediately overwhelmed. But the retry is safe only when the operation is idempotent or the duplicate risk is acceptable. An idempotency key can help when the provider supports one. Provider-reported outcomes or reconciliation can resolve an uncertain handoff when the provider exposes enough information. Otherwise, the system may need a more conservative retry policy.
If a provider rejects a malformed request, repeating the same call will not help. The message should be isolated so it does not block the rest of the queue.
If one channel is unavailable, another channel may be an acceptable fallback for certain transactional notifications. But the product must permit that substitution, and the alternate channel cannot introduce a new consent, privacy, or cost problem.
The correct behavior depends on the customer harm associated with delay, duplication, stale data, or refusal. That principle applies well beyond notifications. If a recommendation service times out, a page may still render with a popularity-based fallback. If a payment provider is unavailable, failing loudly may be safer than an uncontrolled retry that risks charging the customer twice.
An answer provides clearer evidence of judgment when it defines the customer-visible result of each failure.
5. Instrument the failure chain
Operational mechanisms should be attached to the failures they are intended to detect or control.
For the notification pipeline, end-to-end tracing can show where an accepted event stalled on the path to provider handoff. Queue age can reveal rising delivery latency before aggregate throughput looks abnormal. Provider handoff attempts and provider-reported outcomes should be segmented by provider and channel so a failing integration is not hidden by healthy traffic elsewhere. Where end-user receipt can be observed, it should be measured separately; otherwise, a provider-reported outcome should not be presented as confirmed receipt.
Alerts should reflect customer-visible targets, such as delayed password resets or payment receipts, rather than firing only when CPU usage crosses a threshold.
A canary deployment can limit a worker release to a small share of traffic when a code change could affect delivery. A circuit breaker may help when repeated calls to a degraded provider would consume worker concurrency and spread the outage. In another dependency, bounded timeouts, concurrency limits, load shedding, or explicit failure may be the better protection.
An answer provides more evidence of judgment when it explains the failure chain each mechanism detects or interrupts. Naming tracing, canaries, circuit breakers, and retries without that connection simply replaces an architecture checklist with an operations checklist.
Practice decisions, not component recall
Use each practice attempt to test whether new evidence changes the design. After presenting the notification pipeline, revisit one decision with a different delivery boundary, consent rule, provider failure, or budget. Identify which components or policies change and why. If the answer remains unchanged, the next attempt should focus on the unsupported assumption or generic component choice that prevented adaptation.
The diagram still matters as shared structure for the discussion. The durable preparation strategy is to spend less time memorizing which boxes belong in it and more time explaining why each choice fits the workload, product risk, and operating constraints.