Самостоятельно применяет алгоритмическое мышление в Go: выбирает эффективную сортировку/поиск для обработки данных, понимает последствия планирования горутин, оценивает паттерны конкурентных алгоритмов с каналами. Анализирует сложность пайплайнов обработки данных в Go-сервисах.
Роли · Backend Developer (Go) · Middle
Что должен уметь Middle }
32 ключевых навыков, всего 71. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Middle
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 8
Самостоятельно применяет асинхронное программирование в Go: горутины с правильным управлением жизненным циклом, паттерны координации на основе каналов, проброс context для отмены. Понимает компромиссы между каналами и примитивами sync, паттерны fan-out/fan-in.
Самостоятельно применяет практики качества кода в Go-разработке. Пишет идиоматичный Go-код с правильной обработкой ошибок, использованием context и управлением горутинами. Понимает компромиссы между простотой дизайна интерфейсов и гибкостью. Ревьюит код на race conditions, утечки ресурсов и ясность структуры пакетов.
Самостоятельно применяет многопоточность в Go: горутины с правильным управлением жизненным циклом, каналы для безопасной межгорутинной коммуникации, sync.WaitGroup и context для координации, select для мультиплексирования операций каналов. Обосновывает компромиссы паттернов конкурентности Go на code review.
Самостоятельно применяет паттерны проектирования для Go: стратегия и адаптер на основе интерфейсов, функциональные опции для конфигурации, паттерн middleware для обработки HTTP, observer/pub-sub на основе каналов. Обосновывает Go-идиоматичные альтернативы паттернов на code review.
Самостоятельно применяет принципы SOLID в Go: контракты сервисов на основе интерфейсов, композиция вместо наследования через встраивание структур, единственная ответственность в слоях handler/service/repository. Понимает Go-специфичные компромиссы — неявные интерфейсы, принцип «принимай интерфейсы, возвращай структуры», дизайн маленьких интерфейсов.
Самостоятельно выбирает подходящие структуры данных в Go: слайсы vs массивы для работы с коллекциями, maps с правильными типами ключей, каналы для паттернов коммуникации горутин. Понимает компромиссы между pointer и value receivers для инкапсуляции данных и выделения памяти.
Понимает модель памяти Go: аллокация stack vs heap, escape analysis и сборщик мусора (concurrent tri-color mark-and-sweep). Профилирует использование памяти через pprof и runtime/metrics. Минимизирует heap-аллокации через семантику значений и sync.Pool. Понимает рост стека горутин и последствия для высоконагруженных сервисов.
Backend Development · 6
Уверенно работает с message broker'ами на Go: реализует consumer groups в Kafka через segmentio/kafka-go или Sarama, настраивает NATS JetStream для durable messaging, применяет паттерны worker pool для параллельной обработки. Обрабатывает poison messages и настраивает retry с backoff.
Самостоятельно реализует задачи с Стратегии кэширования в gin/echo/fiber. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью go test.
Самостоятельно реализует задачи с Apache Kafka в gin/echo/fiber. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью go test.
Самостоятельно реализует задачи с Go Web Frameworks в gin/echo/fiber. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью go test.
Самостоятельно реализует задачи с NATS / NATS JetStream в gin/echo/fiber. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью go test.
Самостоятельно реализует задачи с Redis в gin/echo/fiber. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты с помощью go test.
Базы данных · 8
Самостоятельно проектирует схемы и оптимизирует запросы с Индексирование БД. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
Самостоятельно проектирует схемы и оптимизирует запросы с Миграции БД. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
Самостоятельно проектирует схемы и оптимизирует запросы с Оптимизация запросов. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
Самостоятельно проектирует схемы и оптимизирует запросы с Проектирование схем данных. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
Работает с шардированными БД в Go: реализует shard-aware repository layer с connection pooling per shard, применяет consistent hashing для распределения данных, обрабатывает cross-shard queries через scatter-gather pattern. Использует context для propagation shard info.
Самостоятельно проектирует схемы и оптимизирует запросы с ClickHouse. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
Оптимизирует connection pooling в Go: рассчитывает оптимальные pool параметры на основе workload, настраивает pgxpool для PostgreSQL с подготовленными выражениями, реализует connection health checking. Мониторит pool stats через sql.DBStats и custom metrics.
Самостоятельно проектирует схемы и оптимизирует запросы с PostgreSQL. Понимает индексирование и планы выполнения запросов. Использует sqlx/GORM эффективно.
API и интеграции · 6
Поддерживает полную OpenAPI-документацию для Go-сервисов через swaggo: описание моделей, примеры запросов/ответов, аутентификация. Настраивает автоматическую генерацию документации в CI и публикацию через Swagger UI или Redoc.
Реализует версионирование API в Go-сервисах: параллельная поддержка нескольких версий через router groups, стратегия deprecation с Sunset-заголовками. Разрабатывает адаптеры между версиями и тесты backward compatibility через go test.
Уверенно разрабатывает gRPC-сервисы на Go: реализует все типы RPC (unary, server/client/bidirectional streaming), настраивает interceptors для трейсинга и метрик, использует metadata для передачи контекста. Применяет grpc-middleware для стандартных cross-cutting concerns.
Проектирует gRPC-сервисы на Go: определяет .proto-контракты с message validation, реализует unary и server-streaming RPC. Настраивает grpc-gateway для REST-прокси, применяет interceptors для логирования, аутентификации и трейсинга через OpenTelemetry.
Реализует rate limiting в Go-сервисах: использует go-redis/redis_rate для distributed rate limiting, реализует per-key limiting с custom key extraction (IP, user ID, API key). Применяет GCRA (Generic Cell Rate Algorithm) для smooth traffic shaping и настраивает response headers.
Проектирует REST API на Go с полной CRUD-функциональностью через Gin/Echo/Chi: валидация входных данных, пагинация, фильтрация, сортировка. Реализует middleware-цепочки для аутентификации, CORS, request ID и structured logging через zerolog/zap.
Облако и инфраструктура · 2
Применяет сетевые знания в Go-сервисах: настройка http.Transport с connection pooling и TLS, gRPC через HTTP/2, DNS-based service discovery. Отлаживает сетевые проблемы через tcpdump/wireshark, настраивает keep-alive и timeout-политики для Go HTTP-клиентов.
Пишет Terraform конфигурации для облачных ресурсов (VPC, EC2/Compute, RDS, S3). Использует modules для переиспользования. Работает с remote state (S3/GCS backend). Использует workspaces или directories для разных окружений. Импортирует существующие ресурсы.
Архитектура и проектирование · 1
Реализует CQRS в Go-проектах: создает отдельные пакеты для commands и queries, использует interface-based dispatch для command/query bus, проектирует read-optimized структуры (denormalized views) отдельно от write models. Применяет Go channels для internal event propagation между моделями.
Observability и мониторинг · 1
Определяет SLI для Go-сервисов — p99 задержку из метрик middleware, частоту ошибок из структурированных логов и доступность из health checks. Настраивает мониторинг SLI на базе Prometheus с recording rules. Понимает error budgets и управляет ими для итеративных релизов функций. Участвует в ротации дежурств Go-сервисов.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Senior
71 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.
- Декомпозиция на микросервисы: Применение → Продвинутый · становится ключевым
- Интеграционное тестирование: Применение → Продвинутый · становится ключевым
- Основы System Design: Применение → Продвинутый · становится ключевым
- Практики безопасного кода: Применение → Продвинутый · становится ключевым
- Структурированное логирование: Применение → Продвинутый · становится ключевым
- AWS: Применение → Продвинутый · становится ключевым
- Code Review: Применение → Продвинутый · становится ключевым
- CPU Profiling: Применение → Продвинутый · становится ключевым
- Docker: Применение → Продвинутый · становится ключевым
- Git Advanced: Применение → Продвинутый · становится ключевым
} в открытой матрице компетенций: 71 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.