Ответ
Наш процесс разработки был построен на методологии Scrum с двухнедельными спринтами и использованием GitFlow для управления кодом.
1. Планирование:
- Планирование спринта: В начале каждого спринта мы проводили встречу, где Product Owner представлял задачи из бэклога. Команда оценивала их сложность (в Story Points) и брала в работу на ближайшие две недели.
- Доска задач: Мы использовали Jira, где у каждой задачи был свой жизненный цикл:
Backlog
->To Do
->In Progress
->Code Review
->QA
->Done
.
2. Разработка:
- Ветвление: Для каждой задачи создавалась отдельная feature-ветка от
develop
(feature/JIRA-123-add-auth
). - Написание кода: Процесс включал написание самого кода и покрытие его unit-тестами.
- Pull Request (PR): После завершения работы создавался PR в ветку
develop
. В PR обязательно было подробное описание изменений. - Code Review: Каждый PR должен был получить как минимум два апрува от других разработчиков. Мы уделяли внимание не только логике, но и стилю кода, и читаемости.
3. CI/CD и тестирование:
- На каждый PR автоматически запускался пайплайн в GitHub Actions, который включал:
- Сборку проекта.
- Запуск линтеров (
golangci-lint
) и форматеров. - Прогон unit- и интеграционных тестов.
- После мержа в
develop
происходила автоматическая выкатка на staging-окружение для ручного тестирования QA-инженерами. - Релизы в production происходили раз в спринт путем мержа
develop
вmain
и создания тега версии.
4. Коммуникации:
- Daily Standups: 15-минутные встречи каждое утро для синхронизации.
- Ретроспективы: В конце спринта для обсуждения того, что прошло хорошо, а что можно улучшить.
Такой подход позволял нам поддерживать высокое качество кода, обеспечивать предсказуемость релизов и постоянно улучшать командные процессы.