Ask an engineer how they spend their week and almost none of them say "writing new code on a blank page." They say reading logs, reproducing a report, bisecting a regression, and untangling something a former teammate left behind.
Then we interview them by asking them to write new code on a blank page.
Debugging is the skill that actually predicts day-to-day performance, and it is the one most interviews never measure.
Why the blank-page test misses it
A from-scratch coding problem rewards recall and speed. It tells you whether someone can produce a known algorithm under pressure.
It tells you almost nothing about:
- how they behave when the code already exists and is wrong
- whether they read before they type
- how they form and test a hypothesis
- whether they can resist the urge to rewrite everything
Those are the behaviors that decide whether a hire is productive or dangerous in a real codebase.
Give them something broken
The cleanest way to assess debugging is to hand the candidate a small system that runs but misbehaves, and watch them fix it.
Good broken scenarios share a few traits:
- The bug is real and reproducible, not a trick or a typo hunt.
- The surface area is bounded, so the session is about reasoning, not scale.
- There is a clear "correct" behavior to restore, so success is unambiguous.
- The fix is small once found, but finding it takes real investigation.
A failing test suite, a service that returns the wrong number, a page that loses state on refresh: all of these force the candidate to read, reproduce, and reason.
What to watch for
The fix matters less than the path to it. Watch how they:
- Reproduce first. Strong engineers confirm the failure before touching anything.
- Narrow the search. They form a hypothesis and cut the problem in half, instead of poking randomly.
- Read the surrounding code. They build a model of how it is supposed to work before deciding what is wrong.
- Change one thing at a time. Panic looks like ten edits at once and no idea which one helped.
- Explain out loud. You want to hear the reasoning, not just see the diff.
A candidate who says "let me reproduce it, then check the assumption in this function" is showing you exactly how they will behave on your on-call rotation.
Why we built this into EasyEnv
Judging debugging from a shared document is hard, because the interesting part is the process, not the final file.
EasyEnv runs the candidate in a real environment with an intentionally broken service, and records the session. You see the terminal, the edits, and the order they happened in. The audit trail turns a fuzzy "they seemed to struggle" into a concrete record of how they diagnosed the problem.
The takeaway
Writing code from scratch is a baseline skill. Fixing code you did not write, under uncertainty, is the job.
Interview for the job.