skip to content

In a take-home submission, what do reviewers actually learn from the tests you include?

level: middleimportance: should knowfreq 50%

answer

  1. The suite states what you thought could break
  2. Follow the brief's own emphasis
  3. Few and deliberate beats broad and shallow
  4. Fast, deterministic, one documented command
  5. Write the untested areas down

basics

~20 s

Tests show a reviewer which behaviour you consider load-bearing and whether you can make code verifiable under a deadline. A handful of meaningful tests plus a README note on untested areas beats broad shallow coverage.

solid answer

~50 s

In a time-boxed exercise, a test suite is read as a statement of priorities: whatever you chose to protect is what you think could break. So test the core logic, the edge cases the brief hints at - malformed input, duplicates, empty batches - and at least one failure path, rather than spreading thin assertions across trivial accessors to raise a coverage number. Make the suite runnable with one documented command and keep it fast enough that a reviewer actually runs it. If you ran out of time, say in the README which areas are untested and how you would cover them; a stated gap reads as prioritisation, while silence reads as either an oversight or a habit. A brief that mentions correctness or data quality is telling you exactly where the tests should land.

go deeper

for a junior

Remember that some tests are expected even when the brief does not ask for them. Cover the main logic and the obvious bad-input case, and make sure the command that runs them is written down.

for a middle

Explain how you pick what to test inside a few hours: follow the emphasis in the brief, protect the logic that would be embarrassing to get wrong, and keep the suite fast and deterministic so it passes on someone else's machine.

for a senior

Show that you treat the suite as a risk statement - the gaps you accepted, why you accepted them, and what you would cover next - and that you can defend those rankings when a reviewer questions them.

for a principal

Own the tension between a suite that proves the exercise works and a suite that demonstrates a testing philosophy you would bring to a real codebase, and be able to say why you weighted one over the other inside a fixed budget.

## Tests are a priorities document On a real team, a test suite accumulates. In a take-home, every test was written on purpose inside a few hours, so the suite reads as a direct statement of what you believed was worth protecting. That is why reviewers weight it far beyond pass or fail - a suite of nine well-chosen tests tells them more about your engineering instincts than another hundred lines of feature code would. ## What to cover when you cannot cover everything Work outward from the brief. If a remote-first scale-up's data brief asks you to ingest messy event files, deduplicate and aggregate, the words *messy* and *deduplicate* are the rubric telling you where correctness matters. A defensible suite for that brief might be nine tests: three on the malformed-row path (a missing field, an unparseable timestamp, a truncated line), two on deduplication (exact duplicate, near-duplicate that must not collapse), two on the aggregate arithmetic including an empty input, and two end-to-end tests that run a small fixture directory through the whole path. Total runtime under 40 seconds, one command to invoke. Contrast that with 140 assertions spread across getters, constructors and configuration objects. Coverage looks impressive; the suite protects nothing that could plausibly go wrong; and the reviewer concludes you write tests to satisfy a tool rather than to manage risk. ## The properties reviewers notice **One documented command.** If the README's test command does not work, the tests effectively do not exist. This is the same clean-machine discipline the run instructions need. **Speed.** A suite that takes minutes will be read rather than run. Keep integration-ish tests to small fixtures. **Readable names and arrangement.** A test whose name states the behaviour lets a reviewer understand your intent without reading the body - useful, because they may only skim. **Determinism.** Tests that depend on wall-clock time, network access or iteration order fail on the reviewer's machine and turn a strength into a liability. Inject the clock, use fixtures, avoid live calls. **No test-only cheating.** Assertions that mirror the implementation line for line, or that were clearly written after the fact to pass, are visible and are read as decoration. ## Saying what you did not test The README should carry a short line: which areas are covered, which are not, and what you would add first with more time. This is the cheapest signal in the whole submission. A reviewer who sees no tests around, say, concurrent writes has two hypotheses - you did not think of it, or you thought of it and ranked it below the deduplication logic - and only your README can tell them which. Stating the gap also protects you from the opposite failure: piling on tests in the last hour so the suite looks thorough, which usually produces the shallow coverage described above and eats the time the README needed. ## When the brief says nothing about tests Include some anyway. A brief that omits testing is not granting permission to skip it; for most engineering roles it is a baseline expectation, and its absence is one of the most frequently cited reasons a submission is scored down. The exception is a brief that explicitly says not to write tests, or one so small - a single pure function - that the tests would outweigh the exercise. Even then, one line in the README explaining the decision costs nothing. ## The shape to aim for Few, deliberate, fast, deterministic, named for behaviour, aimed at whatever the brief emphasised, with the gaps written down. That shape survives the time pressure of a four-to-eight hour exercise and gives the reviewer something to talk about in the follow-up conversation, which is often where the take-home is actually decided.

  • Is high coverage on a take-home a good goal to chase in the final hour?
    No. Late coverage-chasing produces thin assertions on trivial code, which reviewers read as satisfying a tool rather than managing risk, and it consumes the time the README needs. Better to stop, confirm the existing tests are deterministic and fast, and spend the remaining minutes writing down what is untested and why.
  • What should you do when the take-home brief never mentions testing at all?
    Include tests anyway. For most engineering roles they are a baseline expectation, and their absence is a common reason submissions are scored down. Keep the suite small and aimed at the logic the brief emphasises, and add a README line explaining what you chose to cover, so the reviewer sees the decision rather than guessing.
  • Why do reviewers care whether a take-home's tests are deterministic?
    Because they run them on their own machine. A suite that depends on wall-clock time, network access or iteration order fails there, and a red suite in front of a reviewer turns your strongest signal into evidence of carelessness. Inject the clock, use fixtures, and keep external calls out of the exercise.

saying these in an interview costs you the question

  • Chasing a coverage number instead of testing risky logic
  • Tests that fail on the reviewer's machine through clock or network dependence
  • No tests at all because the brief did not ask
  • A test command that is missing from the README
  • Skipping tests to spend the hours on unrequested features
  • Untested areas left unmentioned, so gaps look accidental

context