System Design Beginner

00  Requirements & Estimation

A design is won or lost before the first box is drawn: pin down what you are building, say out loud what you are not building, and put numbers on the load. Vague requirements produce unfalsifiable architectures.

Step 1 / 2

You are asked to design a photo-sharing app in the spirit of Instagram. Before any architecture: write the requirements. Give 4-6 functional requirements you will support, 3-4 non-functional requirements each with a target number, and 2-3 explicit scope cuts (features you will NOT build) with a one-line reason for each cut.

Hints
  • Functional = what the system does (upload a photo, follow a user, view a feed). Non-functional = qualities of how it does it (latency, availability, durability).
  • A non-functional requirement without a number cannot be checked. Aim for targets like p99 feed load under 200 ms, 99.9% availability, or never lose an uploaded photo.
  • Cutting scope is part of the answer: excluding DMs, stories, or video keeps a 40-minute design honest. Say why you cut each one.
Your design is reviewed against a hidden rubric.