Behavioural Interviews Module 5 – Growth, customers, integrity and AI at work
Customer focus and quality questions
Answer customer focus and quality questions with how you found out what users needed, the trade-off you made between speed and quality, and what users noticed.
What you will learn
- Show how you learned what users or customers needed
- Explain a quality-versus-speed trade-off and how you made it
- Describe raising a standard: tests, reviews, reliability or accessibility
- Connect technical work to a customer outcome
Before you start
What you’ll learn · Before you start
What you will learn
- Show how you learned what users or customers needed
- Explain a quality-versus-speed trade-off and how you made it
- Describe raising a standard: tests, reviews, reliability or accessibility
- Connect technical work to a customer outcome
Before you start
On this page
“Tell me about a time you put a customer first” is often answered with “I always do”, which gives the interviewer a claim and nothing to write down. A story with 900 support tickets, one change and a measured fall in repeat contacts gives them evidence they can score.
Customer focus and quality questions both look for that evidence: how you found out what users needed, what you changed, what it cost and what users noticed. Below are a customer story told part by part, what makes a quality story count, and a checker for your own.
Not affiliated
Based on public information about Amazon, Microsoft, Atlassian, Stripe and Salesforce. MySmartCoPilot is not affiliated with Amazon, Microsoft, Atlassian, Stripe and Salesforce, and Amazon, Microsoft, Atlassian, Stripe and Salesforce’s real values and hiring practices may differ from what this lesson describes.
Customer questions ask how you found out what users needed
Employers that publish their values put the customer near the top, and each describes an action rather than a feeling. Amazon’s Customer Obsession says that leaders “start with the customer and work backwards”, and its preparation page for senior engineers asks candidates to highlight how their decisions or projects affected customers and stakeholders. Microsoft’s interviews look for the ability to “learn about customers’ perspectives” and to show empathy for their experiences. Atlassian puts the customer’s perspective first, “collectively, not just a handful”, Salesforce counts customer success among its core values, and Stripe says that everyone at Stripe talks to users.
So customer focus is shown by how you found out. A customer story has five parts, a MySmartCoPilot pattern: where you found out (tickets, calls, data, using the product yourself), what users needed, what you changed, what it cost and what users noticed. Step through Ananya’s:
The drawing shows the whole scene; its 6 steps are listed below.
Every step as text
- Where she found out. Support is getting about 900 tickets a week about failed payments. Ananya does not guess why: she reads a sample of 200 of them herself.
- What users needed. Most of those users cannot tell whether their money has left their account. The need is not a nicer error page; it is an answer to one question: is my money safe?
- What she changed. She rewrites the failure messages so that each one says whether the money moved and what to do next, and groups 31 bank error codes into 6 messages a user can act on.
- What it cost. The work delays the wallet feature she was due to start by a week. She agrees that with her product manager before she starts, and the story says so.
- What users noticed. Repeat contacts about failed payments fall from 38 % to 12 % of those tickets. An interviewer can write that down and ask how it was measured.
- The whole answer. A source, a need, a change, a cost and an effect. "I always put customers first" has none of the five, which is why it scores nothing.
For an engineer the customer is often inside the company: the support staff who answer the tickets, the on-call engineer woken by a noisy alert, the team that calls your service. They are internal customer: A person or team inside your own organisation who uses what you build, such as the support staff, the on-call engineers or another team that calls your service., and their evidence counts in the same way.
A guess told as a fact
“I knew users wanted a faster page” claims knowledge you have not shown. Say where you found out, even when the source was small: twenty tickets read, five users watched, a week of logs.
Checkpoint
Check: Showing how you found out what users needed
Quality questions ask what standard you held, and what it cost
Quality questions ask about a standard you held when holding it cost something. Amazon’s Insist on the Highest Standards asks leaders to “ensure that defects do not get sent down the line”, and Stripe’s principle Create with craft and beauty says that “well-crafted work indicates care for the user”. Four kinds of story answer quality questions:
| Kind of story | The evidence that makes it count |
|---|---|
| Adding tests or checks after a failure | The failure, the check, and what it has caught since |
| Refusing to ship something unsafe | The risk in users’ terms, who agreed, and what shipped instead |
| Improving accessibility | The barrier, the standard you met and who can now use it |
| Paying down technical debt: The future cost of shortcuts taken in code or design: work that makes later changes slower or riskier until it is paid down by fixing it. | The measured cost of the debt and the effect of removing it |
Each has a trade-off, because quality costs time, and the story should say how much. Vikram, an invented backend engineer, proposed contract test: A test that checks that two services still agree on the messages they exchange, such as the fields one sends and the other expects, so that a change to one cannot silently break the other. after two releases in a row broke checkout: they cost about two days of a sprint and a build four minutes slower, and in the six releases since, no change of format has reached customers. Judgement also includes lowering a standard on purpose, such as a throwaway prototype built to answer one question, and saying why.
Key idea
A customer story is what you learned about users, what you changed and what they noticed; a quality story is a standard you held, what it cost and what it prevented.
Checkpoint
Check: A standard held, with its cost
Connect the work to what users noticed
Technical work reaches customers through a chain, and a strong answer names each link. Vikram’s tests stopped changes of format; those changes had broken checkout; broken checkout meant customers who could not pay. When the work is far from users, follow the chain until it reaches someone:
| The work | What changed | Who noticed |
|---|---|---|
| Contract tests | Format changes stopped before release | Customers who could pay again |
| Clearer failure messages | Users could tell whether their money was safe | Support, with fewer repeat contacts |
| A quieter alert | Pages that needed no action stopped | The on-call engineer |
Stop at the first person who noticed and say what changed for them, with a number when you have one. Claim a link further along only if you measured it.
Checkpoint
Check: From the work to who noticed
The payment-failure story, with its evidence worked out Pro: opens with a Pro, Premium or Ultimate pass
Ananya’s result is the kind of number interviewers probe: measured how, against what, and what else changed at the time? Here is her evidence worked out week by week, with festival traffic in the middle of it, and her answers to the probes that follow.
In this part:
- Where the story happened, and why its traffic was uneven
- Eight weeks before and after, compared like with like
- Five probes a customer story invites, answered from the data
- Ananya’s answer in 130 words, ready to say
1 runnable example (JavaScript) · about 5 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
Raising the bar, lowering it on purpose, and the numbers behind both Pro: opens with a Pro, Premium or Ultimate pass
A quality story has numbers on both sides: what the standard cost and what it prevented. Here are Vikram’s releases counted before and after his contract tests, a table that decides how high the bar should be for a piece of work, an accessibility story with its standard, and a rubric by level.
In this part:
- Vikram’s releases, counted before and after the contract tests
- Choosing how to raise the bar, with the cost of each way
- Deciding how high the bar should be, case by case
- An accessibility story, with the standard it met
- A rubric: what each level is expected to show
1 runnable example (JavaScript) · about 8 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
Practise: check your two stories
Write one customer story and one quality story, put them in the checker in place of Ananya’s and Vikram’s, and fix what it marks missing:
// Customer and quality stories, checked for the three things that make them evidence: a source that shows what users
// experienced (tickets, calls, data, an incident), a trade-off you accepted to make the change, and a result users could
// notice, with a number. Ananya, Vikram and their stories are invented. Put your own stories in STORIES, one string
// each, and run it again.
const STORIES = [
{
name: 'Ananya, customer story, first draft',
text: 'I am passionate about customers and always put them first. I improved the payment error messages, and users were much happier.',
},
{
name: 'Ananya, customer story, rewritten',
text: 'Support was getting about 900 tickets a week about failed payments, and in a sample of 200 that I read, most users could not tell whether their money had left their account. I rewrote the failure messages so that each one said whether the money had moved and what to do next, and grouped our 31 bank error codes into 6 messages users could act on. The trade-off was a week of delay to the wallet feature I was due to start, which I agreed with my product manager. Repeat contacts about failed payments fell from 38 % to 12 % of those tickets.',
},
{
name: 'Vikram, quality story, first draft',
text: 'I always insist on high quality. I added a lot of tests to our services, and our code became much more reliable.',
},
{
name: 'Vikram, quality story, rewritten',
text: 'Two releases in a row broke checkout because the orders service changed a field the payments service still expected, and both times customers found it before we did. I proposed contract tests between the two services and wrote the first eight myself; the cost was about two days of the sprint and a build four minutes slower. In the six releases since, no change of format has reached customers, and the tests stopped three such changes before release.',
},
];
// What users experienced, and where you learned it.
const SOURCE = /\b(?:tickets?|support|calls?|complaints?|reviews?|surveys?|conversations?|interviews?|logs?|analytics|dashboards?|recordings?|incidents?|customers found|users reported|reported)\b/i;
// What it cost: a trade-off you accepted, said as one.
const TRADE_OFF = /\b(?:trade-?off|the cost|cost (?:us|me|was)|delay(?:ed)?|instead of|rather than|gave up|accepted|slower|at the expense of)\b/i;
// A result users could notice: a sentence that names them, with a number in it.
const USERS = /\b(?:users?|customers?|support|tickets?|contacts?|complaints?|checkout|sign-ups?|on-call|pages)\b/i;
const NUMBER = /\d|\b(?:one|two|three|four|five|six|seven|eight|nine|ten|half|twice|a third|a quarter|a fifth|no)\b/i;
const sentencesOf = (text) => text.split(/(?<=[.!?])\s+/);
// The first words of a sentence, cut at a space, so that each line of the report stays short.
const shorten = (s) => (s.length <= 64 ? s : `${s.slice(0, s.lastIndexOf(' ', 60))} …`);
let complete = 0;
for (const story of STORIES) {
const sentences = sentencesOf(story.text);
const source = SOURCE.exec(story.text);
const tradeOff = TRADE_OFF.exec(story.text);
// The result usually closes the story: the last sentence (never the first) that names users and gives a number.
const result = sentences.slice(1).reverse().find((s) => USERS.test(s) && NUMBER.test(s));
console.log(story.name);
console.log(source ? ` ok a source of evidence: "${source[0]}"` : ' missing a source of evidence: tickets, calls, data or an incident that showed what users experienced');
console.log(tradeOff ? ` ok a trade-off: "${tradeOff[0]}"` : ' missing a trade-off: what the change cost, and why you accepted it');
console.log(result ? ` ok a result users noticed: "${shorten(result)}"` : ' missing a result users noticed: a sentence about them, with a number');
console.log('');
if (source && tradeOff && result) complete++;
}
console.log(`${complete} of ${STORIES.length} stories have all three parts.`); Output
Ananya, customer story, first draft missing a source of evidence: tickets, calls, data or an incident that showed what users experienced missing a trade-off: what the change cost, and why you accepted it missing a result users noticed: a sentence about them, with a number Ananya, customer story, rewritten ok a source of evidence: "Support" ok a trade-off: "trade-off" ok a result users noticed: "Repeat contacts about failed payments fell from 38 % to 12 % …" Vikram, quality story, first draft missing a source of evidence: tickets, calls, data or an incident that showed what users experienced missing a trade-off: what the change cost, and why you accepted it missing a result users noticed: a sentence about them, with a number Vikram, quality story, rewritten ok a source of evidence: "customers found" ok a trade-off: "the cost" ok a result users noticed: "In the six releases since, no change of format has reached …" 2 of 4 stories have all three parts.
Recorded with Node.js 24.21.0 on macOS 26 arm64. To run it yourself: mise exec node@24.21.0 -- node customer_check.mjs
Runs on this device, in your browser. The first run downloads JavaScript (about 0.6 MB), which is kept for the next runs.
Your run, in this browser
Both first drafts claim a virtue and show none of the three parts. The checker reads words, not truth, so a story that passes still has to be true and yours.
Online Notepad Draft each story here first, then paste it into the checker as one string.Practice that adapts to you
Practise this lesson
6 questions about 5 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Interview questions
Start with the warm-up and its answer. Then tell each of the other three to an empty room, with a real story of yours, and only then read its first step.
-
Fresher to mid · Warm-up
Who counts as the customer in an engineer's answer to a customer-focus question?
Anyone who uses what you build, inside the company or outside it. For many engineers the users nearest to the work are internal: the support staff who answer tickets about a feature, the on-call engineer woken by an alert, the team that calls your service, the analyst who reads your pipeline's output. A story about them is as good as one about paying customers, as long as it has the same evidence: where you found out what they needed, what you changed, what it cost and what they noticed. Amazon, for one, asks candidates to highlight how their decisions affected customers and stakeholders. Say who the customer was in your first sentence, so that the interviewer does not wonder why a story about an alert answers a question about customers.
-
Fresher to senior
Tell me about a time you found out that users needed something different from what you had been asked to build. What did you do?
-
Mid to senior
Tell me about a time you shipped something you knew was not as good as it could be. How did you decide it was good enough?
-
Mid to senior
Tell me about a time you pushed back on releasing something because of a quality or safety concern. What happened?
Key takeaways
- A customer story shows where you found out, what users needed, what you changed, what it cost and what users noticed.
- Internal users count: support staff, on-call engineers and the teams that call your service.
- A quality story is a standard you held, what it cost and what it prevented, and lowering a standard on purpose is judgement when you can say why.
- Follow the chain from the work to the first person who noticed, and claim further links only when you measured them.
Terms in this lesson
- contract test
- A test that checks that two services still agree on the messages they exchange, such as the fields one sends and the other expects, so that a change to one cannot silently break the other.
- internal customer
- A person or team inside your own organisation who uses what you build, such as the support staff, the on-call engineers or another team that calls your service.
- technical debt
- The future cost of shortcuts taken in code or design: work that makes later changes slower or riskier until it is paid down by fixing it.
References
- Leadership Principles (Amazon.jobs)
- SDE III interview prep (Amazon.jobs)
- Interview tips (Microsoft Careers)
- Atlassian's core values (Atlassian)
- Stripe compatibility: how we operate (Stripe)
- Our values (Salesforce)
- Web Content Accessibility Guidelines (WCAG) 2.2 (W3C)
Related tools
Report a problem with this lesson
Kept only in this browser. Your Learn progress