Select your current position

Pick a role and level — we'll show the growth path, skills and gap analysis.

Development path

Junior

0-2 years

Current

Responsibility: Building simple API endpoints from specifications. Writing unit tests. Fixing bugs. Working with ORM (SQLAlchemy/Django ORM). Participating in code review as a reviewee.

Key skills:

Code Review Need
Docker Need
Git Advanced Need
JWT / OAuth2 / OIDC Need
OWASP & Application Security Need
PostgreSQL Need
Python Web Frameworks Need
Redis Need
REST API Design Need
Task Queues Need
Unit Testing Need
Async Programming Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Query Optimization Need
Network Fundamentals Need
Secure Coding Practices Need
Data Modeling & Schema Design Need
Structured Logging Need

Middle

2-5 years

Next

Responsibility: Independent microservice development. Designing REST/GraphQL APIs. SQL query optimization. Code review. Junior mentoring. External service integration. Writing integration tests.

Key skills:

Apache Kafka Need
Code Review Need
Docker Need
Git Advanced Need
GitHub Actions / GitLab CI Need
JWT / OAuth2 / OIDC Need
OWASP & Application Security Need
PostgreSQL Need
Python Web Frameworks Need
Redis Need
REST API Design Need
Task Queues Need
Unit Testing Need
Async Programming Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Query Optimization Need
Network Fundamentals Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
Caching Strategies Need
Structured Logging Need

Senior

5-8 years

Responsibility: Designing service architecture. Technology selection for new tasks. System-level performance optimization. Managing technical debt. Setting up observability. Mentoring mid-level engineers.

Key skills:

Apache Kafka Need
Code Review Need
Docker Need
Git Advanced Need
GitHub Actions / GitLab CI Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
OWASP & Application Security Need
PostgreSQL Need
Python Web Frameworks Need
Redis Need
REST API Design Need
Task Queues Need
Unit Testing Need
Async Programming Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Query Optimization Need
Network Fundamentals Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
API Testing Need

Lead / Staff

7-12 years

Responsibility: Designing domain system architecture. Team technical roadmap. Establishing development standards. Cross-team coordination. Hiring. Build vs buy decisions.

Key skills:

Apache Kafka Need
Code Review Need
Docker Need
Git Advanced Need
GitHub Actions / GitLab CI Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
OWASP & Application Security Need
PostgreSQL Need
Prometheus & Grafana Need
Python Web Frameworks Need
Redis Need
REST API Design Need
Task Queues Need
Unit Testing Need
Async Programming Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Query Optimization Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
API Testing Need

Principal

10+ years

Responsibility: Company-level backend technology strategy. Cross-team architecture. Organization-level technology choices. Public speaking. Open-source contributions.

Key skills:

Apache Kafka Need
Code Review Need
Docker Need
Git Advanced Need
GitHub Actions / GitLab CI Need
JWT / OAuth2 / OIDC Need
Kubernetes Core Need
OWASP & Application Security Need
PostgreSQL Need
Prometheus & Grafana Need
Python Web Frameworks Need
Redis Need
REST API Design Need
Task Queues Need
Unit Testing Need
Async Programming Need
API Documentation Need
Database Indexing Need
Integration Testing Need
Code Quality & Refactoring Need
Database Migrations Need
Query Optimization Need
Design Patterns Need
Secure Coding Practices Need
OOP & SOLID Principles Need
Data Modeling & Schema Design Need
API Versioning Strategies Need
Caching Strategies Need
Structured Logging Need
API Testing Need

Gap analysis: skills to develop

To reach the next level you'll need to develop:

Apache Kafka

Configures consumer groups and partition assignment. Handles errors with retry and dead letter topics. Uses acks=all for reliability. Monitors consumer lag. Designs event schemas with Avro/JSON Schema.

Code Review

Conducts code reviews. Gives constructive feedback. Checks logic, tests, security. Knows the difference between blocking and non-blocking comments. Uses suggestions.

Docker

Optimizes Dockerfile (multi-stage, layer caching). Configures health checks. Uses Docker networks and volumes. Debugs containers. Scans for vulnerabilities.

Git Advanced

Uses rebase for clean history. Applies interactive rebase for squash. Uses cherry-pick and bisect. Configures git hooks (pre-commit). Works with git stash.

GitHub Actions / GitLab CI

Designs multi-stage pipelines. Configures dependency caching. Uses matrix builds. Creates reusable workflows. Configures secrets management.

JWT / OAuth2 / OIDC

Implements OAuth2 flows (Authorization Code, Client Credentials). Configures OIDC with Keycloak. Implements refresh token rotation. Configures scopes and permissions.

OWASP & Application Security

Applies protection against CSRF, SSRF, XXE. Configures security headers. Checks dependencies for vulnerabilities (pip-audit, safety). Handles sensitive data (masking, encryption).

PostgreSQL

Uses CTEs, window functions, JSONB operations. Configures connection pooling (PgBouncer). Optimizes via EXPLAIN ANALYZE. Works with transactions and isolation levels. Configures pg_stat_statements.

Python Web Frameworks

Designs FastAPI/Django project structure. Uses middleware, background tasks, WebSockets. Configures authentication/authorization. Works with Alembic/Django migrations. Optimizes ORM queries (select_related, prefetch_related).

Redis

Uses various Redis structures (hashes, sets, sorted sets, lists). Applies pipeline for batch operations. Configures cache-aside and write-through patterns. Uses Redis pub/sub for notifications. Handles cache miss correctly.

REST API Design

Designs RESTful API with versioning and cursor-based pagination. Documents via OpenAPI/Swagger. Implements error responses with error codes. Uses PATCH for partial updates. Designs bulk endpoints.

Task Queues

Configures Celery with different brokers (Redis, RabbitMQ). Uses chains, groups, chords for workflows. Configures retry with exponential backoff. Monitors tasks via Flower. Handles errors and dead letter queues.

Unit Testing

Uses mocks (unittest.mock, pytest-mock). Configures coverage reports. Tests async code. Parameterizes tests via @pytest.mark.parametrize. Uses factory_boy for data generation.

Async Programming

Works with asyncio: Tasks, gather, wait, semaphore. Uses aiohttp, httpx for async HTTP. Understands event loop and its limitations. Applies asyncio.Queue for producer-consumer pattern. Handles cancellation and timeouts.

Database Indexing

Creates B-tree, UNIQUE, COMPOSITE indexes. Uses EXPLAIN for query plans. Knows when an index helps and when it hurts. Creates indexes for foreign keys.

Integration Testing

Uses TestContainers for PostgreSQL, Redis, Kafka. Tests inter-service interactions. Configures fixtures for complex scenarios. Creates seed data.

Code Quality & Refactoring

Configures pre-commit hooks with ruff, mypy, black. Refactors code smells. Writes type hints for all code. Applies quality metrics (cyclomatic complexity, coverage). Participates constructively in code review.

Database Migrations

Writes zero-downtime migrations. Uses expand-contract pattern. Migrates data with backfill. Configures automatic migration execution in CI/CD. Handles migration conflicts.

Query Optimization

Analyzes via EXPLAIN. Eliminates N+1 (eager loading, select_related). Optimizes JOINs. Uses window functions (ROW_NUMBER, LAG/LEAD). Understands subquery types.

Network Fundamentals

Designs network architecture for Python services: VPC, subnets, security groups, NAT gateways. Configures reverse proxy (nginx) for Gunicorn/Uvicorn. Understands service discovery, DNS-based routing. Optimizes inter-service latency.

Design Patterns

Applies Strategy, Template Method, Decorator, Command in Python code. Uses Repository pattern for database access. Applies Unit of Work with SQLAlchemy sessions. Knows antipatterns and can refactor them.

Secure Coding Practices

Applies input validation at all levels. Uses secrets management (environment variables, Vault). Implements rate limiting. Handles errors without information leakage. Encrypts sensitive data at rest.

OOP & SOLID Principles

Applies SOLID in daily development. Uses abstract classes (ABC) and Protocol for interface definition. Understands composition over inheritance. Applies dependency injection via constructor. Uses mixins correctly.

Data Modeling & Schema Design

Designs schemas for microservices. Applies denormalization for performance. Models polymorphic relationships (STI, MTI). Designs audit trails and soft deletes. Uses JSONB for flexible data.

Caching Strategies

Applies various strategies: cache-aside, write-through, write-behind. Implements event-based cache invalidation. Uses CDN caching for static content. Monitors cache hit rate. Handles cache stampede (thundering herd).

Structured Logging

Configures structured logging with correlation IDs. Logs in JSON for EFK/Loki. Adds request tracing via middleware. Filters sensitive data from logs. Configures log aggregation.

Career transitions

Possible career trajectories for the Backend Developer (Python) role

📈 Growth 2

Where you can grow from this role

╨а╨╛╤Б╤В ╨▓ ╨░╤А╤Е╨╕╤В╨╡╨║╤В╨╛╤А╨░ ╤З╨╡╤А╨╡╨╖ ╨│╨╗╤Г╨▒╨╛╨║╨╛╨╡ ╨╖╨╜╨░╨╜╨╕╨╡ backend

Match: 100%

╨а╨╛╤Б╤В ╨▓ ╤В╨╡╤Е╨╗╨╕╨┤╨░ Python-╨║╨╛╨╝╨░╨╜╨┤╤Л

Match: 100%

↔️ Lateral 4

Adjacent roles for a lateral move

╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨╜╨░ Go ╨┤╨╗╤П ╨▒╨╛╨╗╨╡╨╡ ╨▓╤Л╤Б╨╛╨║╨╛╨┐╤А╨╛╨╕╨╖╨▓╨╛╨┤╨╕╤В╨╡╨╗╤М╨╜╤Л╤Е ╤Б╨╕╤Б╤В╨╡╨╝

Match: 100%
Data Engineer Lateral

╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ Data Engineering ╤Б ╤Д╨╛╨║╤Г╤Б╨╛╨╝ ╨╜╨░ Python-╤Н╨║╨╛╤Б╨╕╤Б╤В╨╡╨╝╤Г

Match: 100%
DevOps Engineer Lateral

╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ DevOps ╤Б Python-╤Б╨║╤А╨╕╨┐╤В╨╕╨╜╨│╨╛╨╝ ╨╕ automation

Match: 100%
ML Engineer Lateral

╨Я╨╡╤А╨╡╤Е╨╛╨┤ ╨▓ ML Engineering ╤Б ╤Д╨╛╨║╤Г╤Б╨╛╨╝ ╨╜╨░ Python ╨╕ ML-╤Д╤А╨╡╨╣╨╝╨▓╨╛╤А╨║╨╕

Match: 100%