Знает базовые алгоритмы сортировки и поиска. Понимает нотацию Big-O для простых случаев (O(1), O(n), O(n²)). Может оценить сложность простого цикла. Использует встроенные sorted() и collections для решения задач.
Роли · Backend Developer (Python) · Junior
Что должен уметь Junior }
37 ключевых навыков, всего 73. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Junior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Junior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 8
Понимает концепцию асинхронного программирования. Пишет простые async/await функции. Знает разницу между sync и async кодом. Использует httpx или aiohttp для асинхронных HTTP-запросов.
Следует стандартам PEP 8. Использует линтеры (flake8/ruff) и форматтеры (black). Пишет docstrings для функций. Понимает принципы чистого кода: осмысленные имена, маленькие функции, DRY.
Понимает концепции потоков и процессов. Знает о GIL в CPython и его влиянии. Использует threading для простых I/O-bound задач. Понимает разницу между threading и multiprocessing.
Знает базовые паттерны: Singleton, Factory, Observer. Понимает назначение Repository и Service Layer. Может распознать паттерн в существующем коде. Применяет простые паттерны по рекомендации senior.
Понимает инкапсуляцию, наследование, полиморфизм в Python. Создаёт классы с __init__, свойствами и методами. Знает принципы SOLID на базовом уровне. Использует property декораторы и dunder-методы (__str__, __repr__).
Знает основные структуры данных Python: list, dict, set, tuple. Понимает разницу между mutable и immutable типами. Использует list comprehension и dict comprehension. Знает когда использовать set вместо list для поиска.
Использует базовые type hints: str, int, list[str], Optional. Понимает зачем нужна типизация в Python. Знает основные типы из typing module. Запускает mypy для проверки типов.
Backend Development · 5
Создаёт CRUD endpoints с FastAPI или Django REST Framework. Использует Pydantic для валидации. Понимает dependency injection. Работает с Django ORM/SQLAlchemy для базовых запросов.
Понимает зачем нужно кэширование. Знает cache-aside паттерн. Использует TTL для автоматической инвалидации. Понимает проблему stale data.
Понимает концепцию message broker. Пишет простые producers и consumers с confluent-kafka-python. Знает что такое topic, partition, offset. Понимает at-least-once семантику.
Использует Redis как простой key-value кэш через redis-py. Понимает TTL и expiration. Кэширует результаты API-вызовов. Знает базовые команды: GET, SET, DEL, EXISTS.
Понимает концепцию фоновых задач. Создаёт простые Celery tasks. Использует delay() и apply_async(). Понимает разницу между синхронной и асинхронной обработкой.
Базы данных · 5
Пишет SQL-запросы: SELECT, JOIN, WHERE, GROUP BY. Создаёт таблицы с правильными типами данных. Использует ORM для CRUD. Понимает foreign keys и constraints.
Понимает что индексы ускоряют SELECT. Знает CREATE INDEX синтаксис. Добавляет индексы по рекомендации. Понимает что индексы замедляют INSERT.
Создаёт миграции через инструменты миграций. Понимает forward и rollback. Добавляет колонки и таблицы. Тестирует миграции локально.
Пишет базовые SQL (SELECT, JOIN, WHERE, GROUP BY). Понимает что запросы могут быть медленными. Знает что EXISTS быстрее IN для подзапросов.
Создаёт базовые схемы с таблицами и связями. Понимает 1:1, 1:N, N:M отношения. Применяет нормализацию до 3NF. Использует правильные типы данных.
API и интеграции · 4
Создаёт CRUD endpoints с правильными HTTP methods. Использует статус-коды (200, 201, 400, 404, 500). Понимает JSON request/response. Добавляет query parameters для фильтрации и пагинации.
Добавляет описания к endpoints (docstrings, summary). Понимает OpenAPI спецификацию. Использует Swagger UI для тестирования. Документирует request/response models.
Понимает зачем нужно версионирование API. Знает URL-based versioning (/api/v1/). Поддерживает обратную совместимость при добавлении полей. Следует гайдлайнам команды.
Тестирует API через Postman или Insomnia. Создаёт базовые коллекции запросов. Использует переменные окружения. Проверяет status codes и response body.
Облако и инфраструктура · 4
Пишет Dockerfile для Python-приложений. Использует docker-compose для локальной разработки. Понимает image layers и кэширование. Использует .dockerignore.
Понимает TCP/IP, DNS, HTTP/HTTPS в контексте Python-приложений. Знает как работают порты, firewall rules, load balancers. Диагностирует проблемы соединения через curl, telnet, netstat. Настраивает CORS в Django/FastAPI.
Знает основные сервисы: EC2, S3, RDS, Lambda. Использует AWS Console. Понимает IAM roles и policies. Деплоит через CLI.
Понимает основные ресурсы: Pod, Deployment, Service. Деплоит приложения через kubectl. Читает логи подов. Понимает ConfigMaps и Secrets.
DevOps и CI/CD · 1
Понимает CI/CD pipeline. Создаёт простые GitHub Actions workflows. Запускает тесты и линтеры в CI. Использует actions из marketplace.
Тестирование и QA · 2
Пишет unit-тесты с pytest. Использует assert statements и fixtures. Тестирует happy path и edge cases. Понимает test isolation. Запускает тесты локально и в CI.
Понимает разницу между unit и integration тестами. Тестирует API endpoints. Использует тестовую БД для integration тестов.
Безопасность · 3
Валидирует входные данные. Не хранит пароли в открытом виде (bcrypt). Использует HTTPS. Не логирует sensitive data. Следует security checklist.
Понимает JWT: header, payload, signature. Использует JWT для аутентификации. Знает OAuth2 flows на базовом уровне. Хранит токены безопасно.
Знает OWASP Top 10. Понимает SQL injection и XSS. Использует параметризованные запросы. Валидирует входные данные через Pydantic.
Архитектура и проектирование · 1
Понимает клиент-серверную архитектуру. Знает HTTP request lifecycle. Понимает базовые концепции: latency, throughput, availability. Знает что такое load balancer и CDN.
Observability и мониторинг · 2
Использует logging module вместо print. Понимает log levels (DEBUG, INFO, WARNING, ERROR). Добавляет контекст в логи. Использует structlog или python-json-logger.
Понимает концепцию метрик (counter, gauge, histogram). Просматривает Grafana dashboards. Знает основы PromQL. Добавляет базовые метрики в приложение.
Контроль версий и коллаборация · 2
Использует branching (feature branches, main). Делает commits с осмысленными сообщениями. Создаёт pull requests. Разрешает простые merge conflicts. Использует .gitignore.
Участвует в review как ревьюи. Понимает замечания reviewer. Исправляет код по feedback. Знает базовый checklist для self-review.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Middle
69 навыков получают более высокое ожидание или становятся ключевыми при переходе с Junior на Middle. Сначала самые большие скачки.
- Паттерны Message Brokers: Осведомлённость → Применение · становится ключевым
- Шардирование БД: Осведомлённость → Применение · становится ключевым
- Connection Pooling: Осведомлённость → Применение · становится ключевым
- CQRS: Осведомлённость → Применение · становится ключевым
- gRPC и Protocol Buffers: Осведомлённость → Применение · становится ключевым
- Rate Limiting и Throttling: Осведомлённость → Применение · становится ключевым
- SLI / SLO / SLA: Осведомлённость → Применение · становится ключевым
- Terraform: Осведомлённость → Применение · становится ключевым
- Алгоритмы и сложность: Осведомлённость → Применение
- Асинхронное программирование: Осведомлённость → Применение
} в открытой матрице компетенций: 73 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.