Знает базовые алгоритмы сортировки и поиска. Оценивает O(n) для простых циклов. Выбирает между array_search, in_array и isset по ситуации. Понимает, почему вложенные циклы — проблема на больших данных.
Роли · Backend Developer (PHP) · Junior
Что должен уметь Junior }
27 ключевых навыков, всего 63. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Junior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Junior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 7
Понимает концепцию асинхронности. Работает с очередями задач для фоновой обработки. Выносит тяжёлые операции (email, генерация отчётов) в background jobs. Знает разницу между sync и async обработкой.
Следует coding standards (PSR-12). Пишет понятные имена переменных и функций. Убирает дублирование кода. Использует линтеры (PHP_CodeSniffer, PHPStan) и исправляет замечания.
Знает и применяет базовые паттерны: Singleton, Factory, Strategy. Понимает зачем нужна инъекция зависимостей. Использует Repository для работы с БД. Следует паттернам, принятым в проекте.
Создаёт классы с инкапсуляцией, наследованием и полиморфизмом. Понимает интерфейсы и абстрактные классы. Следует принципу единой ответственности в своём коде. Использует type hints и return types.
Работает с массивами, ассоциативными массивами и объектами PHP. Понимает разницу между индексированным и ассоциативным массивом. Использует array_map, array_filter, usort для обработки данных.
Понимает основы системы типов PHP — объявление strict_types, type hints для параметров функций и типов возврата, и union types. Следует принятым в команде соглашениям по уровням статического анализа PHPStan/Psalm и типизированным объявлениям свойств.
Backend Development · 7
Понимает паттерны брокеров сообщений в PHP: pub-sub через Symfony Messenger, queue workers через Laravel Queues. Следует командным конвенциям для диспатчинга и потребления сообщений через драйверы Redis, RabbitMQ или SQS.
Понимает зачем нужно кэширование и основные стратегии. Кэширует результаты тяжёлых запросов в приложении. Использует HTTP-кэширование (Cache-Control, ETag). Знает проблему устаревания кэша.
Использует Elasticsearch / OpenSearch на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Использует PHP Frameworks на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Отправляет и получает сообщения через очереди. Понимает концепции exchange, queue, routing key. Настраивает простые direct-exchange маршруты. Обрабатывает сообщения с ack/nack.
Использует Redis для кэширования результатов запросов и сессий. Устанавливает TTL для ключей. Работает с командами GET/SET/DEL. Понимает, когда кэширование ускоряет, а когда создаёт проблемы.
Использует Task Queues на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Базы данных · 7
Создаёт простые индексы для ускорения WHERE и JOIN. Понимает разницу между PRIMARY, UNIQUE и обычным индексом. Знает, что индексы замедляют INSERT/UPDATE. Использует EXPLAIN для проверки.
Создаёт миграции для изменения схемы БД: добавление таблиц, колонок, индексов. Понимает forward и rollback. Тестирует миграции локально перед применением. Следует naming conventions.
Использует EXPLAIN для анализа планов выполнения. Добавляет индексы для медленных запросов. Избегает SELECT * и N+1 проблемы. Понимает разницу между lazy и eager loading в ORM.
Проектирует простые схемы: таблицы, связи один-к-одному, один-ко-многим, многие-ко-многим. Нормализует до 3NF. Выбирает правильные типы данных. Понимает, когда нужен soft delete.
Использует транзакции для атомарных операций: BEGIN/COMMIT/ROLLBACK. Понимает ACID-свойства. Оборачивает в транзакцию связанные изменения. Знает про уровни изоляции на базовом уровне.
Пишет SQL-запросы: SELECT с JOIN, WHERE, GROUP BY, ORDER BY. Создаёт таблицы с правильными типами данных и constraints. Понимает foreign keys и индексы. Работает с MySQL Workbench или аналогом.
Работает с PostgreSQL: пишет SQL-запросы, создаёт таблицы, понимает типы данных (jsonb, arrays, uuid). Использует pgAdmin или CLI. Понимает отличия от MySQL в синтаксисе и типах.
API и интеграции · 5
Описывает эндпоинты: request/response примеры, обязательные параметры, коды ошибок. Использует OpenAPI-аннотации в коде. Поддерживает Swagger UI актуальным. Документирует edge cases.
Понимает зачем нужно версионирование API. Знает подходы: URL-path, header, query parameter. Следует версионной политике проекта. Поддерживает обратную совместимость в своих изменениях.
Тестирует API вручную через Postman/Insomnia. Создаёт коллекции запросов. Проверяет статус-коды, тело ответа, headers. Пишет простые автоматические тесты для основных эндпоинтов.
Создаёт простые GraphQL-схемы: типы, queries, mutations. Понимает разницу с REST. Реализует resolvers для основных операций. Использует GraphQL playground для тестирования.
Создаёт CRUD-эндпоинты с правильными HTTP-методами и статус-кодами. Следует RESTful-конвенциям: именование ресурсов, вложенность. Возвращает JSON с консистентной структурой. Обрабатывает ошибки с понятными сообщениями.
Облако и инфраструктура · 1
Понимает TCP/IP, DNS, HTTP/HTTPS на практическом уровне. Отлаживает сетевые проблемы через curl, ping, traceroute. Знает разницу между HTTP 1.1 и 2.0. Понимает SSL/TLS-сертификаты.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Middle
63 навыков получают более высокое ожидание или становятся ключевыми при переходе с Junior на Middle. Сначала самые большие скачки.
- Шардирование БД: Осведомлённость → Применение · становится ключевым
- Apache Kafka: Осведомлённость → Применение · становится ключевым
- Connection Pooling: Осведомлённость → Применение · становится ключевым
- CQRS: Осведомлённость → Применение · становится ключевым
- gRPC и Protocol Buffers: Осведомлённость → Применение · становится ключевым
- Rate Limiting и Throttling: Осведомлённость → Применение · становится ключевым
- Алгоритмы и сложность: Осведомлённость → Применение
- Асинхронное программирование: Осведомлённость → Применение
- Документирование API: Осведомлённость → Применение
- Индексирование БД: Осведомлённость → Применение
} в открытой матрице компетенций: 63 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.