System Design Time Allocation

A good enough framework for 60 minutes allocation looks like this:

  • 10 + 15 + 25 minutes
  • The 10 minutes left are buffers for introduction, minor technical problems, Q&A which usually doesn’t affect your score

10 minutes: Clarification of the requirements

Different companies want a different thing. So you have to clarify unless they give you very detailed instructions. Some popular questions/assumptions look like

  • Could we just focus on the backend?
  • Are there any non-functional requirements?
  • Does it make sense to assume we will have more reads than writes
  • Is it ok to use 3rd party service for our payment gateway?
  • Do we need to support multiple languages?

For estimation, confirm with your interviewers because not every company wants a number. Unless you are asked for, skip the estimation step to save time for other steps.

15 minutes: High-level design

The goal of this step is to provide a big picture to show that we fulfil the functional requirements. At the end of this step, both you and your interviewer should have a general idea of how the data flow from request to response. Some common things you could talk about are:

  • An illustration of your simplest architecture (could be client -> server -> database in some cases)
  • System interface
    • API (HTTP method, what your endpoint does)
  • Databases
    • what kind of data do we want to store
    • what kind of databases and why (Relational, Key-Value, Graph, Search…
    • schema
    • (if you do estimation) figure out how much disk space do we need and see if that makes sense
      • For instance, storing TB sized data in a single relational database instance doesn’t make sense (ref: Amazon RDS instance types)

To save time, skip talking about optimization, scaling etc. So no load balancers, no replicas at this point.

25 minutes: Detailed components, optimization, all the goodness

This is where you want to spend most of your time because

  • Compared to high-level design, which might look similar across different titles (think TikTok vs youtube), interviewers are most interested in how deep could you go for the current title
  • a place to show off how knowledgeable you are

Always confirm with your interviewers which components are they more interested in. This is the step you want to mention:

  • How to scale your read and write
  • Add more logic to help your system grows:
    • compression
    • an algorithm like splitting files into chunks etc
  • adding more components/logic to help your system grow. For instance, message queue, CDN etc.


If you have more questions than time allowed, it’s ok to ask your interviewers to stay more for a few minutes. I did and so far no interviewer rejected.