See what's new

Testlify
Hiring Guide
Last updated on: 6 October 202619 min read

How to Screen Candidates for Python Developer

Highlights effective techniques to assess Python developers, focusing on coding proficiency, framework knowledge, and ability to handle diverse projects.

How to Screen Candidates for Python Developer

Screening a Python developer comes down to three questions: can they write Python that works against a real spec, can they explain the tradeoffs they made, and does the kind of Python they know match the job you're filling. A resume tells you where someone has been. It doesn't tell you whether they can ship a working endpoint on Friday.

That gap is where hiring teams lose weeks. They read 200 resumes, run a phone screen that mostly tests enthusiasm, then find out in the technical interview that the candidate has never written a test. The fix isn't a harder interview. It's moving the evidence earlier, and scoring it the same way for everyone.

Summarise this post with:ChatGPTGeminiClaudeGrokPerplexity

TL;DR

  • "Python developer" covers at least four different jobs. Decide which one you're hiring before you write a single screening question.
  • Resume screening should only ever produce a maybe. Use it to rule out obvious mismatches, never to rank people.
  • A scored coding round beats an unscored one. Agree the rubric with your reviewers before anyone sits the test, and weight working code above clever code.
  • For API work, score the contract first: does the endpoint do what the spec says, store what it should, fail safely, and carry tests that prove it.
  • 84% of developers now use or plan to use AI tools, so pick an AI policy, put it in the invite, and score against it instead of pretending the question hasn't come up.
  • Keep every step job-related and written down. The Equal Employment Opportunity Commission expects selection tests to be validated for the job they gate.
Build your dream team — Book a product demo

What does a Python developer job actually cover?

Python developers build and maintain software in Python, but the title spans four fairly different jobs: backend and API services, data engineering and machine learning, automation and scripting, and full-stack web work. The U.S. Department of Labor classifies the broader occupation as Software Developers, code 15-1252.00, whose core tasks start with analyzing user needs and software requirements to judge whether a design is feasible inside time and cost limits.

That framing matters more than it sounds. A candidate who is excellent at pandas and scikit-learn may never have written an authenticated endpoint. Someone who has run Django in production for six years may have no idea how to tune a training loop. Both are Python developers. Only one of them fits your opening.

The talent pool is large and still growing. The Bureau of Labor Statistics counted about 1,717,800 software developer jobs in 2025 and projects the wider group of developers, quality assurance analysts and testers to grow 10 percent from 2025 to 2035. Python itself sits near the top of language use: in the 2025 Stack Overflow Developer Survey, 57.9% of all respondents reported using Python, fourth behind JavaScript, HTML/CSS and SQL, and up seven percentage points on the year before.

So you're not short of candidates. You are short of a way to tell them apart.

Name the variant before you screen

Write down, in one sentence, what this person will ship in their first quarter. "Owns our billing API and its tests" is a screenable sentence. "Strong Python skills" isn't. Every later decision in this article depends on having that sentence.

How do you read a Python resume without guessing?

Read a Python resume for evidence of shipped, owned work, not for keyword density. Spend 10 minutes maximum per resume, look for three specific things, and let the outcome be only pass or park. Ranking candidates off a document they wrote about themselves is how teams end up interviewing the best writer rather than the best engineer.

The three things worth looking for:

  1. Ownership, not exposure. "Built and maintained the payments service" beats "worked with Django". Look for a system they were accountable for, and for how long.
  2. The data layer. Most real Python jobs touch a database. A resume that names PostgreSQL, migrations, query tuning or an ORM is telling you something. One that lists only the language isn't.
  3. Evidence of testing and release. pytest, CI, code review, staged deploys. Candidates who mention these have usually worked somewhere that broke and learned from it.

What to ignore: years of experience as a proxy for skill, a wall of framework logos, certifications with no project attached, and the word "expert". None of them predicts much on its own. A qualifier question on your application form does more work than all four combined, because it is the same question for every candidate and the answer is a fact rather than a self-assessment.

Good qualifier questions for a Python role: which database did you use most recently in production, have you written automated tests for code you shipped in the last year, and which Python version does your current project run on. Short, checkable, and awkward to bluff.

What should a Python developer assessment test?

A Python developer assessment should test the competencies the job actually needs, each one mapped to a specific piece of evidence. In practice that means language fluency, the data layer, debugging, and one framework or domain skill matched to your opening. Breadth for its own sake wastes candidate goodwill and tells you less.

This is what Testlify is for. The idea is simple: don't start with a test, start with the role. Map the role to competencies, each competency to measurable evidence, and that evidence to a hiring decision. Role, competency, evidence source, method, weight, benchmark, reviewer input, decision guidance. Fill those columns in and the assessment designs itself, because every row has to justify its place by naming the decision it informs.

Applied to a backend Python opening, the matrix usually produces four rows:

  • Language fluency. Data structures, comprehensions, generators, context managers, error handling. Evidence: a timed multiple-choice or short-answer section, or a small intermediate Python algorithms test.
  • Applied coding. Can they build the thing. Evidence: a coding question with hidden test cases, scored per case.
  • The data layer. Schema sense, query correctness. Evidence: a SQL section, or database-backed test cases inside the coding question.
  • Judgment. How they choose between two workable options. Evidence: a structured interview question with a scoring guide, not a vibe check.

On tooling, the practical detail matters. Coding questions can be single file or a multi-file project, written in an embedded VS Code editor rather than a plain text box, with up to 20 test cases per question. Those cases can be visible to the candidate or hidden from them, scored individually, and they can include SQLite database cases so a question can test persistence rather than pure logic. Weighting runs from x0 to x5 per test, so a coding section can count five times what a language-trivia section counts, and any question can be marked non-scored when you want the signal without the math.

For a senior backend role, a reasonable shape is a Python 3 advanced section at weight x2 and an applied coding question at weight x5, with everything else at x1. For a first developer hire at a small company, drop the trivia entirely and run the coding question alone.

How do we evaluate a candidate in a coding round for API Python development?

Score an API coding round against the contract, not the style. Give the candidate a short written spec, then mark six things: does the endpoint behave as specified, does it persist data correctly, does it handle bad input safely, is it secured, do its tests prove it works, and is the code readable by the next person. Agree the weights before the round opens.

The reason to write that down is that unscored coding rounds drift. Two reviewers watch the same submission, one cares about naming conventions and the other cares about whether the 401 path works, and the candidate's outcome depends on who picked up the review. A published rubric fixes that, and it's also the thing that makes the decision defensible later.

Here is a rubric that works for a CRUD-plus-auth API task, sized for a 90-minute round:

Dimension

What you are actually checking

Weight

Fail signal

Contract correctness

Every documented route returns the documented status code and shape, including the error cases

30%

Happy path only; 404 and 422 unimplemented

Persistence

Data survives a restart, writes are not lost, the schema fits the spec

20%

State held in a module-level dict

Input handling

Validation at the boundary, useful error messages, no unhandled exception reaching the client

15%

A malformed body returns a 500 and a stack trace

Security basics

Auth on protected routes, secrets not hardcoded, no string-built SQL

15%

Token checked in one route and forgotten in the next

Tests

Tests exist, they run, and they cover at least one failure case

15%

One test asserting 200 on the index route

Readability

A reviewer can follow it without the author in the room

5%

One 300-line function

Two things about those weights. Contract correctness carries the most because it is the only dimension that maps directly to the job: an endpoint that returns the wrong shape breaks the mobile app regardless of how elegant the code is. And readability carries the least, at 5%, because it is the easiest thing to coach after someone joins and the easiest thing for a reviewer to over-penalize on personal taste.

Run the round with hidden test cases attached to the visible spec. Candidates see what is expected, your scoring sees whether they met it, and nobody's guessing. If you let candidates run the visible cases themselves, you get a cleaner signal on debugging too: the person who iterates until the cases pass is showing you how they work, not just what they know.

What to avoid in an API round: algorithm puzzles that have nothing to do with request handling, a spec so long it becomes a reading-comprehension test, and any task that needs a service the candidate has to sign up for. Keep the task smaller than you think it should be. You're measuring judgment under a deadline, not endurance.

Pro tip: have one of your own engineers sit the round cold and time it before you send it to a single candidate. If your own backend developer needs 80 minutes, a stranger under observation needs twice that. Most take-home tasks that candidates abandon halfway aren't too hard, they're too long, and you only find out when your completion rate drops.

Which soft skills actually matter, and how do you evidence them?

For a Python role, three non-technical skills predict more than the rest: written communication, judgment under ambiguity, and the willingness to say "I don't know yet". Each one can be evidenced rather than guessed, which is the only reason to screen for them at all.

Written communication is the easiest to measure and the most undervalued. Backend work is asynchronous: pull request descriptions, incident notes, design docs, a message explaining why a migration is risky. Ask candidates to write two or three sentences explaining a tradeoff they made in the coding round. You'll learn more from that than from a 45-minute call, and you can score it against a rubric. A communication skills assessment covers the general case if you need a comparable score across a large shortlist.

Judgment under ambiguity shows up when the spec is deliberately incomplete. Leave one requirement vague, then look at what the candidate did about it: assumed and documented, asked a question, or silently picked one and said nothing. All three are informative. Only the third is a problem. Problem-solving assessments get at the same trait more formally.

What not to screen for: "culture fit" as a free-text impression, confidence as a proxy for competence, and enthusiasm about your product. The first is a bias vector with no scoring guide, and the other two correlate with interview practice rather than engineering skill.

How do you handle AI coding assistants in a screening test?

Decide your policy, write it in the invite, and score accordingly. Pretending AI assistance isn't in play is the one option that doesn't work, because the data says almost everyone is using it. In the 2025 Stack Overflow Developer Survey, 84% of respondents were using or planning to use AI tools in their development process, up from 76% the year before.

The same survey is the reason this is a screening problem rather than a policing problem. 66% of developers said they deal with AI solutions that are "almost right, but not quite", the most commonly cited frustration in the survey, and 45.2% said debugging AI-generated code is more time-consuming. That's a description of a skill: spotting the plausible-but-wrong answer and fixing it. DORA's 2025 research puts the organizational version of the same finding plainly, reporting that AI improves throughput, but often at the cost of stability when the underlying foundation is weak.

So there are three defensible policies, and all of them are better than silence:

  1. AI allowed and declared. Candidates use what they use at work, and are asked to mark which parts were AI-assisted and why they kept or changed the output. You are scoring review skill, which is the job.
  2. AI off for one section. A short proctored section with AI-tool and browser-extension detection, full-screen enforcement and tab-switch detection, so you get one clean read on unassisted fluency, then a second open section for applied work.
  3. AI as the task. A vibe-coding question, where the candidate directs AI tools toward a working solution instead of writing syntax by hand. The thing being measured is whether they can get a correct result out of a tool that is often confidently wrong.

Pick one per role and say which in the invitation email. Candidates behave consistently when the rules are clear, and inconsistently when they have to guess. Proctoring presets make the difference enforceable rather than aspirational: a standard preset for a take-home, a strict preset with enforced controls for the section where unassisted fluency is the point.

What are the red flags in Python screening?

Most red flags are process problems wearing a candidate's face. These are the ones worth acting on:

  • A perfect submission with no history. Working code, no commits, no iteration, no questions. Ask them to extend it live by one small requirement. The answer takes two minutes to read.
  • Fluent about frameworks, vague about failure. Anyone who has run Python in production has a story about a migration that went wrong. No story usually means no production.
  • Cannot explain their own code. Not a nervousness problem. A reviewer asking "why a set here" should get an answer, even a wrong one.
  • Tests written after the fact to pass the rubric. Tests that assert what the code does rather than what the spec says. Common, and worth a conversation rather than a rejection.
  • Version drift. Code that would have been idiomatic in Python 2. It happens, and it tells you how recently they shipped.

And one anti-flag, because it costs good candidates: an incomplete submission isn't automatically a fail. A candidate who built four routes properly and left the fifth stubbed with a comment explaining the plan has shown you more than one who built five badly. Score the rubric, not the completion percentage.

What does it cost to hire a Python developer?

Budget against published wage data rather than against what a recruiter quotes you. The Bureau of Labor Statistics put the median annual wage for software developers at $135,980 in May 2025, and lists a bachelor's degree in computer or information technology as the typical entry-level education. Treat that median as your anchor and adjust for location, seniority and specialization rather than starting from a number someone else made up.

The cost that teams underestimate isn't salary. It's the cost of a bad screen. A mis-hire on a small engineering team costs the salary, the notice period, the ramp time of the replacement, and the opportunity cost of the quarter that got absorbed by it. That's the arithmetic that makes a structured screening round look cheap, and it's also why a 90-minute scored assessment that filters ten candidates is worth more than a 45-minute call that filters none.

Any test that gates a hiring decision is a selection procedure, and it carries obligations. The Equal Employment Opportunity Commission's guidance on employment tests is direct about the standard: where a selection procedure has disparate impact, the employer "must show that the selection procedure is job-related and consistent with business necessity", and employers "should ensure that employment tests and other selection procedures are properly validated for the positions and purposes for which they are used". The full guidance sets out how that validation is demonstrated.

In practice, three habits keep you on the right side of that:

  1. Test what the job needs. Every section of your assessment should trace to a competency in the job description. A brainteaser can't be defended as job-related for an API role.
  2. Keep it the same for everyone. Same task, same time limit, same rubric, same reviewers where possible. Consistency is both better measurement and better evidence.
  3. Keep the records. Scores, rubrics, reviewer notes and the reasoning behind each cut. Score thresholds, percentile ranks and reviewer-level comparisons give you a reviewable trail instead of a recollection.

Accessibility belongs in the same list. Offer a stated extension process, don't require a specific operating system, and make sure your time limits are about the work rather than about typing speed.

The five-stage Python screening funnel

Put the pieces in order and the process gets short. Each stage is allowed to make exactly one decision, which is what stops a phone screen from quietly becoming a technical evaluation.

  1. Application with qualifiers (2 minutes per candidate). Decides: does this person meet the stated non-negotiables. Evidence: structured answers to three checkable questions.
  2. Resume read (10 minutes, pass or park only). Decides: is there evidence of owned, shipped Python work. Evidence: a documented pass reason.
  3. Scored assessment (candidate spends 60 to 90 minutes). Decides: can they write working Python against a spec. Evidence: per-test-case scores, weighted section scores, a percentile against your other candidates.
  4. Structured interview (45 minutes). Decides: can they explain and defend their choices. Evidence: scores against a published guide, from two reviewers independently. A set of Python interview questions keeps that consistent across interviewers.
  5. Reference and offer. Decides: anything the first four stages couldn't see. Evidence: structured reference responses on specific competencies.

Run the assessment before the first human conversation, not after. That ordering is the single change that saves the most time, because the stage that scales is the one that doesn't need your engineers in the room. It also means the candidates who do reach your team have already shown they can do the work, which makes the interview a better conversation.

Push the scores into whichever applicant tracking system your team already runs, so the hiring manager sees the evidence next to the candidate rather than in a separate tab. Testlify integrates with the system you already use and leaves it as your record of the pipeline.

Hire Python developers on evidence, not hunches

If you're screening Python candidates this quarter, the fastest improvement available is a scored coding round with a published rubric, run before the first call. You can build one from a library of coding assessments, or map your role to the competencies that matter with help from the team. Book a walkthrough and bring the job description you are hiring against.

Frequently asked questions (FAQs)

Get started.

Hire on proof, not resumes.

Run your first skills-based assessment free — no credit card required.

We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking "Accept All", you consent to our use of cookies.