Software Engineering · Chapter 3 of 31
Product sense for engineers
Named in 84% of postings, above distributed systems. The largest gap between how engineers prepare and what is asked.
Product sense is not a soft skill and it is not product management. For an engineer it means the judgement to know which version of a thing to build, what to leave out, and when the requirement as stated is wrong.
What it looks like in an interview
- You ask what problem this solves before asking how it should work. The single cheapest signal, and most candidates skip straight to implementation.
- You propose a smaller version. ‘We could ship the single-user case in a week and learn whether anyone wants the collaborative one’ is a product-sense answer given by an engineer.
- You notice the edge case that is actually a product decision. What happens when someone has no data yet, when they exceed the limit, when two people edit at once — these are not technical questions and engineers who surface them are valued disproportionately.
- You can say what you would cut under a deadline, and defend it in terms of user impact rather than effort.
- You know what the feature costs to run, and mention it unprompted.
How to build it if you have not had the chance
Product sense comes from being close to consequences, which is why engineers on internal tools or deep infrastructure often have had less opportunity to develop it. Three things that work: read your own product's support tickets for an hour a week; ask to sit in on one customer call a month; and whenever you are handed a requirement, write down what you think the underlying problem is and check it with whoever asked. That last one costs nothing and changes how you are perceived within a quarter.
The interview answer that demonstrates it
When asked to design or build something, spend the first two minutes on who this is for and what happens if we do nothing. Then propose the smallest version that would tell you whether it is worth more.
Interviewers are not testing whether you can build it — they assume that. They are testing whether you would have built the right thing.
What product sense means for an engineer, concretely
It appears in 84% of software engineering postings — higher than distributed systems — and it is the least-prepared-for item in the whole loop, because most candidates read it as a soft skill. It is not. It is the habit of knowing what the code is for, and letting that change what you build.
- Knowing who the user is, specifically enough to say what they were doing five minutes before they reached your feature and what they will do five minutes after.
- Knowing what problem the work solves, stated as the user's problem rather than the ticket's title.
- Being able to argue for a smaller version — and this is the one that separates people. An engineer who can say ‘we could ship 80% of the value in 20% of the time by dropping X’ is worth more than one who implements the spec faithfully.
- Noticing when a requirement is wrong and raising it before building it, rather than building it and being right afterwards.
- Knowing how you would tell whether it worked after it shipped.
A worked exchange
The ticket: ‘Add an export-to-CSV button to the reports page.’
| Response | What it signals |
|---|---|
| Builds the button. Correct, tested, shipped. | Competent. This is the baseline and it is fine |
| Asks: what do people do with the CSV once they have it? | Product sense. And the answer is usually revealing |
| Learns they paste it into a spreadsheet to make one chart, every Monday | Now the ticket is arguably wrong. The user's problem is a weekly chart, not a file |
| Ships the button anyway, and flags the finding | The correct move. The ticket was asked for and is cheap; the insight is worth more than the button and belongs with whoever owns the roadmap |
| Refuses to build it and argues for a scheduled emailed chart instead | Overreach. You have made a roadmap decision that is not yours, and blocked a small ask on a large hypothesis |
That last row matters as much as the third. Product sense is often taught as ‘push back on requirements’, and engineers who learn it that way become expensive to work with. The skill is surfacing the better option and letting the person who owns the priority decide — while still delivering the thing that was asked for.
How it is tested in a loop
- “Tell me about something you built. Why did it exist?” A weak answer describes the architecture. A strong one describes the user, the problem, what was cut, and how you knew it worked.
- “How would you measure whether this feature succeeded?” Weak: usage. Strong: a metric tied to the user's problem, plus a guardrail metric that would tell you the feature is succeeding at the expense of something else.
- “We have six weeks instead of six months. What ships?” This is the most direct test and it is genuinely hard. The answer must cut scope rather than quality, and must say what the cut costs.
- “What would you have done differently?” An answer of ‘nothing’ is a bad answer, and so is a list of technical regrets. The good version names something about the problem you understood too late.
The metric answer that separates candidates
Nearly every candidate answers “how would you measure it?” with an adoption number — users, clicks, sessions.
Adoption tells you people found it. It does not tell you it helped. A feature can be heavily used and actively bad, and the usage number will look like success the whole time.
The strong answer has three parts: a primary metric tied to the user's problem, a guardrail that would catch the feature winning at something else's expense, and a statement of how long you would wait before believing either.
Worked: for a search improvement, primary is successful sessions — a search followed by a click and no immediate re-search. Guardrail is latency and zero-result rate, because the easy way to improve relevance is to return more things more slowly. Window is two weeks, because week one is novelty.
Naming the guardrail unprompted is the single highest-value sentence available in this round.
Check yourself