1. Общие требования
Обязательное: Высшее образование (бакалавр/специалист) в области Компьютерных наук, Информационных технологий, Прикладной математики, Системного программирования или профессиональная переподготовка (сертифицированные курсы: Яндекс.Практикум и аналоги) + подтвержденный коммерческий опыт от 2 лет.
Язык и экосистема:
- Go 1.21+ (строгая статическая типизация, конкурентность с горутинами и каналами, работа с контекстом, интерфейсы, тестирование)
- Веб-фреймворки: net/http (как основа) + Gin для создания REST/WebSocket API.
Работа с данными:
- SQL: database/sql + драйвер (например, pgx или pq для PostgreSQL) или ORM/библиотеки для работы с данными (SQLx, GORM, sqlc).
- Миграции: Знание инструментов для миграций (Goose, Golang-migrate, GORM migrations).
Базы данных:
- PostgreSQL (транзакции, подготовленные statements, индексы, оптимизация запросов через EXPLAIN ANALYZE).
- Понимание репликации и шардинга (плюсом).
Инфраструктура:
- Docker (мультистейд-сборка образов, оптимизация Dockerfile для Go, docker-compose, развертывание).
- Nginx (базовая настройка, reverse proxy, SSL/TLS termination).
- Очереди сообщений и кэширование: Опыт работы с Redis (pub/sub, кэш), RabbitMQ/Kafka (обязательно) для асинхронных задач и фоновых воркеров, реализованных на горутинах.
Другие технологии:
- Git (ветвление, code review).
- Linux (базовые команды, настройка окружения, сборка и деплой бинарных файлов).
2. Ожидаемый опыт:
- Коммерческая разработка на Go от 1 года (предпочтительно высоконагруженные системы или бэкенд для веб-сервисов).
- Реализация высокопроизводительных API (REST, WebSocket) с авторизацией (JWT/OAuth2).
- Оптимизация SQL-запросов и работы с БД, понимание специфики работы с connection pool в Go.
- Участие в проектировании архитектуры (микросервисы, монолит, чистая архитектура).
3. Ключевые задачи:
- Разработка и поддержка высокопроизводительного бэкенд-API (включая автоматическую документацию через Swagger из кода, например, с помощью swaggo).
- Написание конкурентных и параллельных решений с использованием горутин, каналов, sync.WaitGroup, sync.Mutex и т.д.
- Контейнеризация сервисов и настройка деплоя (сборка статически скомпилированных бинарных файлов для целевых платформ).
- Интеграция с внешними системами (гос. API, платежные шлюзы) с использованием контекста для таймаутов и отмены.
4. Принципы и методологии:
- Следование SOLID, DRY, KISS. Написание чистого, эффективного и идиоматичного кода (Effective Go).
- Понимание паттернов проектирования, актуальных для Go (например, Dependency Injection, Repository, Worker Pool, Factory и др.).
- Работа в Agile/Scrum (оценка задач, планирование спринтов).
- Умение писать эффективные unit- и integration-тесты с использованием стандартной библиотеки testing и популярных фреймворков (Testify).
5. Дополнительные плюсы:
- Опыт с Kubernetes (или желание освоить).
- Базовые знания frontend (TypeScript, React) для взаимодействия с командой.
- Английский — уровень Pre-Intermediate+ (чтение документации).
6. Личные качества:
- Аналитическое мышление (умение проектировать масштабируемые решения).
- Готовность поддерживать legacy-код и рефакторить его.
- Коммуникабельность (обсуждение ТЗ с аналитиками и фронтендом).
Условия работы:
- Разработка корпоративной информационной системы (полный цикл).
- Гибкий график (офис/гибрид).