Give your system design answer a backbone

MOG teamTechnical interviews

A convincing design starts with the problem. Before drawing services and databases, establish what the system must do and which constraint matters most.

A team discussing a design at a whiteboard

Ask what success looks like

Suppose the panel asks you to design a notification service. Clarify whether delivery must be immediate, whether duplicates are acceptable, and how many recipients a typical event reaches. These answers determine more than your choice of database.

Repeat the important constraints in a sentence before proceeding. If the interviewer leaves a number open, state a working assumption and explain that you will revise it when better information arrives.

Amina
Jordan
Priya
MOG caught the questionHow would you test this before deployment?

Start with the highest-risk path, add integration coverage, then release behind a flag.

Amina is asking

Build the smallest complete path

Describe one event moving from the producer to a queue, through a worker, and into a delivery provider. Explain where you store delivery state and how the caller learns that a request was accepted.

Only then introduce retries, deduplication, and scaling. Every added component should solve a failure or bottleneck in the path you already described.

Make the first design understandable before making it resilient.

Let the follow-up change the design

If the panel now requires strict ordering, revisit the queue partitioning and concurrency model. Explain what you gain and which throughput limit you accept. Changing your design in response to a new requirement is evidence of judgment.

Use MOG's live context as a reminder of earlier constraints while you answer. Check any suggested architecture against those constraints instead of adopting a recommendation without examining it.

Continue reading

More from the MOG journal