How to design a technical interview process that predicts on-the-job performance
On this page
- Start from the job, not from the template
- An example loop, stage by stage
- Take-home vs live coding: the honest tradeoffs
- Write the scorecard before the first interview
- Signals that predict, noise that does not
- Reduce bias and inconsistency with structure
- Respect candidate time, and know when a loop is too long
- The debrief and the decision
- The shortcut
Most technical interview processes are inherited, not designed. Someone copies the loop from their last company, adds a stage after one bad hire, and three years later candidates sit through six rounds that mostly measure the same thing: how well someone interviews. Interviewing well and building software well are different skills. The goal of this guide is a loop that measures the second one, in under four hours of candidate time, with a decision you can defend.
Start from the job, not from the template
Before you book a single interview, write down the four to six things this person will actually do in their first six months. Not the job title. The work. For a senior backend hire that list might be: extend a payments service other people depend on, debug production incidents, review pull requests from two mid-level engineers, and push back on scope when a deadline is unrealistic.
Now design backwards: every stage in your loop must produce evidence about at least one item on that list, and every item must be covered by at least one stage. Any stage that maps to nothing gets cut. This one exercise removes most of the ritual interviews (brain teasers, whiteboard algorithms for a CRUD role, a fifth “culture chat”) because you cannot say what they predict.
An example loop, stage by stage
Here is a four-stage loop that works for most mid to senior developer roles. Total candidate time: about three and a half hours.
Stage 1: screening call, 30 minutes. Run by the hiring manager, not a recruiter reading a script. Goals: confirm the basics (compensation range, location, notice period, work authorization), give an honest picture of the role including the unglamorous parts, and ask two or three pointed questions about their most relevant recent work. You are filtering for obvious mismatches, both directions.
Stage 2: technical assessment, 60 to 90 minutes. A practical exercise in a realistic setting: extend a small working codebase, fix a failing test, or review a deliberately flawed pull request. This is where coding ability gets measured, once, properly. Details on the format tradeoffs below.
Stage 3: system and architecture conversation, 60 minutes. For mid-level and up. Take a real problem from your own domain, simplified, and design it together: “we need to add usage-based billing to this product, walk me through how you would approach it.” You are watching whether they ask about constraints before proposing solutions, whether they name tradeoffs unprompted, and whether they can change their design when you add a new requirement. Past-decision questions belong here too: the systems they built, what they would change, what broke.
Stage 4: team and working-style conversation, 45 minutes. One or two future teammates, structured questions about collaboration: a disagreement and how it ended, a time they gave or received hard feedback, how they handle a vague brief. This stage exists to test working style, not to grant a personality veto. Close with real time for candidate questions, because their questions are signal too.
For senior candidates you can often merge stages 3 and 4 into one longer conversation. For a first engineering hire, add 30 minutes with the founder on ownership and ambiguity instead of a team stage.
Take-home vs live coding: the honest tradeoffs
There is no universally correct answer here, only tradeoffs to choose deliberately.
Take-home assignments resemble real work: the candidate uses their own editor, their own pace, and can look things up like they would on the job. They remove performance anxiety, which is real and unevenly distributed. The costs: the time asymmetry is on the candidate (your team spends 30 minutes reviewing what took them three hours), strong candidates with competing offers decline long ones, and you cannot verify who or what wrote the code. If you use a take-home: cap it at two to three hours honestly scoped, pay for anything longer, and always follow with a 30-minute conversation where the candidate walks through their decisions and extends the solution live. That conversation is what makes the format robust: someone who outsourced the work cannot defend it, and someone who used AI tools well can show you their judgment, which is what you are hiring anyway.
Live coding sessions give you consistent conditions across candidates and let you watch reasoning in real time: how they read unfamiliar code, what they do when stuck, whether they test as they go. The costs: anxiety suppresses the performance of some genuinely strong engineers, and the format tempts interviewers toward puzzle questions that predict nothing about the job. If you go live: use a realistic task in a real codebase, let them use their normal tools and search, and instruct interviewers to help when the candidate is stuck on something incidental, because you are measuring problem solving, not stamina.
Pick one format per role and give every candidate the same one. Mixing formats across candidates makes comparison meaningless.
Write the scorecard before the first interview
A scorecard written after you meet candidates is a rationalization engine. Write it when you design the loop. A workable structure:
- Dimensions: four to six, taken from your list of what the job requires. For example: problem solving, code quality and craft, system thinking, communication, ownership.
- Scale: four levels, each with a written behavioral anchor. For code quality that might be: 1, code works but is hard to follow and untested; 2, readable code, tests only where prompted; 3, clean structure, sensible tests, names tradeoffs in their choices; 4, all of level 3 plus they improved something they were not asked to touch and can explain why it was worth it.
- Assignment: each stage scores only its assigned dimensions. The screening call does not rate system thinking. This stops one strong impression from bleeding across the whole card.
- Evidence: every score requires a written note of what the candidate said or did. “Seemed strong” is not evidence. “Asked about write volume before choosing a queue, and revised the design when I added the multi-region requirement” is.
Then define the bar in writing: which dimensions must reach level 3 for this role, and where level 2 is acceptable. A senior hire might need 3 or better on system thinking and ownership while a 2 on a specific framework is fine, because frameworks are learnable in weeks and judgment is not.
Signals that predict, noise that does not
Signal worth writing down: asking clarifying questions before answering, reasoning aloud through uncertainty, naming the weakness in their own proposal before you do, specific owned failures with lessons attached, changing position when given new information, and questions about your codebase and practices that show they are evaluating you seriously.
Noise that feels like signal: confidence and speaking speed, pedigree (past employer names tell you where someone was hired, not what they did there), fluency in your exact stack’s trivia, and how much you enjoyed the conversation. Likability matters for teammates, but it is the single easiest dimension for bias to hide inside, which is why it never gets its own unstructured score.
Reduce bias and inconsistency with structure
Unstructured interviews are where inconsistency lives: different candidates get different questions, and interviewers grade against their mood. The fixes are unglamorous and effective:
- Ask every candidate the same core questions, in the same order, per stage.
- Have interviewers submit written scores and evidence before seeing anyone else’s opinion and before the debrief. Independent first impressions are the whole point.
- Calibrate new interviewers by having them shadow two loops and score silently, then compare notes against the experienced interviewer.
- Keep interviewers away from the resume details they do not need. The person running the coding session does not need to know where the candidate went to school.
- Every quarter, look back: did scorecard results predict who got hired, and, for those hired, who performed? Retire stages and questions that never separated candidates.
Respect candidate time, and know when a loop is too long
Every added stage costs you candidates, and the cost is concentrated among the best ones, because they are the ones with competing offers and the least patience for ceremony. A loop is too long when a new stage cannot name a dimension it measures that an existing stage does not, when total candidate time passes four hours, or when your time-to-offer stretches past two weeks while candidates you wanted accept elsewhere.
Set service levels and keep them: feedback or a decision within 48 hours of each stage, and a final answer within a week of the last one. Tell candidates the full shape of the loop upfront, including total time, so they can decide with clear eyes. And reject kindly and fast. Rejected candidates talk, and some of them are your customers.
The debrief and the decision
Run the debrief within a day or two of the final stage. Format: everyone has already submitted written scores, so the meeting starts by reading, not talking. Then discuss evidence, dimension by dimension, starting with the most junior interviewer so nobody anchors on the loudest or most senior voice. Disagreements are useful: two interviewers who scored communication differently should compare what they actually observed, because one of them usually saw a context the other did not.
Then one person decides. Consensus hiring drifts toward safe, unremarkable yeses and penalizes candidates with any strong opinion. The hiring manager owns the call, weighs the scores against the pre-written bar, and writes down the reason either way. If the pipeline has been thin for weeks and this candidate is at the bar’s edge, the answer is still the bar. Lowering it under pressure is how a six-month performance problem gets hired in an afternoon.
Six months later, close the loop: compare the scorecard to how the hire actually performed. That comparison is the only way your process gets more predictive over time instead of just more elaborate.
The shortcut
Everything above works, and all of it costs calibrated interviewers, engineering hours, and weeks of calendar time per hire. That is the honest price of building the capability in-house, and if you hire regularly, it is worth paying. The other path: a vetted network like turnkey.dev runs the technical screening (coding, system design, communication) before you ever see a profile, so your own loop can shrink to the parts only you can judge: fit with your product, your codebase, and your team. Either way, the principles hold. Decide what the job needs, measure only that, write the bar down before you meet anyone, and let evidence, not charisma, make the call.
Frequently asked questions
How many interview stages should a developer hiring process have?
Three to four focused stages for most roles, totaling under four hours of candidate time. Beyond that, each added stage tends to repeat signal you already have while increasing dropout among the strongest candidates, who usually hold competing offers.
Are take-home assignments better than live coding interviews?
Neither is better in general. Take-homes resemble real work and remove performance anxiety, but they cost the candidate unpaid hours and are easy to outsource. Live sessions show reasoning in real time but penalize people who think slowly and well. Pick one, keep it short and realistic, and always discuss the code afterwards.
What should a technical interview scorecard contain?
Four to six dimensions tied to the actual job (for example problem solving, code quality, system thinking, communication, ownership), a rating scale with written behavioral anchors for each level, and a required evidence field. Every interviewer scores independently in writing before anyone talks.
How do you reduce bias in technical interviews?
Structure is the main lever: ask every candidate the same questions in the same order, score against written anchors, and collect independent written feedback before the debrief. Also separate the interviewers from the final decision maker, and audit outcomes periodically to see whether scores predicted performance.
Should candidates be paid for take-home assignments?
If the assignment takes more than two to three hours, yes, or shrink it until payment is unnecessary. An unpaid multi-day project filters for people with free time, not people with skill, and senior candidates with options will simply decline it.