5 October — Senior Python Backend Engineer — prep map

Updated 16 min read source
On this page15
  1. 🔴 Python at senior depth — “5+ years of commercial experience”
  2. 🔴 Web frameworks — “modern Python web frameworks”
  3. 🔴 REST APIs — “build and maintain REST APIs”
  4. 🔴 Databases — “databases, migrations, and query optimization”
  5. 🔴 Integrations — “integrate internal and third-party services”
  6. 🔴 Testing — “write unit and integration tests”
  7. 🔴 Architecture and scale — “scalable Python backend services”
  8. 🟡 Decisions and review — “architectural decisions and code reviews”
  9. 🟡 Production — “support production services”
  10. 🟡 Healthcare — “a digital healthcare project”, “millions of patients”
  11. 🟢 AI in the product — “a platform using AI”
  12. 🟢 Delivery — Docker, CI/CD, Kubernetes, cloud
  13. 🟢 Live coding — in case
  14. The design question to rehearse
  15. Behavioural — the responsibilities, as stories

5 October — Senior Python Backend Engineer — prep map

Checklist format: tick what you can explain and defend under questioning, not what you have used. Bold is the primary note; the rest add depth.

Priority: 🔴 core (in the ad, will be probed) · 🟡 important (in the ad, lighter) · 🟢 breadth (implied by the product)

The ad decoded, your best evidence and the refresh plan are in 5 October, version 1 — Senior Python Backend Engineer, digital healthcare. Spoken versions of the likely questions are in Answers — say these out loud.


🔴 Python at senior depth — “5+ years of commercial experience”

Python 3.15 is not out yet. 3.15.0rc3 shipped on 2 October and the final moved a week, to 9 October 2026, over lazy-import release blockers. Say “3.14 is current, 3.15 lands this week”, then name the headlines: explicit lazy imports (PEP 810), a frozendict built-in (PEP 814), UTF-8 as the default encoding (PEP 686). The corpus has no 3.15 note yet; the source is the python.org announcement.


🔴 Web frameworks — “modern Python web frameworks”

Ask which framework early — the ad does not name one, so it is a fair question while they describe the project. Answer in FastAPI by default and give the Django equivalent in one clause: selectinload is prefetch_related, joinedload is select_related, an Alembic revision is a Django migration, a Pydantic model is a DRF serializer.


🔴 REST APIs — “build and maintain REST APIs”

Problem Details is RFC 9457 now. It obsoleted RFC 7807 in 2023. The error-handling note still cites 7807; naming the current number is a small senior tell.


🔴 Databases — “databases, migrations, and query optimization”

Have one database war story with numbers. “[The endpoint] took [X] s. The plan showed [a sequential scan / an estimate off by a thousand times / an N+1]. I [added a composite index / rewrote the predicate / used selectinload] and it went to [Y] ms.” Every database answer lands better attached to it.


🔴 Integrations — “integrate internal and third-party services”

Third parties in healthcare have their own shape. Expect EHRs, labs, pharmacies, insurers and identity providers. New ones speak FHIR R4 over REST, hospitals still speak HL7 v2 over MLLP, and both resend on timeout — so idempotency keyed on the message id is not optional. See Healthcare data standards. Your own integrations are the bridge: Salesforce and the OAuth2 services on the Automation Platform, and the auth, CRM and messaging clients on the Invest Planning Platform.


🔴 Testing — “write unit and integration tests”


🔴 Architecture and scale — “scalable Python backend services”


🟡 Decisions and review — “architectural decisions and code reviews”


🟡 Production — “support production services”


🟡 Healthcare — “a digital healthcare project”, “millions of patients”

The three things that catch engineers out, from the healthcare overview: a BAA constrains tool choice before you write any code; audit logging is a functional requirement with years of retention, not observability; and regulated records are never destructively updated.


🟢 AI in the product — “a platform using AI”


🟢 Delivery — Docker, CI/CD, Kubernetes, cloud


🟢 Live coding — in case


The design question to rehearse

“Design a service that receives patient data from partner clinics, runs it through an AI model, and shows clinicians the results through a REST API.” It touches every line of the ad. Walk it in this order, out loud:

  1. Clarify — volume and peaks, how fresh results must be, which partners and formats, which countries the data may live in — Interview framework, Capacity estimation.
  2. Ingest — a webhook or FHIR endpoint that verifies the signature, stores the raw payload append-only, dedupes on the partner’s message id with a unique constraint, and answers in milliseconds — Webhooks, Healthcare data standards.
  3. Normalise at the boundary — an adapter per partner maps into one internal model, so partner shapes never leak inward — Integration design, Schema and the internal model.
  4. Hand off reliably — an outbox row in the same transaction; workers call the model with timeouts, retries on transient errors, idempotency on the record id, and a dead-letter queue — The transactional outbox, Timeouts, retries and backoff.
  5. Serve — results in Postgres with the indexes the read API needs, cursor pagination, authorisation per record, and every read of patient data in the audit log — Indexes, Versioning and pagination, RBAC and ABAC.
  6. Operate — one trace id from webhook to worker to API, SLOs on freshness and errors, an alert on the oldest unprocessed record, logs with no PHI — Trace context in async Python, SLOs.
  7. Test — adapter tests on recorded partner payloads, integration tests on real Postgres, a scheduled contract check against each partner’s sandbox — Integration and contract testing.

Then name the failure modes before they ask: a partner resending after a timeout, a model call with no timeout holding a worker forever, PHI in a log line or a Sentry traceback, an index built without CONCURRENTLY locking the results table mid-deploy, a cache key without the tenant serving one clinic’s data to another, and an outbox relay that died quietly.


Behavioural — the responsibilities, as stories

Every responsibility line comes back as a question. One story per row, with a number in it where you can; the spoken skeletons are in The call — everything except the technical answers.

Ad line The question Draw it from Notes
ownership, design to production “A feature you owned end to end.” a workflow or integration on the Automation Platform, or an Invest Planning service through to Sentry Strongest project · Working independently
integrate third-party services “Your hardest integration.” Salesforce and the OAuth2 services on the Automation Platform, or the Invest Planning API clients (auth, CRM, messaging) Most challenging part · Integration design
architectural decisions “A decision you drove, and what it cost.” [fill in] Leading technical direction · ADRs
code reviews “A disagreement in review.” [fill in] Code review · Disagreement
support production “Your worst production incident.” [fill in] Incident response · A mistake you made
mentor “Someone you helped grow.” [fill in] Mentoring and feedback · Leading a team
distributed team “How you work across time zones.” [fill in] Joining an existing project · Ambiguity