Skip to content
SkillCort

8 min · 8 stepsTest creation tutorial

How to create a coding test

The best coding tests look like a small, honest piece of the job — not a whiteboard puzzle a developer last saw in school. This tutorial shows how to build one in SkillCort: a realistic task in the code item type, a rubric that scores more than correctness, and integrity controls sized to the stakes.

What you'll need

  • A SkillCort workspace (or a demo)
  • A real example of the code your team writes — a bug, a small feature, a refactor
  • A senior engineer to define the task and the rubric
  • A decision on which languages you will accept

Step 1: Choose a realistic task over an algorithm puzzle

Look at your last month of pull requests and pick a task shaped like the ones that recur: fix a bug given a failing behavior, extend a small function to handle a new case, refactor a messy block, or write a data transformation. These predict day-to-day performance far better than inverting a binary tree.

Size it to 30–45 minutes of focused work for a competent hire. A puzzle rewards whoever has rehearsed it; a realistic small task rewards whoever can read existing intent, make a sound change, and keep the code understandable — which is what you are hiring for.

Strip framework-specific and company-specific knowledge unless the role genuinely requires it, and provide any context the task needs inside the brief itself. A strong engineer who has never touched your stack should still be able to show you sound judgment. Test the skill, not familiarity with your codebase's trivia.

  • Recurs in your real codebase, not in interview prep books
  • Has more than one reasonable solution
  • Fits 30–45 minutes without heroics
  • Readable by an evaluator in under ten minutes

Step 2: Create the code item in the items library

Make a folder for the role — Backend Engineer, for example — with tags for skill area and difficulty, then create an item using the code item type. Candidates write and edit code directly in the response area, and evaluators later review it in place.

Seed the item with starter code rather than a blank editor. A short function with a described bug, or a stub with a clear contract, anchors every candidate to the same starting point and makes their changes directly comparable. Real work almost never starts from an empty file, and neither should the test.

Step 3: Write the brief beside the editor

Use the side-by-side stimulus layout: the brief, requirements, and example inputs and outputs on one side, the code editor beside it. The candidate never scrolls away from the spec to write the solution — the same shape as working from a ticket in an IDE.

Write the brief the way a good ticket reads: current behavior, expected behavior, constraints, and two or three concrete examples. State explicitly what you care about — "working code first; we also read for clarity" — so candidates optimize for what you will actually score. Ambiguity in the brief becomes noise in the results.

Step 4: Build a rubric that scores more than correctness

Correct output is necessary, not sufficient. Build a level-based matrix rubric with three or four criteria — typically correctness, readability, and approach, optionally edge-case handling — each with anchored descriptions of what strong, acceptable, and weak code looks like. "Names reveal intent, no dead code" is scoreable; "clean code" is not.

Weight correctness heaviest, but keep the other criteria real: a barely working solution nobody can maintain is not a strong hire signal. When you attach the rubric it freezes into a snapshot, so every candidate in the run is reviewed against the identical standard even if the bank version evolves later.

Step 5: Assemble and timebox in the builder

Create the assessment as sections, pages, and blocks and import the code item through the picker. Many teams add a short first section of quick judgment questions — reading a diff, spotting the bug in a snippet, quick-pasted as multiple choice — and put the coding task in its own section.

Set the total time limit with slack for reading and thinking, and use a per-page limit on the coding page so the task cannot swallow the whole attempt. Weight the coding section heaviest (for example ×3) so role-fit on the Decision Board reflects the work, not the warm-up. Write instructions that name the allowed languages and what happens if time runs out.

Step 6: Preview, clear the checklist, and publish

Use Preview as candidate and attempt the task yourself, or better, have an engineer who did not write it attempt it cold. If they finish in ten minutes it is too easy; if they cannot finish in the limit, loosen the scope or the clock. Fix the brief wherever they hesitated.

Then satisfy the publish checklist — it blocks Publish until scoring, timing, and instructions are complete. A coding test with a missing rubric or an untested time limit should never reach a candidate, and the checklist makes sure it cannot.

Step 7: Set integrity controls proportional to the stakes

Create the delivery with a name and time window, then choose security toggles deliberately. For a standard hiring screen, copy/paste blocking and fullscreen lockdown with a sensible violation limit are usually enough. Webcam recording, screen recording, second-screen detection, and ID checks exist for genuinely high-stakes runs — certification, final rounds — not as defaults.

Everything you enable is disclosed at the consent and preflight gate before the candidate starts. Integrity signals are flags for a human to review in context, never grounds for automatic rejection — a fullscreen exit can be a notification, not fraud. Proportionality keeps strong candidates from walking away from a surveillance dragnet.

Step 8: Review code with the rubric, with AI as support

Evaluators review each submission against the shared rubric, clicking the level card that matches the code on each criterion — correctness, readability, approach. Putting two reviewers on borderline or high-stakes cases keeps the standard honest, and because everyone scores against the same frozen rubric snapshot, disagreements surface as specific criterion gaps rather than vague gut-feel differences.

AI can draft a summary of the submission and suggest criterion-level scores — a genuinely useful first pass on code, with the model and version logged for the record. But a named engineer confirms or overrides every score. AI is decision support here, never the decision-maker: the accountable judgment about a candidate's code is always human.

Pro tips

  • Steal the task from your own backlog — last quarter's real bug beats any invented exercise.
  • Starter code makes submissions comparable; blank editors make them chaos.
  • State in the brief exactly what the rubric rewards, and candidates will show you their best.
  • Two evaluators on close calls costs minutes and saves mis-hires.
  • Retire a task once it has run for a few cycles; the folder makes rotation cheap.

Frequently asked questions

Why not just use algorithm puzzles?
Puzzles measure puzzle practice. Most roles need someone who can read existing code, make a sound change, and keep it maintainable — and a realistic small task observes exactly that. Save algorithmic depth for roles where it is genuinely the job.
What if a candidate uses AI to write their solution?
Design for it rather than pretending it away. Keep the task specific enough that judgment shows through, keep controls proportional to the stakes, and review flags as a human — in context, never as an auto-reject. For senior roles, a short follow-up conversation about their choices verifies understanding fast.
Does SkillCort auto-grade the code?
Evaluation is rubric-based and human-owned. AI can draft summaries and suggest criterion-level scores, with model and version logged, but a named evaluator confirms or overrides each one. You get consistency from the frozen rubric snapshot, not from removing humans.
How long should a coding test be?
Around 45–60 minutes total: a short judgment warm-up plus one 30–45 minute task. Longer take-homes filter for free evenings rather than skill and measurably hurt completion — if you need more depth, run a second, shorter stage for finalists.

For hiring teams

See a coding test built from your backlog

Book a 30-minute demo and bring one real bug or feature — we will turn it into a scored, rubric-backed coding task while you watch.

How to Create a Coding Test | SkillCort