Senior Python Engineer (Hiring Globally)
- Discuss this with your agent
- Open in Claude
- Open in ChatGPT
Role details
Tech stack
+28 more
Job description
We run a distributed, camera-based video monitoring and AI alerting platform. The estate spans an AWS-hosted fleet of services and workers, a GPU-backed computer-vision inference pipeline, a real-time streaming and presence layer, and thousands of on-premise edge âmedia boxesâ that ingest camera feeds, serve video, and stream events back to the cloud., We are looking for a Senior Python Engineer: a strong programmer first, with real depth in both Python and Java to lead and execute that migration. You will design and build the new Python services, port existing Java functionality across with its behaviour intact, and occasionally maintain and fix the existing Java stack while it remains in production. This is a builderâs role at the centre of a major platform modernization.
What youâll work on: The new Python platform (primary)
A greenfield, strongly-opinionated monorepo built for the long term:
- Python 3.14, managed with uv workspaces (libs/, packages/, svcs/, apps/, scripts/), scaffolded from Copier templates.
- FastAPI services with Strawberry GraphQL as the primary data API; REST where itâs the right fit; Uvicorn ASGI.
- psycopg3 straight against PostgreSQL / TimescaleDB using the repository pattern - deliberately no ORM - with yoyo migrations.
- Pydantic / pydantic-settings for models, validation, and config; httpx for outbound HTTP; pendulum for datetimes; structlog + OpenTelemetry for observability.
- Strict engineering standards, enforced in CI: full type annotations under a strict mypy config, ruff lint + format, and a curated, opinionated set of approved libraries (alternatives are banned at the linter level, on purpose).
- A strong testing culture: pytest, TestClient, async tests, real test databases.
The legacy Java stack (occasional, ongoing)
- ~140 Java 8 services and libraries: REST APIs, SQS/SNS workers, Lambda functions built with Gradle and Bazel, running on Jetty 9.4, deployed to Elastic Beanstalk, ECS, and Lambda.
- Domains include alerts, analytics, API, auth, clips, media, presence, notifications, and partner integrations.
- Youâll read this code to understand behaviour before porting it, keep it healthy with bug fixes and small changes while itâs still live, and decommission pieces as their Python replacements land.
The platform around it
- AWS (us-west-2): EC2/ECS, Lambda, S3, RDS (PostgreSQL/TimescaleDB), ElastiCache (Redis), MSK (Kafka), Kinesis & Kinesis Video Streams, IoT Core, Cognito, SQS/SNS/SES.
- A GPU-backed computer-vision inference tier producing the alerts that reach parentsâ phones.
- Edge appliances (Linux + Docker) in the field, reachable over AWS IoT.
What youâll do:
- Design and build new Python services in the monorepo (schema, data access, business logic, APIs, and tests) to a high, consistent standard.
- Migrate functionality from Java to Python: study an existing Java service, capture its real behaviour and edge cases, and re-implement it idiomatically in Python without regressions.
- Maintain the Java stack as needed: diagnose and fix production issues, make targeted changes, and keep services healthy until theyâre retired.
- Set and uphold engineering standards in the new codebase: typing, structure, the libs/svcs separation, the repository pattern, testing, and review quality.
- Work with data: model schemas in PostgreSQL/TimescaleDB, write correct and efficient SQL, and design migrations.
- Own your work end to end: from design through deploy, observability, and on-call follow-through, and drive it to a durable resolution.
Requirements
- Strong software engineer first. Excellent fundamentals: data structures, concurrency, API and data modelling, testing, and writing code others can maintain.
- Senior-level Python in production: idiomatic, fully typed, well-tested. Comfort with async, packaging, and a modern toolchain (type checkers, linters, virtual envs).
- Solid Java in production: able to confidently read, debug, and modify a large existing Java codebase, and reason about its behaviour well enough to port it.
- Strong with relational databases (PostgreSQL preferred) writing SQL directly rather than leaning on an ORM, and designing schemas and migrations.
- Hands-on AWS experience building and operating real services.
- Migration / modernization mindset: you can hold âmatch the old behaviourâ and âbuild it right for the next ten yearsâ in your head at the same time.
- A bias for follow-through: you find whatâs actually needed, focus on it, and finish.
- Excellent English communication.
Nice to have:
- FastAPI, GraphQL (Strawberry or similar), and async Python at scale.
- uv, monorepo workflows, and strict typing (mypy) / ruff in CI.
- TimescaleDB or other time-series data.
- Gradle and/or Bazel builds; Jetty; AWS Lambda.
- Messaging and streaming: Kafka/MSK, SQS/SNS, Kinesis.
- Containers (Docker/ECR/ECS), CircleCI, and infrastructure-as-code (Terraform).
Apply for this position
This job is hosted externally. Click below to view the full posting and apply.
Apply on www.adzuna.co.ukGood distractions
Talks and stories from around this role â technically off-topic, practically not.
Moments
Explore playlistsVideos
See allRelated articles
See all
Fully Remote Software Engineer Jobs
Dev Digest 120 - Apple and peers
Is Software Engineering Over-Saturated?
Highest Paying Tech Companies for Developers