Роли · Backend Developer (Python) · Middle

Что должен уметь Middle }

45 ключевых навыков, всего 75. Ожидания по каждому навыку и что меняется на следующем уровне.

На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.

45ключевых навыков
30дополнительных навыков
11областей
3%на уровне Продвинутый или Эксперт
Оценить себя как Middle Полная матрица роли

Ключевые навыки для Middle

Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.

Основы программирования · 8

Применяет алгоритмы для оптимизации реального кода. Понимает амортизированную сложность (dict, list.append). Использует heapq, bisect, deque для оптимальных решений. Выбирает между сортировкой и хеш-таблицей для задач поиска.

Работает с asyncio: Tasks, gather, wait, semaphore. Использует aiohttp, httpx для async HTTP. Понимает event loop и его ограничения. Применяет asyncio.Queue для producer-consumer паттерна. Обрабатывает cancellation и timeouts.

Настраивает pre-commit hooks с ruff, mypy, black. Проводит рефакторинг code smells. Пишет type hints для всего кода. Применяет метрики качества (cyclomatic complexity, coverage). Участвует в code review конструктивно.

Использует concurrent.futures для thread и process pools. Применяет multiprocessing для CPU-bound задач. Понимает race conditions и использует Lock, RLock. Работает с shared state через Queue и Pipe.

Применяет Strategy, Template Method, Decorator, Command в Python-коде. Использует Repository pattern для работы с БД. Применяет Unit of Work с SQLAlchemy sessions. Знает антипаттерны и умеет их рефакторить.

Принципы ООП и SOLID Применение

Применяет SOLID в повседневной разработке. Использует абстрактные классы (ABC) и Protocol для определения интерфейсов. Понимает composition over inheritance. Применяет dependency injection через конструктор. Использует миксины правильно.

Структуры данных Применение

Применяет collections (OrderedDict, Counter, deque, namedtuple). Использует dataclasses для структурированных данных. Понимает внутреннее устройство dict (hash table). Выбирает оптимальную структуру для задачи. Работает с деревьями и графами через словари.

Использует TypedDict, Protocol, Literal, Union, Generic. Настраивает mypy с strict mode для модулей. Создаёт custom type aliases. Понимает variance (covariant/contravariant). Пишет типы для сложных API (overload, ParamSpec).

Backend Development · 6

Паттерны Message Brokers Применение

Работает с message broker'ами в Python-проектах: использует Celery с RabbitMQ/Redis для фоновых задач, реализует pub/sub через confluent-kafka или aiokafka, применяет паттерны competing consumers и fan-out. Настраивает dead letter queues для обработки ошибок.

Применяет различные стратегии: cache-aside, write-through, write-behind. Реализует cache invalidation по событиям. Использует CDN-кэширование для статики. Мониторит cache hit rate. Обрабатывает cache stampede (thundering herd).

Apache Kafka Применение

Настраивает consumer groups и partition assignment. Обрабатывает ошибки с retry и dead letter topics. Использует acks=all для надёжности. Мониторит consumer lag. Проектирует schema событий с Avro/JSON Schema.

Python Web Frameworks Применение

Проектирует структуру FastAPI/Django проекта. Использует middleware, background tasks, WebSockets. Настраивает authentication/authorization. Работает с Alembic/Django migrations. Оптимизирует ORM-запросы (select_related, prefetch_related).

Redis Применение

Использует различные структуры Redis (hashes, sets, sorted sets, lists). Применяет pipeline для batch-операций. Настраивает cache-aside и write-through паттерны. Использует Redis pub/sub для уведомлений. Обрабатывает cache miss корректно.

Task Queues Применение

Настраивает Celery с различными брокерами (Redis, RabbitMQ). Использует chains, groups, chords для workflow. Настраивает retry с exponential backoff. Мониторит задачи через Flower. Обрабатывает ошибки и dead letter queues.

Базы данных · 7

Индексирование БД Применение

Создаёт B-tree, UNIQUE, COMPOSITE индексы. Использует EXPLAIN для query plans. Знает когда индекс помогает и когда вредит. Создаёт индексы для foreign keys.

Миграции БД Применение

Пишет zero-downtime миграции. Использует expand-contract pattern. Мигрирует данные с backfill. Настраивает автоматический запуск миграций в CI/CD. Обрабатывает конфликты миграций.

Анализирует через EXPLAIN. Устраняет N+1 (eager loading, select_related). Оптимизирует JOINs. Использует оконные функции (ROW_NUMBER, LAG/LEAD). Понимает subquery types.

Проектирует схемы для микросервисов. Применяет денормализацию для performance. Моделирует полиморфные связи (STI, MTI). Проектирует audit trails и soft deletes. Использует JSONB для flexible data.

Шардирование БД Применение

Работает с шардированными БД в Python: использует Django database routers для multi-database routing, реализует shard selection logic на основе tenant_id или user_id. Понимает trade-offs шардирования: cross-shard queries, join limitations, data distribution skew.

Connection Pooling Применение

Настраивает connection pooling в Python: оптимизирует SQLAlchemy pool (QueuePool vs StaticPool, pool_pre_ping, pool_recycle), настраивает psycopg2/asyncpg pool для async приложений. Использует PgBouncer для connection multiplexing при FPM-like архитектуре. Мониторит pool utilization.

PostgreSQL Применение

Использует CTE, оконные функции, JSONB операции. Настраивает connection pooling (pgBouncer). Оптимизирует через EXPLAIN ANALYZE. Работает с транзакциями и уровнями изоляции. Настраивает pg_stat_statements.

API и интеграции · 6

REST API Design Продвинутый

Проектирует RESTful API с versioning и cursor-based pagination. Документирует через OpenAPI/Swagger. Реализует error responses с кодами ошибок. Использует PATCH для частичных обновлений. Проектирует bulk endpoints.

Генерирует полную OpenAPI-документацию из кода. Настраивает Redoc или Swagger UI. Документирует error codes и примеры. Создаёт Postman collections. Пишет guides для потребителей API.

Реализует versioning через URL, header или content-type. Проектирует deprecation policy с Sunset headers. Поддерживает несколько версий одновременно. Пишет migration guides для клиентов.

Тестирование API Применение

Автоматизирует API-тесты через тестовые инструменты. Создаёт test fixtures для API. Использует Postman/Newman для automated collections. Тестирует edge cases и error handling. Генерирует отчёты.

gRPC и Protocol Buffers Применение

Разрабатывает gRPC-сервисы на Python с grpcio/grpcio-tools: проектирует .proto-файлы, реализует server-side и client-side streaming, настраивает interceptors для логирования и аутентификации. Интегрирует gRPC с asyncio для неблокирующей обработки запросов.

Rate Limiting и Throttling Применение

Реализует rate limiting в Python-сервисах: настраивает SlowAPI/FastAPI limiter с Redis backend, реализует token bucket и sliding window алгоритмы, применяет разные лимиты для разных endpoint'ов и user tier'ов. Настраивает throttling в Django REST Framework с custom throttle classes.

Облако и инфраструктура · 5

Docker Продвинутый

Оптимизирует Dockerfile (multi-stage, layer caching). Настраивает health checks. Использует Docker networks и volumes. Отлаживает контейнеры. Сканирует на уязвимости.

Основы сетей Применение

Проектирует сетевую архитектуру для Python-сервисов: VPC, subnets, security groups, NAT gateways. Настраивает reverse proxy (nginx) для Gunicorn/Uvicorn. Понимает service discovery, DNS-based routing. Оптимизирует latency между сервисами.

AWS Применение

Настраивает VPC, Security Groups, ALB. Использует ECS/EKS для контейнеров. Работает с SQS/SNS для messaging. Настраивает CloudWatch для мониторинга. Использует Terraform для IaC.

Kubernetes Core Применение

Настраивает Deployments, Services, Ingress. Конфигурирует HPA для автоскейлинга. Настраивает readiness и liveness probes. Использует namespaces. Отлаживает проблемы подов.

Terraform Применение

Пишет Terraform-модули для Python-инфраструктуры: ECS/EKS для Django/FastAPI, RDS PostgreSQL, ElastiCache Redis, SQS/SNS. Управляет environments через workspaces. Настраивает remote state в S3 с locking через DynamoDB.

DevOps и CI/CD · 1

GitHub Actions / GitLab CI Применение

Проектирует multi-stage pipelines. Настраивает кэширование зависимостей. Использует matrix builds. Создаёт reusable workflows. Настраивает secrets management.

Тестирование и QA · 2

Использует TestContainers для PostgreSQL, Redis, Kafka. Тестирует межсервисное взаимодействие. Настраивает fixtures для сложных сценариев. Создаёт seed data.

Unit-тестирование Применение

Использует моки (unittest.mock, pytest-mock). Настраивает coverage отчёты. Тестирует async-код. Параметризует тесты через @pytest.mark.parametrize. Использует factory_boy для генерации данных.

Безопасность · 3

Применяет input validation на всех уровнях. Использует secrets management (environment variables, Vault). Реализует rate limiting. Обрабатывает ошибки без утечки информации. Шифрует sensitive data at rest.

JWT / OAuth2 / OIDC Применение

Реализует OAuth2 flows (Authorization Code, Client Credentials). Настраивает OIDC с Keycloak. Реализует refresh token rotation. Настраивает scopes и permissions.

Применяет защиту от CSRF, SSRF, XXE. Настраивает security headers. Проверяет зависимости на уязвимости (pip-audit, safety). Обрабатывает sensitive data (masking, encryption).

Архитектура и проектирование · 2

Основы System Design Применение

Проектирует простые системы: URL shortener, REST API. Понимает CAP theorem. Знает паттерны: caching, load balancing, database replication. Оценивает нефункциональные требования.

CQRS Применение

Реализует CQRS в Python-проектах: разделяет command и query handlers через mediatr-подобные библиотеки, проектирует отдельные read-модели (денормализованные view таблицы или материализованные представления). Обеспечивает eventual consistency между write и read сторонами.

Observability и мониторинг · 3

Настраивает structured logging с correlation IDs. Логирует в JSON для EFK/Loki. Добавляет request tracing через middleware. Фильтрует sensitive data из логов. Настраивает log aggregation.

Prometheus и Grafana Применение

Создаёт custom metrics с prometheus-client. Пишет PromQL запросы (rate, histogram_quantile). Создаёт Grafana dashboards. Настраивает basic alerting rules.

SLI / SLO / SLA Применение

Определяет SLI для Python-сервисов — p99 задержку из инструментации middleware, частоту ошибок из обработчиков исключений и индикаторы здоровья пула workers. Настраивает мониторинг SLI с Prometheus client и кастомными метриками. Понимает error budgets и участвует в ротации дежурств для надёжности Python-сервисов.

Контроль версий и коллаборация · 2

Code Review Применение

Проводит code review. Даёт конструктивный feedback. Проверяет логику, тесты, security. Знает разницу между blocking и non-blocking замечаниями. Использует suggestions.

Git Advanced Применение

Использует rebase для чистой истории. Применяет interactive rebase для squash. Использует cherry-pick и bisect. Настраивает git hooks (pre-commit). Работает с git stash.

Дополнительные навыки

Команда их не оценивает, но они входят в самооценку и план развития.

Документация как кодПроектирование WebSocket APIСканирование безопасности контейнеровУправление дежурствамиУправление памятьюChatGPT / ClaudeClean ArchitectureCPU ProfilingCursor IDEData FetchingE2E тестированиеElasticsearch / OpenSearchELK StackEvent-Driven ArchitectureFeature FlagsGitHub CopilotGraphQL DesigngRPC и Protocol BuffersHighload архитектураLatency OptimizationMemory ProfilingMongoDBOpenTelemetryPerformance BudgetsPrompt Engineering для кодаRabbitMQSecrets ManagementTDD и BDDДекомпозиция на микросервисыDDD тактические паттерны

Что меняется на Senior

74 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.

Страница Senior →
Прогоните это со всей командой
Самооценка плюс оценка руководителя и коллег по одной матрице, зоны роста и готовность к следующему уровню для каждого инженера. Team Pro бесплатно 14 дней; личные инструменты бесплатны всегда.
Попробовать с командой (14 дней бесплатно) Отправить тимлиду

} в открытой матрице компетенций: 75 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.