Применяет алгоритмическую экспертизу в Elixir-разработке: flow-based алгоритмы обработки с backpressure GenStage, распределённые алгоритмы консенсуса в кластерных OTP-приложениях, эффективная рекурсия с tail-call оптимизацией. Проектирует алгоритмы балансировки деревьев супервизоров процессов и распределения нагрузки.
Роли · Backend Developer (Elixir) · Senior
Что должен уметь Senior }
50 ключевых навыков, всего 66. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Senior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Senior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 9
Проектирует async-архитектуры в Elixir/OTP: пайплайны с backpressure на GenStage, распределённая координация задач между нодами, дизайн деревьев супервизоров для отказоустойчивых async-workflow. Менторит команду по паттернам конкурентности OTP.
Проектирует архитектуры приложений Elixir, максимально используя преимущества иммутабельности для конкурентной безопасности и отказоустойчивости. Внедряет продвинутые паттерны — кэширование на ETS с иммутабельными снапшотами, event sourcing с иммутабельными логами событий и CQRS-архитектуры с иммутабельными структурами команд и событий. Оптимизирует пайплайны трансформации данных, понимая structural sharing и семантику копирования бинарных данных в BEAM VM.
Проектирует стандарты качества кода для Elixir/OTP-проектов: конфигурация Credo, спецификации dialyzer, паттерны архитектуры процессов. Рефакторит иерархии GenServer для отказоустойчивости и ясности. Устанавливает практики ревью для паттернов конкурентности, деревьев супервизоров и горячего обновления кода.
Обладает глубокой экспертизой в конкурентности Elixir/OTP: проектирует отказоустойчивые распределённые системы с деревьями supervision, внедряет backpressure и контроль потока в GenStage-пайплайнах, оптимизирует планирование процессов для высокопроизводительных систем. Менторит команду по продвинутым паттернам OTP для продакшен Elixir-приложений.
Проектирует композируемые middleware-пайплайны с использованием монадических паттернов в Elixir (цепочки Plug, композиция транзакций Ecto.Multi). Архитектурит стратегии обработки ошибок, сочетая with-выражения, тегированные кортежи и деревья супервизии. Менторит разработчиков в алгебраическом мышлении и понимании, когда отказаться от монадических абстракций в пользу OTP-паттернов.
Проектирует системы на Elixir с глубоким знанием ФП: supervision trees с чистой бизнес-логикой, отделённой от побочных эффектов, пайплайны данных через Stream и Flow с учётом backpressure. Менторит команду по монадической обработке ошибок через with-выражения и использованию behaviours.
Обладает глубокой экспертизой в паттернах проектирования для Elixir/OTP: проектирует отказоустойчивые архитектуры со стратегиями supervision, внедряет доменно-ориентированные паттерны, адаптированные для функционального программирования, оптимизирует паттерны GenServer и процессов для масштабируемости. Менторит команду по паттернам проектирования OTP для распределённых Elixir-систем.
Выбирает оптимальные структуры данных для Elixir/OTP-приложений: ETS-таблицы для конкурентных нагрузок с интенсивным чтением, изоляция состояния на основе процессов, persistent term storage для конфигурации. Оптимизирует поток данных через GenStage-пайплайны с буферизацией, учитывающей backpressure. Проектирует эффективные структуры передачи сообщений между распределёнными узлами Erlang.
Backend Development · 7
Проектирует messaging-архитектуру для Elixir-систем: определяет границы между BEAM distribution и external brokers, реализует event sourcing через Commanded framework, настраивает Broadway с custom acknowledger для exactly-once semantics. Оптимизирует concurrent processing через process pooling.
Реализует многоуровневое кэширование в Elixir-приложениях: ETS для горячих данных в памяти, Cachex с TTL-политиками, Redis для распределённого кэша. Применяет :persistent_term для редко меняющихся конфигураций, настраивает инвалидацию через PubSub Phoenix.
Интегрирует Apache Kafka в Elixir-приложения через Broadway с KafkaBroadway-адаптером. Настраивает consumer groups, управляет offset-коммитами и партициями. Реализует обработку сообщений с back-pressure и автоматическим масштабированием процессов через Broadway.
Проектирует решения на основе Elixir Phoenix для production-систем. Оптимизирует производительность и масштабируемость. Выбирает между альтернативными подходами. Менторит команду.
Проектирует NATS JetStream-систему обмена сообщениями для Elixir-микросервисов. Реализует паттерны exactly-once доставки с Elixir-консьюмерами. Оптимизирует иерархии субъектов для мультитенантных OTP-приложений.
Проектирует архитектуру messaging на RabbitMQ для Elixir/OTP-систем. Реализует кастомные Broadway-продюсеры с backpressure, shovel/federation для связи кластеров. Оптимизирует конкурентность consumer'ов, используя возможности планировщика BEAM.
Интегрирует Redis в Elixir-приложения через Redix или библиотеку Cachex с Redis-бэкендом. Реализует кэширование сессий Phoenix, результатов Ecto-запросов и rate limiting. Настраивает пул соединений через NimblePool и управляет TTL-стратегиями.
Базы данных · 8
Проектирует стратегию индексирования для PostgreSQL в Elixir-проектах. Создаёт частичные, GIN, GiST и BRIN-индексы через Ecto-миграции с execute/1. Анализирует query plans через EXPLAIN ANALYZE, оптимизирует индексы для Ecto-запросов с preload и join.
Реализует сложные Ecto-миграции для PostgreSQL: безопасное добавление колонок с дефолтами, миграции данных через execute/1, создание индексов concurrently. Применяет Ecto.Migration.flush/0 для многоэтапных миграций и обеспечивает обратную совместимость схемы.
Оптимизирует сложные Ecto-запросы к PostgreSQL: CTE через fragments, оконные функции, материализованные представления. Анализирует EXPLAIN ANALYZE для выявления seq scan и nested loops. Применяет Ecto.Multi и stream для обработки больших датасетов без OOM.
Проектирует сложные модели данных с Ecto для PostgreSQL: полиморфные ассоциации, STI через поле type, JSONB-колонки с Ecto.Type. Реализует кастомные Ecto.Type для domain-specific типов, применяет Ecto.Changeset для сложной бизнес-валидации с контекстами.
Реализует сложные транзакционные сценарии через Ecto.Multi для цепочек операций с rollback. Настраивает уровни изоляции PostgreSQL для конкурентных Elixir-процессов. Применяет advisory locks через Ecto для координации между GenServer-процессами и нодами кластера.
Проектирует шардирование для Elixir-систем: реализует custom Ecto adapter для transparent sharding, проектирует resharding с GenServer-based coordinator, использует BEAM distribution для в виде «шардов» для stateful данных в ETS/Mnesia. Оптимизирует connection management через database proxy (pgBouncer).
Проектирует connection management для Elixir-систем: настраивает multi-repo architecture с отдельными pools для read replicas, реализует connection warming через start_link init, проектирует PgBouncer integration для connection multiplexing. Решает проблемы prepared statements с PgBouncer.
Оптимизирует работу с PostgreSQL в Elixir через продвинутые возможности Ecto: multi-tenant архитектуру с prefix, оконные функции через fragments, CTE и рекурсивные запросы. Настраивает Ecto.Repo с пулом соединений через DBConnection для высоких нагрузок.
API и интеграции · 7
Проектирует систему документирования API для Elixir-проектов с автогенерацией из typespecs и open_api_spex. Внедряет contract testing через спецификации, настраивает CI-валидацию актуальности документации. Создаёт интерактивные примеры с Livebook для сложных интеграций.
Проектирует масштабируемые WebSocket-системы на Phoenix с LiveView для серверного рендеринга в реальном времени. Оптимизирует Phoenix.PubSub для миллионов подписок, настраивает кластеризацию через pg2/Phoenix.PubSub.PG2. Реализует graceful degradation с long polling.
Проектирует стратегию версионирования API для Phoenix с минимизацией дублирования кода. Реализует content negotiation через Accept headers и кастомные MIME-типы. Внедряет deprecation policy с предупреждениями в заголовках ответов и мониторинг использования версий.
Проектирует масштабируемые GraphQL API на Absinthe с подписками через Phoenix PubSub и WebSocket. Внедряет persisted queries, query complexity analysis и depth limiting для защиты от DoS. Реализует федерацию схем и интеграцию с Phoenix LiveView через push-обновления.
Проектирует gRPC-интеграцию для Elixir-систем: использует BEAM distribution для внутренней коммуникации и gRPC для cross-language взаимодействия, настраивает connection management с учётом BEAM scheduler, реализует deadline propagation через process metadata. Оптимизирует для высокой concurrency.
Проектирует rate limiting для Elixir-систем: реализует distributed rate limiting через BEAM distribution с :global или Horde, настраивает Redis-based limiting для multi-node clusters, проектирует backpressure через GenStage demand. Оптимизирует ETS access patterns для concurrent rate checking.
Проектирует масштабируемые REST API на Phoenix с HATEOAS и content negotiation. Внедряет rate limiting через Hammer, кэширование через ETag и ConCache. Реализует API-шлюз с Plug.Router, настраивает документацию через OpenAPI с open_api_spex и Swagger UI.
Облако и инфраструктура · 3
Проектирует AWS-инфраструктуру для Elixir-платформы. Настраивает ECS/EKS с кластеризацией BEAM через libcluster и AWS Cloud Map. Реализует event-driven архитектуру с SQS, SNS и Broadway. Оптимизирует стоимость через Spot Instances с graceful draining процессов.
Проектирует production-ready Docker-инфраструктуру для Elixir-приложений. Настраивает multi-stage builds с оптимальным кэшированием слоёв, конфигурирует Elixir releases с --no-halt. Реализует graceful shutdown через SIGTERM в supervision tree, настраивает сетевую изоляцию.
Проектирует Kubernetes-инфраструктуру для распределённых Elixir-систем. Настраивает StatefulSets для кластеризации BEAM с libcluster, Headless Services для node discovery. Реализует canary deployments, настраивает PodDisruptionBudget для сохранения кворума Elixir-кластера.
DevOps и CI/CD · 1
Проектирует продвинутые CI/CD-пайплайны для Elixir на GitHub Actions. Реализует инкрементальную компиляцию с кэшированием, параллельное выполнение тестов через mix test --partitions. Настраивает автоматическую сборку Docker-образов с Elixir releases и деплой в Kubernetes.
Тестирование и QA · 3
Проектирует стратегию интеграционного тестирования для Elixir-платформы. Реализует end-to-end тесты через Wallaby с headless Chrome для LiveView. Настраивает тестирование распределённых систем с несколькими BEAM-нодами, мокирует внешние API через Bypass и Tesla.Mock.
Проектирует комплексное property-based тестирование для Elixir-проектов через StreamData. Создаёт кастомные генераторы для сложных доменных объектов, реализует stateful-тесты для GenServer. Применяет shrinking для минимизации failing-кейсов, тестирует Ecto-запросы и протоколы.
Проектирует тестовую архитектуру для Elixir-приложений: изоляция через sandbox-режим Ecto, concurrent тесты с async: true. Реализует контрактное тестирование через Mox с verify_on_exit!, property-based через StreamData. Настраивает ExCoveralls для отчётов покрытия в CI.
Безопасность · 3
Проектирует безопасную архитектуру Elixir-приложений. Внедряет принцип least privilege через Guardian и RBAC-авторизацию. Реализует audit logging через :telemetry, настраивает шифрование данных через Cloak.Ecto. Проводит security-ревью кода с фокусом на OTP-специфичные уязвимости.
Проектирует безопасную систему аутентификации для Elixir-микросервисов. Реализует centralized auth через Guardian с JWT RS256 и JWKS-ротацией ключей. Внедряет OAuth2 server через ExOAuth2Provider, настраивает SSO и token introspection для межсервисной авторизации.
Проектирует комплексную защиту от OWASP-угроз для Elixir-сервисов. Внедряет SAST через Sobelow для статического анализа Phoenix-кода, настраивает WAF-правила. Реализует защиту от SSRF, deserialization-атак через безопасный :erlang.binary_to_term с [:safe] опцией.
AI-ассистированная разработка · 1
Интегрирует AI-инструменты в рабочий процесс Elixir-разработки: Copilot для генерации boilerplate, Claude для архитектурных решений. Создаёт шаблоны промптов для генерации идиоматического Elixir-кода. Критически оценивает AI-предложения на соответствие OTP best practices.
Архитектура и проектирование · 3
Проектирует распределённые Elixir-системы с микросервисной архитектурой на BEAM. Определяет границы сервисов через DDD, реализует inter-service communication через distributed Erlang или gRPC с Protobuf. Проектирует resilient systems с circuit breaker через Fuse и bulkhead паттернами.
Проектирует CQRS-архитектуру для Elixir-систем: настраивает multiple read models через Commanded projections, реализует event upcasting для schema evolution, оптимизирует aggregate loading через snapshot strategy. Интегрирует CQRS с Phoenix LiveView для real-time updates.
Проектирует высоконагруженные системы на Elixir/OTP для обработки миллионов соединений. Настраивает кластеризацию BEAM через libcluster, оптимизирует планировщики и GC. Реализует event sourcing через Commanded, CQRS с отдельными Ecto.Repo для чтения и записи.
Observability и мониторинг · 3
Проектирует систему логирования для Elixir-платформы с JSON-структурой и distributed tracing. Внедряет OpenTelemetry через opentelemetry_api с автоматической корреляцией span_id и trace_id. Настраивает Logger backends для отправки в Datadog/Grafana Loki, реализует sampling для высоких нагрузок.
Проектирует архитектуру distributed tracing для Elixir-платформы через OpenTelemetry. Реализует автоматическую инструментацию для кастомных OTP-поведений, настраивает sampling стратегии для высоконагруженных систем. Внедряет корреляцию трейсов с логами и метриками :telemetry.
Проектирует систему мониторинга для Elixir-платформы на Prometheus и Grafana. Реализует кастомные PromEx-плагины для доменных метрик, настраивает alerting rules для SLO/SLI. Внедряет RED-метрики для микросервисов, мониторинг GenServer mailbox size и process reductions.
Контроль версий и коллаборация · 2
Проводит глубокие архитектурные ревью Elixir-систем: оценивает дизайн supervision trees, корректность конкурентных паттернов, эффективность Ecto-запросов. Выявляет потенциальные проблемы: утечки процессов, bottleneck в GenServer, неоптимальные ETS-стратегии. Менторит через ревью.
Проектирует Git-workflow для Elixir-проектов: trunk-based development с feature flags через FunWithFlags, release branches для Elixir releases. Настраивает advanced hooks: проверка typespecs через Dialyzer, валидация миграций. Автоматизирует changelog через conventional commits.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Lead
66 навыков получают более высокое ожидание или становятся ключевыми при переходе с Senior на Lead. Сначала самые большие скачки.
- Алгоритмы и сложность: Продвинутый → Эксперт
- Асинхронное программирование: Продвинутый → Эксперт
- Документирование API: Продвинутый → Эксперт
- Иммутабельность и персистентные структуры: Продвинутый → Эксперт
- Индексирование БД: Продвинутый → Эксперт
- Интеграционное тестирование: Продвинутый → Эксперт
- Качество кода и рефакторинг: Продвинутый → Эксперт
- Миграции БД: Продвинутый → Эксперт
- Многопоточное программирование: Продвинутый → Эксперт
- Монады и функторы: Продвинутый → Эксперт
} в открытой матрице компетенций: 66 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.