Домен
Основы программирования
Профиль навыка
Maybe/Option, Either/Result, IO monad, map/flatMap, functor laws, monad transformers
Ролей
3
где встречается этот навык
Грейдов
5
сформированная дорожка роста
Обязательных требований
10
ещё 5 — необязательные
Основы программирования
Функциональное программирование
17.03.2026
Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.
Таблица показывает, как меняется глубина владения навыком от Junior до Principal.
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (Elixir) | Обязателен | Понимает основы Монады и функторы на базовом уровне. Применяет простые концепции в рабочих задачах с использованием Elixir. Следует рекомендациям senior-разработчиков при решении задач. |
| Backend Developer (Scala) | Обязателен | Понимает основы Монады и функторы на базовом уровне. Применяет простые концепции в рабочих задачах с использованием Scala 3. Следует рекомендациям senior-разработчиков при решении задач. |
| Compiler Engineer | Знает базовые концепции fp monads functors для compiler engineer и умеет применять их в типовых задачах. Использует стандартные инструменты и следует установленным практикам команды. Понимает когда и почему применяется данный подход. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (Elixir) | Обязателен | Самостоятельно применяет монадические паттерны (цепочки with/case, Result-кортежи) для композируемой обработки ошибок в Elixir-пайплайнах. Понимает компромиссы между Railway-ориентированным программированием и потоками на исключениях. Объясняет функторное отображение над Ecto changeset и опциональными типами на код-ревью. |
| Backend Developer (Scala) | Обязателен | Самостоятельно использует монады (Option, Either, Future, IO) для управления эффектами в Scala-приложениях. Понимает компромиссы между Cats Effect и ZIO для ссылочной прозрачности. Объясняет законы функторов и десахаризацию for-comprehension коллегам на код-ревью. |
| Compiler Engineer | Уверенно применяет fp monads functors для compiler engineer при решении нестандартных задач. Самостоятельно выбирает оптимальный подход и инструменты. Анализирует trade-offs и предлагает улучшения существующих решений. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (Elixir) | Обязателен | Проектирует композируемые middleware-пайплайны с использованием монадических паттернов в Elixir (цепочки Plug, композиция транзакций Ecto.Multi). Архитектурит стратегии обработки ошибок, сочетая with-выражения, тегированные кортежи и деревья супервизии. Менторит разработчиков в алгебраическом мышлении и понимании, когда отказаться от монадических абстракций в пользу OTP-паттернов. |
| Backend Developer (Scala) | Обязателен | Проектирует системы эффектов с использованием трансформеров монад (EitherT, OptionT, ReaderT) и tagless final кодирования для продакшн Scala-сервисов. Архитектурит доменные слои с free-монадами или ZIO/Cats Effect для тестируемой, композируемой бизнес-логики. Менторит разработчиков по законам монад, стек-безопасной рекурсии с Eval и прагматичным компромиссам ФП. |
| Compiler Engineer | Экспертно применяет fp monads functors для compiler engineer для проектирования сложных систем. Оптимизирует существующие решения и предотвращает архитектурные ошибки. Проводит code review и обучает коллег лучшим практикам. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (Elixir) | Обязателен | Определяет стандарты использования Монады и функторы на уровне команды/продукта. Проводит архитектурные review. Формирует best practices и обучающие материалы для всей команды. |
| Backend Developer (Scala) | Обязателен | Определяет стандарты использования Монады и функторы на уровне команды/продукта. Проводит архитектурные review. Формирует best practices и обучающие материалы для всей команды. |
| Compiler Engineer | Устанавливает стандарты применения fp monads functors для compiler engineer в команде и принимает архитектурные решения. Определяет технический roadmap с учётом данного навыка. Менторит senior инженеров и влияет на практики смежных команд. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (Elixir) | Обязателен | Определяет стратегию применения Монады и функторы на уровне организации. Принимает решения о подходах и инструментах. Менторит lead-разработчиков и формирует technical vision. |
| Backend Developer (Scala) | Обязателен | Определяет стратегию применения Монады и функторы на уровне организации. Принимает решения о подходах и инструментах. Менторит lead-разработчиков и формирует technical vision. |
| Compiler Engineer | Формирует стратегию применения fp monads functors для compiler engineer на уровне организации. Определяет best practices и влияет на выбор технологий за пределами своей команды. Является признанным экспертом в данной области. |