On this page
- Why screening matters more for code than for other labels
- Screen separately for every language
- Test reading unfamiliar code
- Test bug finding and classification
- Check that candidates run the code
- Test judgment of code quality
- Test explanation writing
- Separate screening for security labels
- Running a paid pilot before scaling
- Keep screening after hiring
- ✓Screen per language with practical tests, not résumés or general coding quizzes.
- ✓Test the skills annotation actually needs: reading unfamiliar code, finding bugs, judging quality and explaining clearly.
- ✓Require execution: annotators who do not run code produce plausible but wrong labels.
- ✓Keep screening after hiring with gold-set scores and calibration by language.
The short answer: Screening developer-annotators for code model data means testing each candidate, in each language they will label, on the tasks the work requires: reading unfamiliar code, finding and classifying bugs, running code against tests and edge cases, judging quality against a rubric and writing accurate explanations. Assignments should follow test results, and gold-set scores should confirm skill over time. Teams that need this at scale often use specialist code annotation providers who screen and calibrate developers by language.
Why screening matters more for code than for other labels
General annotators can describe what code appears to do. Only people who can actually program can verify whether it works, spot the edge case where it fails, judge whether it is idiomatic and explain it without introducing errors. Code models trained on labels from weak annotators learn plausible but wrong patterns, and those patterns are hard to detect because the labels look confident and fluent.
Screening is the main lever a program has over label quality. A strong screening process costs little compared with the training compute and engineering time wasted on bad code labels, and it is far easier than finding and relabeling bad data later.
Screen separately for every language
Programming skill does not transfer evenly between languages. A strong Python developer may struggle with Rust’s ownership rules, C++ memory management or the asynchronous patterns common in JavaScript. Screening should therefore test each language a candidate will annotate, using realistic code in that language, and assignments should follow the results. A developer cleared for Python should not quietly start labeling Go.
Track the language mix of your data and make sure screened annotators cover it in proportion. Gaps in rarer languages are common, and they show up later as lower agreement and higher error rates on exactly the samples the model finds hardest.
Test reading unfamiliar code
Most annotation work involves reading code someone else wrote, often without context. Screening tasks should present unfamiliar functions or modules and ask candidates to explain what they do, identify inputs, outputs and side effects, and predict output for given inputs. Strong candidates read carefully, notice assumptions and ask the right questions; weak candidates guess from names.
Include code with misleading variable names or comments, because real data contains them. Candidates who trust names over logic will mislabel such samples, and those mistakes are exactly what a code model should not learn.
Test bug finding and classification
Give candidates code with planted bugs of different kinds: off-by-one errors, wrong conditions, unhandled empty inputs, type mistakes, concurrency issues and resource leaks. Ask them to find each bug, explain why it is a bug and classify it using your taxonomy. Score both detection and classification, because programs often need both.
Include some correct code too. Candidates who report bugs in correct code generate false positives in production, which can be as damaging as missed bugs. A good screen measures precision as well as recall.
Check that candidates run the code
The single most important habit is execution. Screening should give candidates a sandbox and observe whether they run code against tests, try edge cases such as empty lists, very large numbers and unusual characters, and record what they ran. Candidates who rate code without running it should not pass, however experienced they seem.
In production, annotation tools should log execution so reviewers can see whether a rating was based on running the sample. See agentic code evaluation for how execution and tests are used when evaluating coding agents on full repositories.
Test judgment of code quality
Many tasks ask annotators to rate readability, structure, efficiency and adherence to conventions, or to choose the better of two solutions. Screening should present pairs and ask candidates to choose and justify their choice using your rubric. Compare their judgments with a reference set built by senior engineers and look for consistent reasoning, not just matching answers.
These preference judgments often feed reward models, so consistency matters a great deal. See reward modeling for how comparison data is used and audited for bias.
Test explanation writing
Explanations, comments and docstrings teach models how to describe code. Screening should ask candidates to explain code for a stated audience, such as a beginner or a senior engineer, and to write a docstring in the language’s conventions. Reviewers check accuracy first, then clarity and concision.
Inaccurate explanations are worse than none, because models repeat them confidently. Candidates who write fluent but wrong explanations are a risk, and good screening catches them before they reach production data.
Separate screening for security labels
Security labeling needs specialist skill. Candidates for security work should identify weaknesses such as injection, cross-site scripting, unsafe deserialization, hard-coded secrets and broken authentication, classify them using standard categories and propose secure alternatives. This is a separate screen from general code annotation.
Programs without screened security reviewers should not ask general annotators to label vulnerabilities, because missed or misclassified weaknesses teach insecure patterns. See AI safety testing for testing models against harmful code generation.
Running a paid pilot before scaling
A short paid pilot on real samples is the best final screen. Give a candidate group a batch from your data in each language, with gold items mixed in, and compare their labels with senior reviewer labels. Look at accuracy, execution logs, explanation quality and how often they ask useful questions.
Pilots also test your guidelines. Where strong candidates disagree, the rubric is usually unclear, and fixing it before scale saves far more time than it costs.
Keep screening after hiring
Skill must be confirmed continuously. Gold-set samples mixed into production work measure accuracy by annotator and language. Calibration sessions align annotators on borderline cases. Annotators whose scores drift are retrained or reassigned, and new languages require new screening before assignment.
Our code annotation outsourcing page explains how vetted Philippine providers screen and calibrate developer-annotators by language, and building a coding agent benchmark from real repositories covers the evaluation side of the same cluster.
Frequently asked questions
How should developer-annotators be screened?
With practical tests in each language covering code reading, bug finding, execution habits, quality judgment and explanation writing.
Can a Python developer label code in other languages?
Only after passing a screen in that language; skill does not transfer evenly between languages.
Why must annotators run the code?
Because code that looks correct often fails on edge cases; execution catches errors that reading alone misses.
How is annotator quality monitored after hiring?
With gold-set samples in production work, calibration sessions and retraining when scores drift.
