Роли · Backend Developer (Node.js) · Middle

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

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

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

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

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

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

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

Самостоятельно применяет алгоритмическое мышление в Node.js: выбирает неблокирующие алгоритмы для эффективности event loop, понимает потоковые алгоритмические паттерны для обработки с ограничениями памяти, оценивает планирование async-операций. Анализирует сложность операций трансформации данных в цепочках middleware Express/Fastify.

Самостоятельно применяет асинхронное программирование в Node.js: async/await с правильной обработкой ошибок, паттерны композиции Promise, событийно-управляемая архитектура с EventEmitter. Понимает компромиссы между callbacks, promises и streams в event loop Node.js.

Самостоятельно применяет практики качества кода в Node.js/TypeScript-разработке. Пишет чистый async-код с правильными error boundaries и типобезопасностью. Понимает компромиссы между паттернами композиции middleware. Ревьюит код на блокировку event loop, правильную работу со стримами и безопасность зависимостей.

Применяет принципы ФП в Node.js: чистые функции, иммутабельность через Object.freeze или Immer, композиция функций. Эффективно использует higher-order functions, map/filter/reduce. Понимает closures и currying для переиспользуемых утилит. Ревьюит код на предмет лишних мутаций и побочных эффектов.

Самостоятельно применяет паттерны проектирования для Node.js: паттерн цепочки middleware в Express/Fastify, observer с EventEmitter, фабрика для инстанцирования сервисов, стратегия для подключаемых реализаций. Обосновывает компромиссы паттернов для async-first архитектур Node.js.

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

Самостоятельно применяет ООП/SOLID в Node.js/TypeScript: правильные иерархии классов для сервисов, разделение интерфейсов через TypeScript interfaces, паттерны внедрения зависимостей (ручные или через NestJS DI). Понимает компромиссы между классовым ООП и функциональными паттернами в экосистеме Node.js.

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

Самостоятельно выбирает подходящие структуры данных в Node.js: Map/Set vs простые объекты для key-value операций, TypedArrays для бинарных данных, Buffer для I/O-операций. Понимает компромиссы между выбором структур данных для оптимизации V8 и давления на сборщик мусора.

Самостоятельно применяет систему типов TypeScript для Node.js-сервисов — дискриминированные объединения для типов ответов API, branded types для доменных идентификаторов и условные типы для сигнатур обработчиков. Понимает компромиссы между валидацией в runtime (zod/io-ts) и безопасностью на этапе компиляции. Применяет техники сужения типов при ревью кода.

Backend Development · 7

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

Работает с message broker'ами в Node.js: использует KafkaJS для Kafka-интеграции, настраивает NestJS microservices с RabbitMQ/Kafka транспортом, реализует pub/sub через Redis Streams. Применяет consumer groups и настраивает retry логику с exponential backoff.

Самостоятельно реализует стратегии кэширования в Node.js: многоуровневое кэширование с ioredis, HTTP-кэширование ответов и заголовки CDN кэша. Понимает предотвращение cache stampede, вероятностную раннюю экспирацию и паттерны инвалидации кэша.

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

Реализует интеграцию Kafka для Node.js-микросервисов: паттерны event sourcing с KafkaJS, валидация схем с Avro/Protobuf и управление consumer groups для масштабируемой обработки. Обрабатывает backpressure в event loop Node.js при высокопроизводительном потреблении. Реализует идемпотентную обработку сообщений и паттерны dead letter queue.

Node.js Frameworks Применение

Самостоятельно строит приложения на Express/Fastify/NestJS, понимает middleware-пайплайны, dependency injection и жизненный цикл запросов. Оптимизирует производительность event loop Node.js и пишет юнит/интеграционные тесты с Jest/Mocha.

RabbitMQ Применение

Самостоятельно реализует паттерны RabbitMQ-messaging в Node.js: topic exchanges, RPC, work queues с prefetch. Настраивает восстановление соединений, пулинг каналов и обработку dead-letter. Пишет тесты для асинхронных потоков обработки сообщений.

Redis Применение

Самостоятельно реализует паттерны кэширования Redis в Node.js-сервисах — cache-aside с ioredis, распределённые блокировки с Redlock и pub/sub для трансляции событий. Понимает политики памяти Redis, стратегии вытеснения и влияние задержки репликации. Пишет комплексные тесты для консистентности кэша и сценариев отказоустойчивости.

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

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

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

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

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

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

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

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

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

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

Работает с шардированными БД в Node.js: реализует application-level sharding с Knex/Prisma через dynamic connection selection, настраивает MongoDB sharding с выбором shard key, применяет connection pooling per shard. Обрабатывает cross-shard queries через Promise.all scatter-gather.

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

Оптимизирует connection pooling в Node.js: настраивает Prisma connection pool для разных environments, использует Knex pool с acquireConnectionTimeout, реализует connection health checking через pool.on('error'). Мониторит pool utilization через custom metrics.

MongoDB Применение

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

PostgreSQL Применение

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

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

Генерирует API documentation: OpenAPI spec из NestJS декораторов или Fastify schemas, Redoc для публикации. Документирует: error codes, rate limits, pagination. Пишет getting started guides.

Проектирует real-time features: Socket.IO namespaces, presence tracking, message acknowledgment. Масштабирует через Redis adapter. Реализует binary data transfer и compression.

Самостоятельно проектирует и реализует Стратегии версионирования API. Понимает best practices и patterns. Пишет документацию и тесты API.

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

Автоматизирует API testing: Supertest для integration tests, Postman/Newman в CI, contract testing (Pact). Тестирует error scenarios, edge cases, authentication flows.

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

Проектирует GraphQL-схемы: input types для mutations, pagination (Relay connections), error handling. Оптимизирует: DataLoader для N+1, query complexity limits, persisted queries.

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

Разрабатывает gRPC-сервисы на Node.js: реализует streaming RPC, интегрирует с NestJS через @grpc/grpc-js, настраивает metadata для передачи auth-токенов и trace-контекста. Использует ts-proto или protobuf-ts для типобезопасной генерации TypeScript-кода из .proto.

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

Реализует rate limiting в Node.js сервисах: использует rate-limiter-flexible с Redis для distributed limiting, настраивает @nestjs/throttler с custom storage, реализует per-route и per-user limiting. Обрабатывает rate limit headers и retry-after для клиентов.

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

Проектирует REST API: resource naming, pagination (cursor-based), filtering, sorting. Реализует HATEOAS. Оптимизирует: response compression, ETags. Middleware pipeline для cross-cutting concerns.

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

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

Настраивает сетевое взаимодействие: keep-alive для HTTP connections, connection pooling для databases, service discovery. Диагностирует: timeouts, connection leaks, DNS caching в Node.js.

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

CQRS Применение

Реализует CQRS в Node.js проектах: использует NestJS CQRS или custom implementation с TypeScript, создает отдельные read models через Prisma/TypeORM, настраивает event handlers для синхронизации. Применяет Repository pattern с разными реализациями для command и query сторон.

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

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

Декомпозиция на микросервисыДокументация как кодИнтеграционное тестированиеМногопоточное программированиеОсновы System DesignПрактики безопасного кодаСтруктурированное логированиеУправление памятьюAWSChatGPT / ClaudeClean ArchitectureCode ReviewCPU ProfilingCursor IDEDockerE2E тестированиеELK StackEvent-Driven ArchitectureGit AdvancedGitHub Actions / GitLab CIGitHub CopilotgRPC и Protocol BuffersJWT / OAuth2 / OIDCKubernetes CoreLatency OptimizationOpenTelemetryOWASP и безопасность приложенийPerformance BudgetsPrometheus и GrafanaPrompt Engineering для кодаPython Web FrameworksSecrets ManagementSLI / SLO / SLATDD и BDDTerraformUnit-тестирование

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

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

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

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