01Use the FACT frame
Frame constraints, Alternatives, Consequences, Take a position. Compare on the few dimensions that matter: correctness, latency, scale, complexity, cost, and organizational fit.
A useful comparison begins with a deciding constraint. For an interactive status stream, suppose the browser only receives updates and must reconnect after drops. Compare SSE with WebSockets on one-way streaming, replay protocol, deployment support, and operational complexity. If no bidirectional requirement exists, SSE may meet the contract with less machinery. Adding bidirectional presence later could change the choice.
Write the alternatives fairly. Do not compare a carefully operated database with an imaginary alternative that has no backups or indexes. Include migration cost, operational knowledge, team size, and failure behavior alongside latency and throughput. A provider service can reduce infrastructure ownership while adding dependency, pricing, and capability constraints.
Finish with a decision, its main downside, and a measurable reversal trigger. “We choose one relational primary; revisit after representative tests show write saturation despite query and index fixes” is reviewable. “We might use NoSQL later” is not a trigger because it names neither the observed problem nor the condition under which the alternative helps.
- Reject false binaries; hybrids are valid when justified
- Do not hide operational cost
- Say which requirement dominates
02Optimize for the current horizon
The simplest architecture that meets projected scale is usually strongest. Preserve seams for growth, but do not pay distributed-system costs before they buy something.
Architecture has a planning horizon. A system expected to handle 2k writes/s in the next year does not automatically benefit from the same topology as one handling 2M. Estimate the workload and growth, choose headroom, and state what is uncertain. If the growth estimate is weak, preserve a migration seam instead of implementing every future scale mechanism now.
Reversibility changes how much evidence you need. Changing a cache TTL is relatively cheap; moving an established data model across stores can be expensive. Spend more analysis on ownership, identifiers, and durable contracts, because other parts accumulate around them. Keep technology choices behind clear boundaries when that makes a later migration feasible.
A migration trigger needs a migration outline. If the trigger is tenant skew, explain whether you will split a tenant, add subkeys, or move it to dedicated capacity. Say how reads find the new owner and how writes avoid double ownership during transition. This demonstrates that simplicity today is a deliberate choice with a credible next step.
- Scale estimates define the horizon
- Operational familiarity is a valid factor
- Migration triggers make simplicity credible
03Defend without rigidity
When challenged, restate the changed assumption and update the choice. A revised design is good reasoning, not failure. Keep the invariant stable even if mechanism changes.
An interviewer may change a premise rather than challenge your competence. “Now the customer requires zero accepted-write loss” invalidates an asynchronous failover assumption. Restate the new invariant, identify the affected write acknowledgement and promotion paths, and compare synchronous acknowledgement or refusing writes when the required replicas are unavailable.
Keep valid parts of the design. A changed durability promise does not automatically invalidate the API or blob layout. Draw the smallest necessary change, then discuss latency, availability, and cost consequences. A well-reasoned revision is stronger than defending an obsolete assumption or replacing every box without explanation.
Practice speaking the complete chain: deciding requirement → candidate mechanisms → choice → downside → evidence that would change it. Use a concrete workload, not a universal slogan. Once the listener understands that chain, stop and invite a deeper question. Concision becomes possible because the reasoning is complete, not because the important caveats were omitted.
- Ask what constraint the interviewer is changing
- Separate preference from requirement
- Name the downside of your own choice first