Owning Mistakes
Overview
“Tell me about a time you made a mistake” is one of the most important behavioral interview questions — and the one candidates most often answer poorly. Interviewers aren’t looking for perfection; they’re assessing your self-awareness, accountability, and ability to learn from failure.
The paradox: the candidates who try to minimize their mistakes look worse than those who own them fully. Engineers who can openly discuss what went wrong, take responsibility, and explain what they learned demonstrate the kind of intellectual honesty that makes teams stronger.
Why Interviewers Ask This
- Self-awareness: Do you recognize when you’ve made an error?
- Accountability: Do you take responsibility or deflect blame?
- Learning ability: Can you extract lessons from failures?
- Judgment improvement: Have you changed your behavior as a result?
- Incident response: How do you behave under pressure when things go wrong?
- Psychological safety: Will you create an environment where others can admit mistakes too?
Common Question Patterns
Direct Questions
- “Tell me about a time you made a significant mistake at work”
- “Describe a production incident you caused”
- “What’s the biggest technical mistake you’ve made?”
- “Tell me about a time when something you built failed”
- “What’s a decision you made that you’d do differently now?”
Situational Questions
- “How do you handle it when you realize you shipped a bug to production?”
- “What would you do if you pushed code that caused a customer-facing outage?”
- “How do you approach writing postmortems?”
Follow-Up Probes
- “What would you do differently?”
- “How quickly did you realize the mistake?”
- “Who else was affected?”
- “How did you communicate it to your team/manager?”
- “What processes did you change?”
STAR Method Application
Situation (2-3 sentences)
Set the scene: what system, what stakes, what was happening.
Task (1-2 sentences)
What you were trying to accomplish when the mistake happened.
Action (the bulk — cover the mistake AND the response)
Two critical parts:
- The mistake itself: What you did wrong, WHY you made that error (time pressure, knowledge gap, overconfidence, skipped testing). Be specific and honest.
- Your response: How you detected the problem, what you did to mitigate it, how you communicated it, and what you changed afterward.
Result
The outcome of both the mistake and your response. Include: impact (duration, affected users), the fix, and the systemic changes you made to prevent recurrence.
Example Answers
Mid-Level Engineer (Production Incident)
Situation: “I was working on the checkout service at an e-commerce company processing about $500K in daily transactions. We were migrating from a monolithic payment processor to a new microservice architecture.”
Task: “I was implementing the new payment routing logic that would direct transactions to the correct processor based on payment method and region.”
Action: “The mistake: I pushed the routing change to production on a Thursday afternoon without a feature flag. My unit tests covered all the expected payment methods, but I missed a case — our legacy system had a payment type called ‘stored_credit’ that wasn’t in any documentation I’d found. About 3% of transactions used this type.
Within 20 minutes, our on-call got paged — payment failures were spiking. I was still at my desk and immediately recognized it was my change. I could have stayed quiet and let the on-call investigate, but I immediately messaged the incident channel: ‘This is likely my routing change from 30 minutes ago. I’m looking at the error logs now.’
I identified the issue within 5 minutes — the unhandled payment type was causing a 500 error. I had two options: roll back the entire migration (safe but would undo a week of work and require re-deployment planning) or push a hotfix to handle the missing type. Given the error was well-understood and the fix was a 3-line change, I chose the hotfix. I pair-reviewed it with our senior engineer, tested it in staging with synthetic ‘stored_credit’ transactions, and deployed it within 25 minutes of the first alert.
After the incident, I wrote a blameless postmortem. The root cause wasn’t just my missing test case — it was that we had no automated way to discover all payment types in the legacy system. I proposed and built an integration test that queries production for all distinct payment types and verifies the routing logic handles each one. I also advocated for a team policy of never deploying routing changes without a feature flag, which we adopted.”
Result: “The outage lasted 25 minutes and affected about 150 transactions. All failed transactions were automatically retried and completed after the fix. The integration test I built caught two more undocumented payment types during the next migration phase. The feature flag policy has prevented three similar incidents since then.”
Senior Engineer (Architectural Decision)
Situation: “When I joined a Series B startup as one of the first senior engineers, the team was choosing a database for our real-time analytics pipeline. We needed to ingest 50,000 events per second and serve dashboard queries with sub-second latency.”
Task: “I was responsible for the architecture decision. I evaluated three options: ClickHouse, TimescaleDB, and Apache Druid.”
Action: “The mistake: I chose TimescaleDB because I was most familiar with PostgreSQL, and TimescaleDB is a PostgreSQL extension. I ran benchmarks on our test data and it performed well. What I didn’t adequately test was behavior at our projected 12-month scale — I benchmarked with 1 month of data, not 12.
Six months in, query performance degraded significantly as the data volume grew. TimescaleDB’s hypertable chunk management became a bottleneck, and our continuous aggregates couldn’t keep up with the ingest rate. Dashboard load times went from 800ms to 8 seconds.
When I realized the problem, I didn’t try to hide it or blame the technology. In our next engineering all-hands, I presented a candid analysis: ‘I made this architecture decision, and I underestimated the importance of testing at projected scale. Here’s what I’ve learned and here’s my proposed path forward.’
I re-evaluated our options with the actual production data patterns and proposed migrating to ClickHouse, which is purpose-built for our workload profile (high-cardinality analytics with heavy aggregations). I designed the migration to be incremental — dual-writing to both databases and gradually switching read traffic — so we could validate ClickHouse performance before fully committing. This approach de-risked the migration, which I explicitly called out as a lesson from my original mistake of under-testing.
I also established a new architecture decision record (ADR) template that requires a ‘Scale Testing’ section with projections for 1x, 5x, and 10x current load, plus a ‘Reversibility Plan’ documenting how to undo the decision if it proves wrong.”
Result: “The ClickHouse migration took 6 weeks and reduced dashboard query times from 8 seconds to 200ms at 3x the original data volume. The ADR template became standard process for the engineering team. Looking back, the 6-month detour cost us about 2 engineer-months of migration work, but the process improvements we built as a result have saved significantly more than that on subsequent decisions.”
Company-Specific Patterns
Amazon
Map to: Ownership, Dive Deep, Insist on the Highest Standards
Amazon expects you to demonstrate full ownership of mistakes — no blaming others or external factors. Show that you dove deep to understand the root cause (not just the symptom) and that you raised the bar to prevent recurrence. Amazon’s culture of blameless postmortems means they value the learning more than the mistake.
Focus on: Blameless postmortems, systemic fixes, data-driven learning
Google’s SRE culture emphasizes that incidents are learning opportunities. Show that your response focused on systemic improvements (process, tooling, monitoring) rather than just fixing the immediate bug. Reference specific metrics that improved.
Meta
Emphasize: Speed of response, bias for action, not repeating mistakes
Meta values engineers who detect and fix issues fast. Show rapid response time and decisive action. Also demonstrate that you don’t make the same type of mistake twice — you built automation, added tests, or created guardrails.
Microsoft
Highlight: Growth mindset, transparency, helping others learn
Microsoft values stories that show you treated the mistake as a learning opportunity, were transparent with your team, and shared your learnings broadly so others could avoid the same pitfall.
Tips for Success
Do
- Choose a REAL mistake — not a disguised brag (“I worked too hard and burned out”)
- Take full accountability — “I made this error” not “The system failed” or “We made a mistake”
- Explain WHY you made the mistake — time pressure, knowledge gap, overconfidence, poor testing
- Show fast response — how quickly you detected, diagnosed, and fixed the issue
- Describe systemic improvements — the process/tooling changes that prevent recurrence
- Quantify the impact AND the recovery — duration, affected users, and how you made it right
Don’t
- Don’t pick a trivial mistake — a typo in a comment isn’t what they’re looking for
- Don’t blame others — even if others contributed, own your part
- Don’t end with just the fix — the systemic improvement is the most important part
- Don’t say “I can’t think of one” — this signals lack of self-awareness
- Don’t be overly emotional — be matter-of-fact and analytical
Red Flags to Avoid
- “I’ve never really made a significant mistake” — arrogant or not self-aware
- “The PM gave me wrong requirements” — deflecting responsibility
- “It was a team decision” — hiding behind the group
- “I stayed late to fix it” — effort without learning
- “It wasn’t really my fault because…” — immediately disqualifying
- No mention of prevention — fixing the bug isn’t enough; preventing the class of bug is what matters
Level-Specific Expectations
- Junior (L3-L4): Show you can recognize mistakes quickly, ask for help, and learn from feedback. A missed edge case or a configuration error is fine. The key is how you responded and what you learned.
- Mid (L4-L5): Show you own the full incident lifecycle — detection, mitigation, root cause analysis, postmortem, and prevention. Demonstrate that you improved team processes, not just your own habits.
- Senior (L5-L6): Show mistakes with broader impact — architectural decisions, technical strategy choices, or team-level process gaps. The response should include systemic improvements that scale beyond your own work.
- Staff+ (L6+): Show mistakes at the organizational level — wrong technology bet, misaligned team structure, or strategic misjudgment. The learning should have org-wide impact.
How to Prepare
- List 3-5 real mistakes from your career. For each, document: what happened, why, what you did, and what changed.
- Choose mistakes with good “learning arcs” — the best stories show significant growth from the experience.
- Practice the proportions: 20% on the mistake, 30% on the response, 50% on the learning and prevention.
- Prepare for follow-ups: “Would you do anything differently?” (Yes — name something specific), “How did your team react?” (show trust and psychological safety).