Опишите жизненный цикл разработки (development workflow) на вашем предыдущем проекте.

Ответ

Наш процесс разработки был построен на методологии 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, который включал:
    1. Сборку проекта.
    2. Запуск линтеров (golangci-lint) и форматеров.
    3. Прогон unit- и интеграционных тестов.
  • После мержа в develop происходила автоматическая выкатка на staging-окружение для ручного тестирования QA-инженерами.
  • Релизы в production происходили раз в спринт путем мержа develop в main и создания тега версии.

4. Коммуникации:

  • Daily Standups: 15-минутные встречи каждое утро для синхронизации.
  • Ретроспективы: В конце спринта для обсуждения того, что прошло хорошо, а что можно улучшить.

Такой подход позволял нам поддерживать высокое качество кода, обеспечивать предсказуемость релизов и постоянно улучшать командные процессы.