Tech hiring Software engineering

Hire Python developers who write software, not scripts.

A Python developer builds web back ends, APIs, automation and data-heavy services in Python, most often on Django or FastAPI. Plenty of people can write a Python script. We shortlist those assessed on the harder thing: typed, tested, packaged code that a team can run in production and change without fear.

01 The role

What a Python developer does, and what they ship.

A Python developer designs and builds the server side of an application: the data model, the business rules, the API and the background tasks. The same person often writes the automation around it, such as importers, report generators and the scripts that tie one system to another, because Python is as comfortable there as it is behind a web request.

Python is easy to start and hard to keep tidy. Nothing forces you to declare a type, structure a package or pin a dependency, so the gap between a working notebook and maintainable software is wide. The difficult parts are familiar to anyone who has run it at size: ORM queries that multiply quietly, synchronous calls hiding inside async code, a task queue that loses work on restart, and a deployment that differs from the laptop.

Good current practice narrows that gap: type hints checked by mypy or Pyright, Pydantic models at the boundaries, Ruff for linting, uv or Poetry for reproducible environments, pytest throughout. This page is about Python as application engineering. Pipelines and warehouses belong to data engineers, and training or serving models to machine learning engineers, even though they share the language.

What they ship

  1. Web applications and admin back offices on Django
  2. JSON APIs on FastAPI or Django REST Framework
  3. Background tasks and scheduled jobs on Celery or a similar queue
  4. Importers, scrapers and automation that replace manual work
  5. Integrations with payment, accounting, CRM and partner APIs
  6. Internal data services that serve reports or model outputs to a product
  7. Command-line tools and packaged libraries other teams install

02 Skills and stack

Skills to look for, in three columns.

Django and FastAPI lead to quite different codebases: one arrives with an ORM, an admin and conventions, the other leaves those choices to you. Say which you run, and whether the code is async.

Core

The role cannot be done without these.

  • Python in depth: data model, typing, packaging
  • A web framework: Django or FastAPI
  • SQL and relational data modelling
  • HTTP and API design
  • Testing with pytest
  • Concurrency: asyncio, threads, processes, task queues
  • Debugging and profiling

Tooling

Varies from team to team.

  • Django and Django REST Framework
  • FastAPI with Pydantic; Flask in older codebases
  • SQLAlchemy and Alembic, or the Django ORM
  • PostgreSQL
  • Celery, RQ or Dramatiq, with Redis or RabbitMQ
  • pytest
  • Ruff, and mypy or Pyright
  • uv or Poetry
  • Docker
  • Gunicorn or Uvicorn

Adjacent

Useful, not required.

  • pandas or Polars for data handling
  • LLM APIs and retrieval, for AI features
  • A front-end framework, or HTMX with server templates
  • Cloud services (AWS, Google Cloud, Azure)
  • CI/CD pipelines
  • Linux and shell scripting
  • Workflow tools such as Airflow

03 When to hire one

Hire a Python developer for the right problem, or hire someone else.

We would sooner point you to a different role than fill the wrong one. Both lists are worth a minute.

Hire a Python developer when

  • Your product sits close to data or machine learning

    The models, the analysis and the libraries are already in Python. Writing the application in the same language removes a translation layer between the data team and the product.

  • You need a back office as much as a public product

    Django’s admin gives operations staff a usable interface to the data almost for free, which matters in marketplaces, lending, logistics and anything with manual review.

  • Notebooks and scripts are doing a production job

    Something an analyst wrote now runs every night and the business depends on it. It needs tests, error handling, a schedule and an owner.

  • A Django or Flask application needs upgrading

    The framework is several versions behind, the dependencies are unpinned and nobody wants to touch it. A developer who has done an upgrade knows the order to do it in.

  • Staff spend hours moving data between systems

    Exports, re-keying and reconciliation are well suited to Python automation, provided someone builds it to fail loudly and recover.

Look elsewhere when

  • The job is pipelines, a warehouse and data quality

    That is data engineering: orchestration, dbt, partitioning and lineage. A web-focused Python developer will get there slowly.

    Hire data engineers
  • You want models trained, tuned and served

    Knowing Python is necessary but nowhere near sufficient. Training, evaluation and model serving are a separate discipline.

    Hire machine learning engineers
  • The main deliverable is an LLM assistant or agent

    A Python developer can call a model API. Making the answers reliable and measurable is what an AI engineer is assessed on.

    Hire AI engineers
  • You need thousands of long-lived connections and a TypeScript front end

    Python can do real-time work, but Node is the more natural fit and shares a language with the browser.

    Hire Node.js developers
  • The question is what the data says, not what to build

    Dashboards, metrics and ad hoc analysis need an analyst’s judgement about the business, not an application developer.

    Hire data analysts

04 How we assess

How we assess Python developers, before you meet one.

A CV says what someone claims. We test what they can do, then send you the evidence with the shortlist.

  1. Stage 1

    Profile review

    We look for Python that has run as a service, not only coursework and notebooks: a deployed Django or FastAPI project, a package, a repository with tests. We read for structure, type hints, dependency management and how the code treats failure.

  2. Stage 2

    Technical test

    A timed test on Python fundamentals, data structures, SQL and web concepts, with coding exercises and a problem-solving task. We pay attention to whether the solution is idiomatic and readable, and not only whether it returns the right answer.

  3. Stage 3

    Conversation with our team

    Our engineers ask the candidate to walk through an application they built: how the models and queries were designed, what ran in the background and how it was retried, how it was tested and deployed. We ask where Python’s limits affected their design.

  4. Stage 4

    Review and levelling

    Reviewers score accuracy, speed, problem-solving, communication and teamwork, then assign a level from our engineering framework. For Python roles the notes separate application engineering experience from data or scripting experience, because the two are often blurred on a CV.

  5. Then

    Your shortlist

    Assessed candidates, with notes and scores.

The engine

Evalia

Assessments run on Evalia, the assessment platform we built ourselves. Across the ProDevs network, more than 100,000 assessments have been completed.

The levels we assign are public. Read the engineering framework, or see how a hire runs from brief to offer.

05 Seniority

Three levels. What each one can own.

Years of experience are a weak guide. Ask what the person has owned, and who was checking their work.

Junior

Owns a view, a task or a script

  • Adds endpoints, models and migrations inside an established project layout
  • Writes readable, idiomatic Python and pytest tests for their own code
  • Uses the ORM correctly for simple cases and asks about the complex ones
  • Needs guidance on schema design, async code and production behaviour

Mid-level

Owns an application area

  • Takes a feature from data model to deployed endpoint, including background work
  • Spots and removes N+1 queries, missing indexes and slow serialisation
  • Knows when async helps and keeps blocking calls out of the event loop
  • Writes tasks that can be retried safely and leaves a trace when they fail

Senior

Owns the service and its standards

  • Chooses framework, project structure and data access patterns, and explains why
  • Introduces typing, linting and test conventions into a codebase that lacks them
  • Plans framework and Python version upgrades without freezing feature work
  • Decides what stays in Python and what should move to a queue or another service

Indicative salary

Backend developers (Node, Python, PHP). Annual, in US dollars, for remote roles with US, UK and EU companies.

Mid-level
$28–50k
Senior
$50–80k
Typical US equivalent
$120–190k

Indicative market ranges as of August 2026, based on ProDevs placement experience and published market data. The exact figure depends on stack, seniority and time-zone requirements. See the full cost breakdown.

06 Interview questions

Questions for Python developers, and what to listen for.

Borrow these for your own interview loop. Beside each is what to listen for.

  1. A Django or SQLAlchemy page makes 300 queries. How do you find out why, and fix it?

    A good answer shows: They name a tool, such as the debug toolbar or query logging, identify the N+1 pattern, and fix it with select_related, prefetch_related or eager loading. Strong candidates add a test or an assertion on query count so it cannot return unnoticed.

  2. When does asyncio make a Python service faster, and when does it make no difference?

    A good answer shows: It helps when the service waits on many network calls at once and does nothing for CPU-bound work. They should mention the danger of a blocking library call inside an async function. “Async is always faster” is the weak answer.

  3. What does the GIL mean for how you design a CPU-heavy job?

    A good answer shows: A practical account: threads do not run Python bytecode in parallel on a standard build, so heavy work goes to processes, native libraries or a task queue. Awareness that a free-threaded build now exists is a bonus, not a requirement.

  4. How do you use type hints, and what do you do when the type checker complains?

    A good answer shows: They treat types as documentation the machine checks, run mypy or Pyright in CI, and fix the cause instead of scattering ignore comments. Someone who sees hints as optional decoration has probably not worked in a large Python codebase.

  5. A Celery task sends an email and charges a card. The worker dies halfway. What happens?

    A good answer shows: They reason about acknowledgement and retries, and conclude the task must be idempotent or split so that a retry cannot charge twice. Candidates who assume a task runs exactly once have not operated a queue under failure.

  6. How do you make sure the code runs the same on your laptop, in CI and in production?

    A good answer shows: A lockfile, a pinned Python version, a single tool such as uv or Poetry, and a container image built from the same definition. “pip install -r requirements.txt” with unpinned versions is the answer to worry about.

  7. When would you pick Django, and when FastAPI?

    A good answer shows: Django for a product with relational data, an admin and many conventional features; FastAPI for a focused API, especially an async one, where the team wants to choose its own components. They should be able to name what each choice costs later.

07 Ways to engage

Four ways to bring a Python developer in.

A permanent hire is the usual route, not the only one. Choose by how long the work lasts and who should employ the person.

Placement fee, of first-year salary. One-time.
10–15%
Replacement guarantee on direct hires.
2 weeks
To a first shortlist, for most roles.
48h
  • Direct hire

    A permanent employee on your contract and your payroll. One-time placement fee of 10–15% of first-year salary.

    Tech hiring
  • Dedicated team

    A Python developer inside a team we assemble and run for you: product, design and engineering on your roadmap, for a monthly retainer.

    Dedicated teams
  • Outsourcing & payroll

    A full-time person in a country where you have no legal entity. ProDevs employs and pays them: 20% of salary if we find the person for you, or 5% of salary, capped at $500 a month, for payroll and compliance on someone you have already chosen.

    Outsourcing
  • Freelance project

    A defined piece of work with a clear end. You pay the agreed price per milestone through escrow, plus a 5% client fee. Free to post.

    Freelancers

08 Around the role

Around the role: who a Python developer works with.

A Python developer often sits between two groups that do not otherwise talk much: the product engineers building the interface, and the data or machine learning people producing models and reports. Being fluent in the language both sides use makes them a natural bridge.

Front-end developer
Publishes an API schema, usually OpenAPI, and keeps it accurate as endpoints change.
Data engineer
Agrees which tables the application owns and how its data reaches the warehouse.
Data scientist or ML engineer
Wraps a model or an analysis in a service with inputs validated and failures handled.
DevOps engineer
Shares the container image, worker configuration and the metrics that say a queue is backing up.
Operations and support staff
Builds the admin screens and exports they use daily, and hears first when something is wrong.

09 Client testimonials

Hear it first-hand, from companies that hired.

Founders, operators and executives describe working with ProDevs, in their own words.

10 Questions

Before you hire a Python developer: the usual questions.

Something else? Book a call (opens in a new tab) and ask us directly.

  • What is the difference between a Python developer and a data engineer?

    A Python developer builds applications: web back ends, APIs and automation that users or other systems call. A data engineer builds the pipelines and warehouse that move and shape data for analysis. Both write Python, but the tools, the failure modes and the interview questions differ, so decide which problem you have before you brief the role.

  • Should we use Django or FastAPI?

    Django suits a product with a relational data model, user accounts and an internal back office, because the ORM, migrations and admin come included. FastAPI suits a focused API, particularly one that makes many concurrent network calls. Many companies run both. Tell us which your codebase uses so the shortlist matches it.

  • Can a Python developer build our AI features?

    They can integrate a model API and build the service around it. If the feature depends on retrieval quality, evaluation and keeping answers reliable at volume, that is the specialism of an AI engineer. If it depends on training your own models, you need a machine learning engineer. A capable Python developer works well alongside either.

  • What should a Python developer know in 2026?

    Modern Python with type hints, Django or FastAPI, SQL and an ORM, pytest, a task queue, and reproducible environments built with uv or Poetry. Ruff has largely replaced the older collection of linters and formatters. Comfort with asyncio matters for FastAPI work, and less for a conventional Django application.

  • What does a Python developer in Africa cost?

    For remote backend roles with US, UK and EU companies, indicative annual salary ranges are $28,000–$50,000 at mid-level and $50,000–$80,000 at senior level. A direct hire through ProDevs also carries a one-time placement fee of 10–15% of first-year salary, with a two-week replacement guarantee.

  • How long does it take to hire a Python developer?

    For most roles you see a first shortlist within 48 hours of agreeing the brief, and most companies find their hire within two to three weeks. Each shortlisted candidate has already been through four assessment stages on Evalia, so your own interviews can concentrate on fit with your codebase and team.

Talk to ProDevs

Tell us about the role.

Tell us the level and the stack. We will tell you how quickly we can put assessed Python developers in front of you.

Project work

Need it for a project instead?

Not every job needs a full-time hire. Describe the work, get proposals from vetted freelance Python developers, and pay per milestone through escrow. Free to post.