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

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

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

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

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

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

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

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

Самостоятельно применяет алгоритмическое мышление в Scala: выбирает функциональные алгоритмы коллекций для трансформации данных, понимает влияние ленивого вычисления на память, оценивает компромиссы производительности параллельных коллекций. Анализирует сложность операций Spark и паттернов распределённых вычислений.

Самостоятельно применяет асинхронное программирование в Scala: файберы ZIO/Cats Effect, композиция Future, конкурентность на основе эффект-систем. Понимает компромиссы между async-паттернами на основе Future и эффект-систем в Scala-приложениях.

Применяет продвинутую систему type-параметров Scala: upper/lower type bounds ([A <: B], [A >: B]), аннотации вариантности (covariant +A, contravariant -A). Реализует type classes через implicit-параметры и context bounds ([T: Ordering]). Использует existential types и type members для абстракции, понимает ограничения type inference в сложных generic-цепочках.

Самостоятельно применяет паттерны иммутабельности в Scala-сервисах с использованием персистентных коллекций, линз для вложенных обновлений и алгебраических типов данных для моделирования состояния. Пишет пайплайны трансформации с иммутабельным потоком данных через for-comprehensions, монадическую композицию и функциональные effect-системы. Понимает trade-offs производительности между иммутабельными и мутабельными структурами для hot paths.

Самостоятельно применяет практики качества кода в Scala-разработке. Пишет чистый функциональный код с уместным использованием эффект-систем и type classes. Понимает компромиссы между выразительным type-level программированием и читаемостью кода. Ревьюит код на правильную обработку ошибок, область видимости implicits и управление зависимостями сборки.

Самостоятельно применяет многопоточность в Scala: акторы Akka для конкурентности на основе передачи сообщений, файберы Cats Effect/ZIO для легковесной конкурентности, композиция Future для async-воркфлоу. Обосновывает компромиссы между моделью акторов и конкурентностью на основе эффектов на code review.

Монады и функторы Применение

Самостоятельно использует монады (Option, Either, Future, IO) для управления эффектами в Scala-приложениях. Понимает компромиссы между Cats Effect и ZIO для ссылочной прозрачности. Объясняет законы функторов и десахаризацию for-comprehension коллегам на код-ревью.

Уверенно использует ФП-идиомы Scala: case classes для иммутабельных данных, Option/Either для обработки ошибок, pattern matching и for-comprehensions. Понимает компромиссы между ООП и ФП стилями в Scala. Применяет принципы ФП в code review, объясняет коллегам монадическую композицию.

Самостоятельно применяет паттерны проектирования для Scala: паттерн type class для ad-hoc полиморфизма, cake pattern для внедрения зависимостей, трансформеры монад для композируемых эффектов, sealed trait иерархии для алгебраических типов данных. Обосновывает FP-ориентированные альтернативы паттернов.

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

Самостоятельно применяет ООП/SOLID в Scala: правильная композиция trait и линеаризация миксинов, дизайн case class для неизменяемых данных, sealed trait иерархии для алгебраических типов данных. Понимает компромиссы между ООП и ФП подходами в Scala — когда использовать классы vs type classes, объекты vs функции.

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

Самостоятельно выбирает подходящие структуры данных в Scala: иммутабельный List vs Vector для последовательных данных, LazyList для отложенного вычисления, case classes для доменного моделирования. Понимает компромиссы между персистентными структурами данных Scala и коллекциями для Java-интеропа.

Самостоятельно применяет систему типов Scala для бэкенд-сервисов — sealed traits для ADT, паттерны type class с implicits/givens и higher-kinded types для абстракций эффектов. Понимает компромиссы между сложностью кодирования на уровне типов и безопасностью в runtime. Объясняет коллегам аннотации вариантности и вывод типов.

Backend Development · 5

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

Работает с messaging в Scala-экосистеме: использует Alpakka Kafka с Akka Streams для reactive processing, настраивает consumer groups с committable sources, реализует at-least-once delivery через committing offsets. Применяет fs2-kafka для functional stream processing с cats-effect.

Самостоятельно реализует задачи с Стратегии кэширования в Play/http4s. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью ScalaTest/MUnit.

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

Самостоятельно реализует задачи с Apache Kafka в Play/http4s. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью ScalaTest/MUnit.

Redis Применение

Самостоятельно реализует задачи с Redis в Play/http4s. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью ScalaTest/MUnit.

Scala Frameworks Применение

Самостоятельно реализует задачи с Scala Frameworks в Play/http4s. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью ScalaTest/MUnit.

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

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

Самостоятельно проектирует схемы и оптимизирует запросы с Индексирование БД. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

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

Самостоятельно проектирует схемы и оптимизирует запросы с Миграции БД. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

Самостоятельно проектирует схемы и оптимизирует запросы с Оптимизация запросов. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

Самостоятельно проектирует схемы и оптимизирует запросы с Проектирование схем данных. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

Самостоятельно проектирует схемы и оптимизирует запросы с Транзакции и конкурентность. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

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

Работает с шардированием в Scala: реализует database routing через custom Slick DatabaseProvider, использует Akka Cluster Sharding для distributed entity management. Применяет functional programming patterns (Reader monad) для shard-aware data access.

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

Оптимизирует connection pooling в Scala: настраивает Slick с custom HikariCP configuration, использует doobie с HikariTransactor для functional database access, реализует connection lifecycle через cats-effect Resource. Мониторит pool через JMX и Kamon.

PostgreSQL Применение

Самостоятельно проектирует схемы и оптимизирует запросы с PostgreSQL. Понимает индексирование и планы выполнения запросов. Использует Slick/Doobie эффективно.

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

Создаёт полную API-документацию для Scala-сервисов через Tapir с автогенерацией OpenAPI-спецификации: описание всех эндпоинтов, схем ошибок, примеров. Документирует Protobuf-контракты, пишет ADR (Architecture Decision Records) для ключевых архитектурных решений в проекте.

Проектирует и реализует стратегии версионирования API с использованием согласования контента, пользовательских media types или path-based версионирования в Scala-микросервисах. Пишет руководства по миграции и автоматизированные контрактные тесты для переходов между версиями.

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

Разрабатывает gRPC-сервисы на Scala: использует Akka gRPC или ZIO gRPC для реализации сервисов с streaming, интегрирует с Akka Streams для backpressure-aware обработки. Настраивает ScalaPB transformations для кастомизации сгенерированного кода.

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

Реализует gRPC-сервисы на Scala через ScalaPB и Akka gRPC: unary и server-streaming RPC, обработка ошибок через Status, deadline propagation. Проектирует Protobuf-схемы с учётом эволюции, использует oneof для полиморфизма и настраивает interceptors для логирования и аутентификации.

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

Реализует rate limiting в Scala-сервисах: использует Akka Streams throttle для flow control, настраивает ZIO с Semaphore для concurrent limiting, реализует distributed limiting через Redis. Применяет Play Framework filters для per-request rate limiting.

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

Проектирует REST API в Scala-сервисах с соблюдением best practices: HATEOAS-ссылки, пагинация, фильтрация через query-параметры. Реализует content negotiation, корректную обработку ошибок через ADT и middleware для логирования в Play Framework или Akka HTTP Directives.

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

CQRS Применение

Реализует CQRS в Scala: использует Akka Typed Persistence для event sourced aggregates, настраивает Akka Projection для read models, применяет ZIO + Tapir для typed command/query API. Реализует domain events с sealed trait hierarchies для exhaustive matching.

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

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

Интеграционное тестированиеОсновы сетейОсновы System DesignПрактики безопасного кодаПроектирование WebSocket APIСтруктурированное логированиеУправление памятьюAWSChatGPT / ClaudeCode ReviewCPU ProfilingCursor IDEDockerE2E тестированиеELK StackEvent-Driven ArchitectureGit AdvancedGitHub Actions / GitLab CIGitHub CopilotGraphQL DesignHighload архитектураJWT / OAuth2 / OIDCKubernetes CoreLatency OptimizationOpenTelemetryOWASP и безопасность приложенийPrometheus и GrafanaPrompt Engineering для кодаProperty-Based TestingPython Web FrameworksSLI / SLO / SLAStream ProcessingTDD и BDDTerraformUnit-тестирование

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

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

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

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