Senior Python Developer
At P2Bid, we build multiplayer games where every game mechanic is powered by a fast, reliable, and scalable backend.
We're looking for a Senior Python Developer with 5+ years of commercial Python experience, including 3+ years building asynchronous backend services under real production load.
About the role:
We're looking for an engineer who goes beyond implementation and takes ownership of technical decisions.
You'll be responsible for designing and evolving core backend services, owning critical parts of the system, reviewing code, and helping shape the technical direction of the product. We value engineers who think about reliability, scalability, maintainability, and long-term architecture—not just delivering features.
Requirements
- 5+ years of commercial Python development experience.
- 3+ years building high-load asynchronous backend services.
- Strong knowledge of Python 3.11+, async/await, the event loop, and asynchronous programming principles.
- Hands-on experience with asynchronous web frameworks such as FastAPI, Starlette, aiohttp, Litestar, or similar.
- Deep understanding of asyncio: gather, TaskGroup, task cancellation, timeouts, backpressure, and concurrency patterns. You understand why a silently failed background task is a production incident.
- Strong typing as a standard development practice. Experience with mypy or pyright, Protocols, Generics, and modern Python typing.
- Excellent SQL skills, including JOINs, indexes, transactions, and extensive experience with PostgreSQL.
- Strong understanding of PostgreSQL locking mechanisms (FOR UPDATE, SKIP LOCKED), transaction isolation levels, deadlocks, and query execution plans.
- Experience with SQLAlchemy (ORM or Core) or another mature ORM.
- Confident writing automated tests with pytest, fixtures, parametrization, and dependency mocking.
- Experience working with Docker, Git, and code reviews through Merge/Pull Requests.
- Production experience with message brokers such as Kafka, RabbitMQ, NATS, or similar. You've debugged real production issues—not just studied the concepts.
- Practical experience building distributed systems, including at-least-once delivery, idempotency, deduplication, and understanding why exactly-once delivery is not achievable over the network.
- Experience working with business-critical domains such as payments, billing, accounting, order management, inventory, or any system where mistakes have financial consequences.
- Strong understanding of failure scenarios. For example, you know how to handle cases where a request was sent but no response was received—and why a naive retry may be worse than a failure.
- Ability to perform meaningful code reviews, focusing on architecture, reliability, maintainability, and engineering quality—not just code style.
- English sufficient for reading technical documentation, writing code comments, and technical documentation. Spoken English is a plus but not required.
Tech Stack
- Python 3.12
- FastAPI
- PostgreSQL
- MongoDB
- NATS / JetStream
- Docker
- Kubernetes
We also use dishka (dependency injection), adaptix (mapping), FastStream (message broker abstraction), ty (typing), and uv (dependency management). You don't need prior experience with these libraries—they're based on familiar concepts and are easy to learn. During interviews, we focus on your understanding of asynchronous programming, SQL, distributed systems, and engineering trade-offs, not on knowledge of specific libraries.
If you meet most of the requirements, we'd love to hear from you—even if some technologies in our stack are new to you.