Why did you choose certain approaches
A judgment/communication question (often after a take-home or system design). Show you decide deliberately: state the requirements/constraints, the options considered, the trade-offs, why you picked this one, and what you'd revisit. The wrong answer is 'it's what I know' or no trade-off awareness.
This question — usually asked after a take-home or design exercise — tests engineering judgment: do you make deliberate, reasoned decisions, or just default to habit?
What a strong answer demonstrates
1. You started from requirements and constraints. "Given that the dataset is small and the app is read-heavy, I…" — anchor every choice to the actual problem: scale, team, timeline, existing stack, who maintains it. A choice with no stated constraint is just a preference.
2. You considered alternatives. Name the other options you weighed. "I considered Redux, Context, and Zustand here." Showing you saw the option space — not that you only knew one tool — is the core signal.
3. You can articulate the trade-offs. Every real choice is a trade-off. "Zustand over Redux because the app's state is simple and the team's small — Redux's structure would be ceremony we don't need; the trade-off is less tooling/middleware, which I judged acceptable here." Trade-offs, not absolutes.
4. You were pragmatic, not dogmatic. "I used the simplest thing that met the requirement" beats "I always use X." Match the solution to the problem's size — don't over-engineer, don't under-build.
5. You know what you'd revisit. "If the dataset grew or the team scaled, I'd reconsider — this works for the current constraints." Showing you know the boundaries of your decision signals maturity.
Apply it concretely
For each significant choice — state management, data fetching, folder structure, a library — be ready with: constraint → options → trade-off → decision → when I'd change it.
Pitfalls
- "It's what I know / what I'm comfortable with" — the weakest answer; signals no judgment.
- No trade-offs — presenting a choice as objectively best with no downside.
- No alternatives considered — looks like you didn't think.
- Over-engineering — choosing heavyweight tools a small problem didn't need, and not realizing it.
- Being defensive — if the interviewer pushes back, engage with it; don't dig in. They may be probing whether you can take input.
The framing
"For each decision I'd walk through: the constraint that drove it, the alternatives I considered, the trade-off I accepted, and why this option fit this problem's scale and team — plus what would make me revisit it. The point isn't that my choice was objectively 'right' — it's that it was deliberate and matched to the requirements. The answer I'd avoid is 'it's what I know,' or presenting a choice with no downside, because that signals I wasn't actually weighing anything."
Follow-up questions
- •What alternatives did you consider and why did you reject them?
- •What's the trade-off you accepted with this choice?
- •Under what conditions would you make a different choice?
- •Did you over- or under-engineer any part, in hindsight?
Common mistakes
- •'It's what I'm familiar with' as the justification.
- •Presenting the choice as objectively best with no trade-offs.
- •Not naming any alternatives considered.
- •Over-engineering and not recognizing it.
- •Getting defensive when the interviewer pushes back.
Performance considerations
- •Not applicable — but a strong answer often includes performance as one of the trade-off axes you weighed (e.g. bundle size vs. DX).
Edge cases
- •A choice you'd actually make differently now — own it, that's growth.
- •A constraint (deadline) that forced a non-ideal choice — explain the context.
- •Interviewer disagrees with your choice — engage with their reasoning.
Real-world examples
- •Justifying Zustand over Redux for a small app by scale and team size.
- •Explaining a folder structure choice by how the team and codebase are expected to grow.