It's 11 PM. You've solved forty LeetCode mediums this month. Your GitHub has a shiny new Airflow project with green checkmarks all the way down. Tomorrow's interview feels like a formality.
Then the interviewer shares their screen, pulls up a query that's been quietly timing out in production for three days, and says: "Walk me through how you'd find out why."
Your mind goes blank. Not because you don't know SQL. Because nobody told you this was the interview.
Here are the hard truths that would have saved you the panic.
Truth #1: Solving Algorithms Doesn't Prove You Can Build Pipelines
Being fast at LeetCode tells an interviewer you can think in code. It doesn't tell them you can design something that runs unattended, every single night, for two years straight, without falling over.
Picture two candidates. One breezes through a dynamic programming problem in twelve minutes. The other takes twenty minutes on the same problem but then says: "Also, in production I'd want to know what happens if this runs on a dataset ten times bigger than we planned for, and what alerts I'd want if it silently returns zero rows instead of failing loudly."
Most hiring managers remember the second candidate. Silent failures are the thing that actually keeps data engineers up at night — not big-O notation.
Truth #2: SQL Is the Real Gatekeeper, Not Spark or Airflow
Everyone preps buzzwords: Spark, Kafka, dbt, Airflow. Then the interview opens with a plain SQL question, and half the room stumbles.
Here's a version of the kind of question that trips people up:
-- Find each customer's second most recent order
SELECT customer_id, order_id, order_date
FROM (
SELECT
customer_id,
order_id,
order_date,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY order_date DESC
) AS rn
FROM orders
) ranked
WHERE rn = 2;
It looks simple once you see it. But candidates who haven't sat with window functions long enough tend to reach for a self-join instead, get the logic tangled, and burn ten minutes on something that should take two. Tools change every year. ROW_NUMBER(), RANK(), and self-joins don't. Interviewers know this, which is exactly why they keep asking.
Truth #3: "Tell Me About a 3 AM Incident" Is Testing Your Judgment, Not Your Memory
This question isn't about remembering exact error codes. It's about whether you stay calm and think in order when something is actually broken.
A weak answer jumps straight to the fix: "I restarted the DAG and it worked." A strong answer walks through the thinking: check the logs first, confirm whether it's a data problem or an infrastructure problem, check if upstream sources changed, only then decide whether to rerun or patch.
If you've ever debugged a pipeline that broke because an upstream team quietly renamed a column, you already have this story. Tell it plainly. The plainness is the point — interviewers have heard enough dramatic war stories. They want to see how you think when the drama is over and the fixing has to start.
Truth #4: "Design a Data System" Is Not the Same Question as "Design a Chat App"
Generic system design prep — load balancers, sharding, caching — only gets you halfway. Data system design questions care about different things: how data flows in, how it's transformed, how it's kept consistent, and what happens when a source sends bad data.
Say you're asked: "Design a system that tells a retailer within minutes when their online inventory count doesn't match what's actually on the shelf."
A candidate who only knows backend system design starts talking about API gateways. A candidate who understands data engineering starts asking sharper questions instead: How fast does "within minutes" really need to be? Is this a stream of every sale as it happens, or a batch of files every hour? What do we do when the store system and the warehouse system disagree — which one do we trust?
That second style of answer, built around trade-offs instead of tech-stack name-dropping, is what actually separates candidates in these rounds.
Truth #5: The Job Description and the Interview Sometimes Describe Two Different Jobs
This one stings, but it's common. The job description says "own our batch pipelines end to end." The interview spends forty minutes on distributed systems trivia you'll never touch on the actual job.
There isn't a clean fix for this. But you can ask, plainly, near the end of the interview: "What does a typical week actually look like for someone in this role?" The answer tells you more than any job description will. Sometimes it confirms the role is what you hoped. Sometimes it saves you from a job that looks great on paper and feels miserable in practice.
The Actual Hard Truth
Passing the interview and being good at the job pull on different muscles. That gap isn't a character flaw, and it isn't permanent. You close it the same way you'd fix a slow query: one deliberate pass at a time, checking what's actually happening instead of guessing.
Write the SQL by hand instead of skimming it. Debug a pipeline that's actually broken, not just one that's supposed to work. Explain your last project to someone who wasn't there for it, and notice which parts you fumble.
That's the whole preparation. Not more LeetCode. More reps at explaining how things break, and how you'd notice.
Your Next Move (Before Your Next Interview)
Don't just nod along — do these five things this week:
-
Rewrite one query using window functions. Take any "top N per group" problem and solve it with
ROW_NUMBER()instead of a self-join, until it's automatic. - Pick one past incident and narrate it out loud. Logs first, then root cause, then fix — in that order, every time, until it's a habit and not a scramble.
- Practice one system-design question the data way. Before sketching any architecture, write down three questions you'd ask about freshness, volume, and which source to trust when two disagree.
- Say your last project out loud to someone outside data. If they get lost, your answer is too tool-heavy and not trade-off-heavy enough.
- Ask "what does a typical week look like here?" in your next interview. Write the answer down. Compare it to the job description afterward.
Which one of these is costing you the most interviews? Drop it in the comments — I'd genuinely like to know which truth hit hardest.
Top comments (0)