The Deceptively Simple Interview: Designing a Salad Ordering System
You've prepared for "design Uber" and "design WhatsApp," and the interviewer asks you to build… a salad shop's ordering app. A set menu of composed salads, plus build-your-own from a list of ingredients. It sounds like a weekend CRUD project — menus, carts, orders — and the traffic really is tiny. That is exactly the trap. With no fog of scale to hide in, the only thing being measured is your judgment: whether you notice that the ingredient, not the salad, is the system's atomic entity; whether you model a kitchen the way kitchens actually work; and whether you understand that at 12:15 on a Tuesday, the bottleneck isn't the database — it's three people making two salads a minute.
The Trap Built Into Small Systems
Hand a prepared candidate a trivial-looking prompt and one of three failures usually follows:
- The Dismissal: The candidate treats the problem as beneath them — sketches a
saladstable and aorderstable, skips clarification and estimation, and gets dismantled by the first follow-up ("the kitchen just ran out of avocado — what happens to your six preset salads that contain it?"). Signal: rigor evaporates the moment the prompt looks easy. - The Machinery Summon: The candidate ships microservices, Kafka and a NoSQL fleet at a workload of 3.5 orders per second chain-wide. Signal: reaches for architecture before arithmetic.
- The False Precision Trap: The candidate designs gram-level inventory depletion and a "guaranteed allergen-free" filter — promising precision the real world can't maintain and guarantees a shared kitchen can't make. Signal: models the world as they wish it were, not as it is.
The passing performance turns each trap into a design decision:
- The ingredient is the atom: a preset salad is a recipe, a customization is a delta from a recipe, an order is a priced snapshot — and pricing, availability, nutrition, allergens and build-your-own all fall out of that one model.
- Two documents on two clocks: the menu (30 KB, changes weekly, cached hard and versioned) and the availability overlay (1 KB, changes with a kitchen lead's tap, propagating in under 30 seconds).
- Human-grade inventory: an 86 board of audited toggles, not a fictional gram ledger — model the kitchen's actual precision.
- Kitchen-physics backpressure: lunch demand runs 2.8× the kitchen's 120-salads-per-hour throughput, so quoted pickup times come from queue depth divided by real capacity — honest promises, throttled intake, never a comfortable lie.
Sign in to continue reading
The rest of this lesson is available with a free account. Signing in with Google or Microsoft is free.
Sign in to read the full lesson