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

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

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

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

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

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

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

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

Анализирует алгоритмическую сложность PHP-кода и SQL-запросов. Оптимизирует обработку коллекций — заменяет вложенные циклы на хеш-таблицы. Применяет бинарный поиск, жадные алгоритмы в бизнес-логике. Профилирует через Xdebug.

Проектирует асинхронные потоки: очереди с приоритетами, отложенные задачи, retry-логика. Работает с message broker-ами для межсервисного общения. Обрабатывает ошибки и dead letter queues. Использует Fibers для concurrent I/O.

Настраивает статический анализ на высоком уровне строгости. Рефакторит legacy-код: выделяет методы, упрощает условия, убирает god-classes. Пишет self-documenting code. Проводит code review коллег.

Применяет паттерны осознанно: Observer для событий, Decorator для расширения функциональности, Chain of Responsibility для middleware. Рефакторит код с использованием подходящих паттернов. Понимает anti-patterns.

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

Применяет SOLID на практике: выделяет интерфейсы, использует композицию вместо наследования, соблюдает LSP. Проектирует иерархии классов для бизнес-домена. Пишет код с low coupling и high cohesion.

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

Выбирает структуры под задачу: SplPriorityQueue для очередей, SplFixedArray для числовых данных, generators для стриминга. Понимает внутреннее устройство PHP array как hash table. Работает с деревьями категорий и графами зависимостей.

Самостоятельно применяет возможности системы типов PHP — intersection types, enum с backed values и readonly properties для иммутабельных DTO. Понимает компромиссы между строгостью уровней phpstan и скоростью разработки. Применяет типобезопасные паттерны с дженериками в doc-blocks, типизированными коллекциями и строгими объявлениями типов возврата при ревью кода.

Backend Development · 8

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

Работает с messaging в PHP: использует Symfony Messenger с RabbitMQ/Redis транспортом, настраивает Laravel Horizon для мониторинга очередей, применяет routing по message type. Обрабатывает failed jobs через retry и dead letter queues, настраивает приоритетные очереди.

Реализует многоуровневое кэширование: OPcache для bytecode, APCu для локальных данных, Redis для shared cache. Проектирует стратегии инвалидации: TTL, event-based, tag-based. Измеряет hit/miss ratio.

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

Разрабатывает producers и consumers. Понимает partitions, consumer groups, offsets. Обрабатывает ошибки: retry, dead letter queue. Использует Avro/Protobuf для сериализации. Настраивает delivery guarantees (at-least-once, exactly-once).

Elasticsearch / OpenSearch Применение

Самостоятельно реализует задачи с Elasticsearch / OpenSearch. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты.

PHP Frameworks Применение

Самостоятельно реализует задачи с PHP Frameworks. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты.

RabbitMQ Применение

Проектирует топологию обменников: fanout для broadcast, topic для маршрутизации, headers для сложных правил. Настраивает dead letter queues и retry-механизмы. Обеспечивает idempotent обработку сообщений.

Redis Применение

Применяет разные стратегии: cache-aside, write-through, write-behind. Использует Redis для очередей (lists), rate limiting (sorted sets), pub/sub. Проектирует ключи с namespace-ами. Обрабатывает cache stampede.

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

Самостоятельно реализует задачи с Task Queues. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты.

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

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

Анализирует планы выполнения через EXPLAIN ANALYZE. Создаёт составные индексы с учётом selectivity и порядка колонок. Использует covering indexes для оптимизации частых запросов. Мониторит неиспользуемые индексы и их влияние на скорость записи.

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

Пишет safe-миграции для PHP-проектов: добавление колонок с default, индексов без блокировки, разделение destructive изменений на этапы. Управляет seed-данными. Обеспечивает rollback-возможность для каждой миграции. Тестирует миграции на копии production-данных.

Оптимизирует SQL-запросы в PHP-приложениях: устраняет N+1 через eager loading, переписывает subqueries в JOIN-ы, использует batch operations. Анализирует slow query log. Применяет query builder и raw SQL когда ORM генерирует неоптимальные запросы.

Проектирует схемы данных для бизнес-доменов: нормализация до 3NF, денормализация для производительности, полиморфные связи. Моделирует soft deletes, версионирование записей, аудит-логи. Выбирает между EAV и JSON-колонками для гибких атрибутов.

Самостоятельно проектирует стратегии управления транзакциями в PHP-приложениях с использованием PDO, Doctrine или Eloquent ORM. Реализует корректные границы транзакций для сложных бизнес-операций. Обрабатывает deadlock detection и retry-логику, управляет savepoints и оптимизирует длительность транзакций.

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

Работает с шардированием в PHP: реализует multi-tenant database routing в Laravel через database resolver, настраивает Doctrine DBAL с multiple connections, применяет shard selection middleware. Использует ProxySQL для transparent routing на уровне БД.

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

Решает connection management в PHP: настраивает PgBouncer/ProxySQL как внешний connection pooler для PHP-FPM, оптимизирует persistent connections с учётом FPM lifecycle. Мониторит количество connections через database status commands и настраивает wait_timeout.

MySQL / MariaDB Применение

Проектирует нормализованные схемы для бизнес-доменов. Оптимизирует запросы через EXPLAIN и профайлинг slow query log. Использует специфику MySQL: партиционирование, full-text search, JSON-колонки. Настраивает репликацию master-slave для read scaling.

PostgreSQL Применение

Использует возможности PostgreSQL: JSONB для semi-structured данных, CTE для сложных запросов, window functions для аналитики. Работает с GIN/GiST индексами. Настраивает pg_stat_statements для мониторинга. Применяет LISTEN/NOTIFY для real-time событий.

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

Генерирует OpenAPI-спецификацию из кода автоматически. Создаёт примеры для каждого сценария: успех, ошибки валидации, 404, 500. Версионирует документацию. Добавляет authentication-секцию с примерами.

Реализует версионирование: роутинг по версиям, трансформеры для разных форматов ответов, deprecation headers. Определяет breaking vs non-breaking changes. Мигрирует клиентов между версиями.

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

Автоматизирует API-тесты: integration tests для всех эндпоинтов, assertion на структуру ответа, тестирование auth flow. Создаёт fixtures и factories для тестовых данных. Запускает в CI.

GraphQL Design Применение

Проектирует эффективные схемы: relay-style pagination, input types, unions/interfaces для полиморфизма. Решает N+1 через DataLoader. Реализует subscriptions для real-time. Настраивает query complexity limits.

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

Интегрирует PHP-приложения с gRPC-сервисами: генерирует PHP-клиенты из .proto через protoc, настраивает channel credentials для TLS, обрабатывает ошибки через Status codes. Использует Spiral/RoadRunner для реализации gRPC-серверов на PHP без ограничений FPM.

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

Реализует rate limiting в PHP-проектах: настраивает custom RateLimiter в Laravel с per-user и per-IP стратегиями, использует Symfony RateLimiter component с token bucket и sliding window. Применяет Redis для distributed rate limiting между FPM-процессами.

REST API Design Применение

Проектирует API с пагинацией, фильтрацией, сортировкой и partial responses. Реализует HATEOAS-ссылки. Версионирует API. Применяет rate limiting и throttling. Документирует через OpenAPI/Swagger.

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

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

Настраивает load balancing (L4 vs L7), reverse proxy, SSL termination. Понимает CDN-архитектуру. Диагностирует latency issues. Работает с WebSockets и SSE для real-time.

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

CQRS Применение

Реализует CQRS в PHP-проектах: использует Symfony Messenger или Ecotone для command/query bus, создает отдельные Doctrine read models (QueryBuilder + DTO) от write models (Entity + Repository). Настраивает event handlers для синхронизации read моделей.

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

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

Декомпозиция на микросервисыИнтеграционное тестированиеМногопоточное программированиеОсновы System DesignПрактики безопасного кодаПроектирование WebSocket APIСтруктурированное логированиеAWSChatGPT / ClaudeClean ArchitectureCode ReviewCursor IDEDockerE2E тестированиеELK StackEvent-Driven ArchitectureGit AdvancedGitHub Actions / GitLab CIGitHub CopilotgRPC и Protocol BuffersJWT / OAuth2 / OIDCKubernetes CoreOpenTelemetryOWASP и безопасность приложенийPrometheus и GrafanaPrompt Engineering для кодаSLI / SLO / SLATDD и BDDTerraformUnit-тестирование

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

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

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

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