
The interview that gets you a good first engineer is the wrong interview for your tenth, and most startups do not notice, because the loop is written once and then inherited.
Usually it is inherited from somewhere much larger. A founder who worked at a company with a thousand engineers reproduces the loop they sat through, including the parts that only make sense when you are hiring four hundred people a year and need a process that works without you in the room.
What you actually need changes about three times in the first ten hires.
At this size there is no onboarding, no documentation, and nobody to ask. The job is to take something vague and make it exist, on infrastructure that does not fully work yet.
What to test. Breadth and completion. Give them something small but genuinely end to end on an unfamiliar environment: make a thing work, deploy it, prove it runs. Watch what they do when they hit the part nobody prepared.
What to listen for. Questions that narrow scope rather than expand it. At two people, somebody who gold-plates is a real risk, and so is somebody who stops dead when the instructions run out.
The failure this prevents. The brilliant specialist who needs a functioning team around them to be productive, hired into a company that does not have one yet.
Now there is code somebody else wrote, and the cost of a disagreement is a meaningful fraction of your week.
What to test. Joining. Hand them a repository with existing conventions and a task inside it. Does the work look like it belongs, or like a visitor passed through?
What to listen for. How they describe a decision they disagree with. At this size, one person who cannot be argued with, or who will not argue at all, shapes the codebase for years.
The failure this prevents. Four people working in four personal styles, which at five engineers becomes the main source of friction and at fifteen becomes an irreversible mess.
Here the question stops being about general quality. You have a shape now, and it has holes.
What to test. Whatever nobody currently does. That might be testing discipline, or operational instinct, or the willingness to own a pager, or the ability to read legacy code without rewriting it. It is a different interview for each hire, and it is usually not the one you ran last time.
How to decide. Look at the last three months of incidents and delays, not at a job description template. The gap is written in what actually went wrong.
The failure this prevents. Ten people who are all good at the same thing, which feels like a strong team right up to the first incident nobody knows how to handle.
Three things hold at every stage:
Interview on real work. Puzzles are always the wrong tool here, and at this size you can afford less waste than anybody. Practical developer assessment is the general argument.
Decide fast. Your competitive advantage over a larger company is speed, and it is the only one you have in a hiring process. A week of internal deliberation hands your candidate back to a company with a bigger budget.
Write down what you are assessing, even with three people. Especially with three people, because informal judgment at small scale is where founder preferences quietly become hiring criteria.
Two things that early-stage hiring gets wrong, and that cost real money:
Senior does not mean senior-at-a-big-company. The skill you need is working without the scaffolding that a large company provides. Someone excellent inside a mature platform team may be genuinely lost without it, and the interview should find that out rather than assume either way. Hiring without seniors covers the inverse case.
Your tenth hire changes the job of your first. Say so in the interview. Some people want to be employee one forever and are unhappy at twenty; others are waiting for structure to arrive. Both are fine, and both are better discussed than discovered.
Every stage above wants the same thing: the candidate working in something that resembles your actual environment, quickly, without a day of setup from a team that does not have a day.
EasyEnv gives you a disposable workspace built from your repository and toolchain, the same one every time, available on a link. For hires one and two that means a real deploy target rather than a hypothetical. For three to five it means your conventions are present, so you can see whether somebody follows them. For six to ten it means you can build a scenario around the specific gap you are hiring for, and reuse it the next time the gap appears.
The limits, plainly. Setting up the first scenario takes an afternoon from someone who already has none. Below three or four hires a year, the process overhead is real and the right answer may be a single conversation plus a short paid piece of work. And none of this helps with the hardest early-stage problem, which is persuading a good engineer to join a company that might not exist in a year.
Do not run one loop for ten hires. For the first two, test whether somebody can finish something alone on an environment that does not fully work. For three to five, test whether they can join a codebase without leaving their fingerprints on every file. For six to ten, test the specific thing the team cannot do yet.
The question is never who is the strongest engineer. It is what is missing this month, and the answer is already written in what went wrong last quarter. When the team reaches the point where this stops scaling, scaling technical hiring from 5 to 50 engineers is the next problem.
Run live coding sessions and take-home challenges in real production environments. Watch sessions back, score consistently, and hire with confidence.
More posts you might like
Rust interviews still argue about the borrow checker, which the compiler settled before anyone sat down. Here are four tasks on a service that compiles cleanly and behaves badly, panics in the request path, a blocked async runtime, errors that help nobody, and a hot path nobody measured.
The backup job is green and nobody has ever run the other half. Here are four tasks on a real box that test whether a candidate can restore, verify, and tell you in minutes how much data was lost, which is the only number that matters during an incident.
Read moreEveryone says they know Git until a bad merge lands on main and the team loses a morning. Here are four tasks on a real repository, a conflict that is not textual, a commit that has to come out, a branch that has drifted, and a bug with an unknown origin.
Read more