Logo

Not necessary to follow at all times (exceptions differ on problem), example:

  1. Making a payment system (using a 3rd party PSP):

    • More focus on high level > low level data structures
  2. Search engines

    • low level understanding of data structures + systems
  3. Define the Goal:

    • Non technical requirements
    • Given hypothesis / limitations of the problem
  4. Functional Requirements:

    • Technical requirements (Capacity, Read, Writes, etc)
  5. Capacity Estimation:

    • Take the biggest problem and find capacity needed for that, can be:

      • Read Complexity -> worst case TC / Payload size
      • Write complexity -> worst case TC / Cache size
      • other like max bandwidth, worse case latency, etc..
    • Usually depends on type of problem (from functional requirements)

    • A good shortcut for capacity (size) approximation:

    <1000bytes>bytes1000100kbytes>kb1M100Mbyes>mb1B100B>gb1T100T>TB - < 1000 bytes -> bytes - 1000 - 100k bytes -> kb - 1M - 100M byes -> mb - 1B - 100B -> gb - 1T - 100T -> TB
  6. Approaches

    1. Usually addressing the problems, and solving one by one, example:
      • Data structures to be used for read / write?
      • Processing: Stream / Batch?
      • Connections? REST / GraphQL / RPC?
    2. low level estimation, iterate over and over again.
  7. System Components

    • After solving problems, make system depending on that
      • System Design (Diagram)
      • Components Breakdown (optional - adding context)
    • Simpler as possible -> think of scale as well, but main focus is solving the problem in hand.
  8. Summary / Solution

    • Overall, if multiple approaches are give, providing final suggestion
    • Suggestion for scale / ways to improve, etc.

© 2025 All rights reservedBuilt with DataHub Cloud

Built with LogoDataHub Cloud