Created by AIImproved by people
Riqli · living documents · updated continuously
Where AI knowledge meets human practice.
Share with friends
1. Общие положения
1.1. Назначение документа
Настоящая должностная инструкция определяет функциональные обязанности, права, ответственность и квалификационные требования к Go-разработчику (далее — «Разработчик»), занимающему штатную должность в организации. Документ является основным нормативно-правовым актом, регламентирующим трудовую деятельность Разработчика в области разработки высоконагруженных систем и сетевых сервисов.
1.2. Правовая основа
Разработчик руководствуется в своей деятельности: Трудовым кодексом Российской Федерации; внутренними локальными нормативными актами организации (Правила внутреннего трудового распорядка, Политика информационной безопасности, Положение о коммерческой тайне); настоящей должностной инструкцией; приказами и распоряжениями непосредственного руководителя; технической документацией и стандартами кодирования, принятыми в организации; требованиями охраны труда, техники безопасности и противопожарной безопасности.
1.3. Определения и термины
В настоящей инструкции используются следующие термины и определения: Go-разработчик — специалист, осуществляющий проектирование, разработку, тестирование, внедрение и сопровождение программного обеспечения на языке программирования Go. Высоконагруженная система — информационная система, способная обрабатывать значительные объемы запросов (более 1000 RPS) с поддержанием приемлемого времени отклика. Сетевой сервис — прикладное программное обеспечение, предоставляющее функциональность через сетевые протоколы (HTTP, gRPC, WebSocket). Микросервисная архитектура — подход к разработке, при котором приложение строится как набор небольших, независимо развертываемых сервисов.
1.4. Квалификационная категория и место в структуре
Должность Go-разработчика относится к категории специалистов. Назначение на должность и освобождение от нее производится приказом генерального директора по представлению руководителя отдела разработки (или иного уполномоченного лица) на основании трудового договора. На время отсутствия Разработчика (командировка, отпуск, болезнь) его обязанности исполняет другое лицо, назначаемое приказом, с соответствующими правами и ответственностью за надлежащее выполнение.
2. Цель должности и сфера ответственности
2.1. Основная цель
Основной целью Go-разработчика является разработка высоконагруженных систем и сетевых сервисов, обеспечивающих бесперебойную, отказоустойчивую и эффективную работу ключевых бизнес-функций организации. Разработчик обеспечивает реализацию технических требований к проекту, соблюдение сроков выполнения задач и высокое качество выходного кода.
2.2. Ожидаемые результаты
Ключевыми результатами работы Разработчика являются: написанный, протестированный и задокументированный программный код на Go, соответствующий техническому заданию и корпоративным стандартам; развернутые и функционирующие сетевые сервисы в тестовой и продуктивной среде; своевременное устранение дефектов и инцидентов в работе высоконагруженных систем; оптимизация производительности существующих компонентов; создание технической документации и инструкций для сопровождающего персонала.
3. Подчинение и взаимодействие
3.1. Административное подчинение
Go-разработчик находится в прямом административном подчинении у руководителя отдела разработки (Team Lead) и оперативном подчинении у технического руководителя проекта (Tech Lead). Указания и распоряжения, исходящие от вышестоящего руководства, обязательны к исполнению при условии, что они не противоречат трудовому законодательству и правилам внутреннего распорядка.
3.2. Взаимодействие с другими подразделениями
В процессе работы Разработчик взаимодействует с:
- Отделом тестирования (QA) — по вопросам проверки качества кода, воспроизведения дефектов и приемки результатов;
- Отделом эксплуатации и администрирования (DevOps/SRE) — по вопросам развертывания, мониторинга и поддержки сетевых сервисов в продуктивных средах;
- Отделом аналитики и управления продуктом — по вопросам уточнения требований к функциональности и сценариям использования высоконагруженных систем;
- Смежными командами разработки — по вопросам интеграции и согласования API-интерфейсов.
3.3. Замещение и отчетность
В случае временной нетрудоспособности или отсутствия Разработчика его обязанности распределяются среди членов команды по решению руководителя отдела. По итогам отчетного периода (неделя, спринт, квартал) Разработчик предоставляет руководителю отчет о проделанной работе с указанием завершенных задач, трудозатрат и возникших проблем. Также Разработчик участвует в ретроспективах и плановых совещаниях команды.
4. Должностные обязанности
4.1. Разработка и проектирование архитектуры
Go-разработчик обязан:
- Участвовать в проектировании архитектуры новых компонентов высоконагруженных систем и сетевых сервисов с использованием принципов микросервисной архитектуры и DDD;
- Разрабатывать технические задания, детальные проектные решения и схемы взаимодействия компонентов;
- Проводить оценку сложности задач и планировать необходимые временные и трудовые ресурсы;
- Осуществлять выбор оптимальных паттернов проектирования, библиотек и инфраструктурных инструментов для реализации поставленных задач.
4.2. Написание и поддержка программного кода
Go-разработчик обязан:
- Писать чистый, поддерживаемый и масштабируемый код на языке Go в соответствии с корпоративными стандартами кодирования (gofmt, golangci-lint, принципы SOLID);
- Реализовывать RESTful и gRPC API, асинхронные обработчики событий, фоновые задачи и веб-сокет-соединения для сетевых сервисов;
- Применять эффективные структуры данных, алгоритмы и параллельные паттерны (горутины, каналы, пулы воркеров) для достижения высокой производительности;
- Обеспечивать обработку транзакций, управление сессиями и кэширование для повышения отказоустойчивости и уменьшения нагрузки на базы данных.
4.3. Обеспечение производительности и масштабируемости
Разработчик обязан:
- Проводить профилирование и оптимизацию производительности высоконагруженных систем с использованием инструментов (pprof, trace, benchstat);
- Внедрять механизмы кэширования (Redis, Memcached), асинхронной обработки (RabbitMQ, Kafka) и горизонтального масштабирования;
- Проектировать схемы баз данных (PostgreSQL, ClickHouse) и оптимизировать медленные запросы;
- Обеспечивать работу системы при пиковых нагрузках (более 10 000 RPS) с временем отклика не более 50 мс на 95-м перцентиле.
4.4. Тестирование и контроль качества
Go-разработчик обязан:
- Писать юнит-тесты (пакет
testing), интеграционные и E2E-тесты с использованием фреймворков (testify, ginkgo, go-sqlmock); - Обеспечивать минимальный порог покрытия кода тестами (не менее 80%);
- Участвовать в код-ревью, проверять код других разработчиков на соответствие требованиям и выявлять потенциальные уязвимости;
- Внедрять практики Test-Driven Development (TDD) и Behavior-Driven Development (BDD) в процесс разработки.
4.5. Работа с инфраструктурой и CI/CD
Разработчик обязан:
- Разрабатывать и поддерживать конфигурации для сборки и деплоя сетевых сервисов в контейнерах (Docker, Docker Compose);
- Настраивать пайплайны непрерывной интеграции и развертывания (GitLab CI, GitHub Actions, Jenkins);
- Обеспечивать автоматизированную сборку, прогон тестов и деплой в тестовую и продуктивную среду;
- Проводить диагностику и устранение проблем в конвейерах доставки ПО.
4.6. Мониторинг, логирование и документация
Go-разработчик обязан:
- Внедрять сбор метрик и логирование с использованием стеков (Prometheus, Grafana, ELK/EFK, Loki, Jaeger) для отслеживания состояния высоконагруженных систем;
- Создавать и поддерживать документацию к разработанным API (Swagger/OpenAPI, protobuf-документация);
- Вести документацию по архитектурным решениям, схемам баз данных и алгоритмам работы критически важных узлов;
- Оформлять руководства по эксплуатации, инструкции по развертыванию и troubleshooting guides для администраторов.
4.7. Обеспечение безопасности и соответствия стандартам
Разработчик обязан:
- Внедрять защиту от основных веб-уязвимостей (OWASP Top 10) в сетевых сервисах;
- Соблюдать стандарты информационной безопасности при работе с конфиденциальными данными;
- Проводить аудит зависимостей на наличие уязвимостей (govulncheck, Snyk, Trivy);
- Обеспечивать безопасное хранение секретов и переменных окружения с использованием Vault или систем типа AWS Secrets Manager.
4.8. Участие в Agile-процессах и командной работе
Go-разработчик обязан:
- Участвовать в плановых мероприятиях (Daily Stand-up, Sprint Planning, Sprint Review, Retrospective) в рамках гибкой методологии (Scrum/Kanban);
- Принимать участие в уточнении требований и оценке бэклога задач;
- Передавать знания коллегам (парное программирование, демо-сессии, внутренние митапы);
- Самостоятельно повышать квалификацию, следить за новыми версиями Go, подходами и инструментами в индустрии.
5. Права сотрудника
5.1. Право на информацию и документацию
Go-разработчик имеет право знакомиться с проектами решений руководства, касающимися его деятельности, и запрашивать от руководителя и других подразделений необходимые для работы материалы, техническую документацию, спецификации и данные о работе высоконагруженных систем.
5.2. Право на принятие решений
Разработчик имеет право:
- Принимать решения по выбору архитектурных подходов, фреймворков, библиотек и инструментов в рамках поставленных задач;
- Вносить предложения по улучшению процессов разработки, оптимизации кода и инфраструктуры;
- Останавливать развертывание или вносить изменения в конфигурации при выявлении критических дефектов, угрожающих стабильности сетевых сервисов;
- Привлекать к решению сложных технических проблем специалистов других команд.
5.3. Право на ресурсное обеспечение
Go-разработчик имеет право на:
- Своевременное предоставление рабочего места, оснащенного необходимым аппаратным и программным обеспечением (IDE, доступы к репозиториям, CI/CD, базам данных);
- Доступ к тестовым и продуктивным серверам и сетевому оборудованию в рамках выданных полномочий;
- Использование облачных сред, инструментов мониторинга и логирования;
- Обучение и повышение квалификации за счет организации.
5.4. Право на защиту интересов
Разработчик имеет право обращаться к руководству для защиты своих интересов и права на безопасные условия труда, получать разъяснения по выполнению своих обязанностей и инициировать внеплановые проверки безопасности или производительности высоконагруженных систем при появлении подозрений на нештатную работу.
6. Ответственность и подотчетность
6.1. Дисциплинарная ответственность
Go-разработчик несет дисциплинарную ответственность за:
- Неисполнение или ненадлежащее исполнение своих должностных обязанностей, предусмотренных настоящей инструкцией, в пределах, определенных трудовым законодательством;
- Нарушение правил внутреннего трудового распорядка, инструкций по охране труда и технике безопасности;
- Несоблюдение сроков выполнения задач и предоставление недостоверной отчетности о проделанной работе.
6.2. Материальная ответственность
Разработчик несет материальную ответственность за:
- Ущерб, причиненный организации в результате умышленных или неосторожных действий (бездействия) в процессе разработки, развертывания или эксплуатации сетевых сервисов;
- Разглашение конфиденциальной информации, коммерческой тайны и персональных данных, ставших ему известными в ходе работы;
- Потерю или повреждение вверенного ему имущества и оборудования.
6.3. Ответственность за качество и безопасность
Go-разработчик несет ответственность за:
- Качество выпускаемого кода, его соответствие техническому заданию и стандартам организации;
- Безопасность разработанных компонентов, включая защиту от несанкционированного доступа и утечек данных;
- Стабильность и производительность высоконагруженных систем в зоне своей ответственности.
6.4. Ответственность за документацию и отчетность
Разработчик отвечает за полноту, актуальность и достоверность технической и пользовательской документации, а также за своевременное предоставление отчетов о ходе работ, выявленных инцидентах и планах по устранению неисправностей.
7. Квалификационные требования и компетенции
7.1. Требования к образованию и опыту
На должность Go-разработчика назначается лицо, имеющее высшее профессиональное образование (бакалавриат/специалитет/магистратура) в области информационных технологий, математики или смежных специальностей. Опыт работы в разработке программного обеспечения должен составлять не менее 2 лет, из которых не менее 1 года — коммерческая разработка на языке Go.
7.2. Технические навыки (Hard Skills)
Go-разработчик обязан владеть следующими техническими компетенциями:
- Глубокое знание языка Go: работа с горутинами, каналами, пакетом sync, интерфейсами, рефлексией, генерацией кода;
- Опыт создания сетевых сервисов на основе фреймворков (Gin, Echo, Fiber, go-kit, gRPC);
- Понимание архитектуры и оптимизации баз данных (SQL, NoSQL, Timeseries DB);
- Владение инструментами для кэширования (Redis), очередей сообщений (RabbitMQ, Apache Kafka);
- Знание протоколов HTTP/2, gRPC, WebSocket, REST, GraphQL;
- Навыки настройки и использования контейнеризации (Docker) и оркестрации (Kubernetes);
- Владение системами контроля версий (Git) и CI/CD.
7.3. Дополнительные технические компетенции
Желательными навыками являются:
- Опыт работы в высоконагруженных системах с нагрузкой более 1000 RPS;
- Навыки профилирования и оптимизации (pprof, flamegraphs, go tool trace);
- Знание систем мониторинга (Prometheus, VictoriaMetrics) и визуализации (Grafana);
- Понимание принципов распределенных систем (CAP-теорема, консенсус, Saga);
- Опыт написания кода с учетом безопасности (шифрование, аутентификация/авторизация OAuth2, JWT).
7.4. Личные и профессиональные качества (Soft Skills)
Разработчик должен обладать:
- Системным и аналитическим мышлением;
- Способностью работать в команде и эффективно взаимодействовать с другими членами проектной группы;
- Навыками самоорганизации, пунктуальностью и дисциплинированностью;
- Умением аргументировать технические решения и отстаивать свою точку зрения;
- Стремлением к постоянному саморазвитию и изучению новых технологий.
8. Условия труда
8.1. Режим рабочего времени
Режим работы Go-разработчика устанавливается в соответствии с Правилами внутреннего трудового распорядка и условиями трудового договора. Нормальная продолжительность рабочего времени не превышает 40 часов в неделю. Разработчику предоставляется возможность гибкого графика работы при условии соблюдения необходимых часов присутствия и участия в плановых мероприятиях команды.
8.2. Условия труда и рабочее место
Разработчику обеспечиваются:
- Рабочее место, оборудованное компьютером с необходимым программным обеспечением и доступом к сети Интернет;
- Средства индивидуальной защиты (при необходимости) и комфортные условия труда, соответствующие санитарно-гигиеническим нормам;
- Возможность удаленной работы с предоставлением доступа к корпоративным ресурсам через защищенные каналы связи (при наличии технической возможности).
8.3. Служебные командировки
Разработчик может направляться в служебные командировки для выполнения служебных заданий по решению руководителя. Условия и порядок командирования регламентируются трудовым законодательством и локальными актами организации.
9. Ключевые показатели эффективности (KPI)
9.1. Показатели производительности
Оценка эффективности Go-разработчика осуществляется на основе следующих ключевых показателей:
- Соблюдение сроков выполнения задач (не более 10% просроченных задач в спринте);
- Качество кода: количество дефектов, выявленных на этапе тестирования (не более 2 критических дефектов на 1000 строк кода);
- Покрытие кода юнит-тестами (не менее 80%);
- Время реакции на инциденты и время восстановления сервисов (MTTR) в зоне ответственности (не более 30 минут для критических инцидентов).
9.2. Показатели бизнес-эффективности
Дополнительными показателями являются:
- Снижение среднего времени ответа сетевых сервисов в результате оптимизации (не менее 10% за квартал);
- Увеличение пропускной способности (RPS) высоконагруженных систем (целевой прирост — не менее 15% за год);
- Количество внедренных улучшений и оптимизаций, предложенных Разработчиком;
- Отсутствие инцидентов, связанных с нарушением безопасности, в зоне ответственности.
9.3. Процедура оценки KPI
Оценка KPI проводится ежеквартально на основании данных систем мониторинга, отчетов о дефектах, результатов код-ревью и отзывов от руководителя и смежных команд. Результаты оценки учитываются при начислении премий и бонусов, а также при решении вопросов о профессиональном развитии и карьерном росте.
10. Бизнес-процессы, чек-листы и сценарии рабочих процедур
10.1. Сценарий разработки нового микросервиса
Последовательность действий при создании нового сетевого сервиса:
- Получение и анализ технического задания, включая нефункциональные требования (RPS, SLA, время отклика).
- Проектирование архитектуры сервиса, выбор фреймворка и библиотек.
- Создание репозитория, настройка CI/CD (сборка, статический анализ, тесты).
- Разработка бизнес-логики с использованием TDD и написанием юнит-тестов.
- Написание интеграционных тестов и тестов нагрузки.
- Создание документации API (OpenAPI/Protobuf) и архитектурных схем.
- Деплой в тестовую среду, проверка работоспособности и метрик.
- Устранение замечаний QA и прохождение код-ревью.
- Развертывание в стейджинговой среде, нагрузочное тестирование.
- Плановый релиз в продуктивную среду с мониторингом ключевых показателей.
10.2. Процедура внесения изменений в существующие высоконагруженные системы
При изменении кода существующего высоконагруженного сервиса обязательны:
- Оценка влияния изменений на производительность и стабильность;
- Проведение нагрузочного тестирования до и после изменений;
- Создание плана отката (rollback plan) на случай критических проблем;
- Обновление документации и чек-листов по эксплуатации;
- Согласование с руководителем и командой DevOps времени релиза.
10.3. Ежедневные операционные процедуры
Go-разработчик ежедневно выполняет следующие процедуры:
- Участвует в Daily Stand-up (отчет о проделанной работе, планах и блокерах);
- Мониторит состояние и метрики сетевых сервисов в зоне своей ответственности через панели Grafana и логи;
- Проверяет наличие новых задач в трекере (Jira, Redmine, YouTrack) и актуализирует их статус;
- Проводит код-ревью пул-реквестов коллег;
- Работает над задачами согласно приоритетам спринта.
10.4. Чек-лист перед релизом в продуктивную среду
Перед каждым релизом или выкаткой изменений в продуктивную среду Разработчик проверяет:
- Все ли юнит-тесты и интеграционные тесты успешно пройдены;
- Покрытие кода тестами соответствует установленному порогу;
- Внесена и актуализирована техническая документация и документация API;
- Проведено нагрузочное тестирование при необходимости;
- Настроены или обновлены дашборды и алерты в системе мониторинга;
- Разработан и проверен план отката;
- Получено согласование от руководителя и команды эксплуатации.
10.5. Действия при возникновении инцидента
При возникновении инцидента в работе высоконагруженной системы (падение сервиса, критическое замедление, ошибки в работе) Разработчик обязан:
- Немедленно уведомить руководителя отдела и команду эксплуатации;
- Начать диагностику по доступным логам и метрикам;
- Принять меры по локализации и устранению проблемы (быстрый фикс, откат изменений, масштабирование ресурсов);
- Задокументировать причину инцидента, предпринятые действия и результаты;
- Провести анализ первопричины (Root Cause Analysis) и разработать меры по предотвращению повторения.