I show senior judgement by making trade-offs explicit. For every important choice, I name the alternative and say why I rejected it for these requirements. Two examples:
- Cursor pagination over offset pagination, because the feed gets new posts inserted all the time.
- SSE (Server-Sent Events) over WebSockets, because the traffic goes one way only.
I drive the conversation instead of waiting for prompts. I propose a scope and say my assumptions out loud. I keep a short list of open questions to come back to.
I think about the whole lifecycle, not just the happy path (the case where everything works). That includes:
- loading, empty and error states
- slow networks
- accessibility
- i18n (support for many languages)
- how we will measure success with RUM (real user monitoring: data collected from real users' browsers)
- how we roll it out behind a feature flag (a switch that turns a feature on or off without a deploy)
I also think about the team:
- a component API that other teams can use without reading the source
- a design that can be built step by step
- the places where complexity will hurt maintenance
Finally, when the interviewer invites it, I go deep on one or two areas. That is better than staying shallow everywhere.
- States the alternatives and why they were rejected.
- Drives the discussion and says assumptions out loud.
- Covers error, loading and empty states, and the rollout.
- Considers the team, maintainability and how success is measured.
Read more