Ответ
На последнем проекте команда разработки состояла из 5 человек и работала по гибридной методологии Scrum/Kanban.
Роли в команде
- Тимлид (Tech Lead) — 1 человек. Отвечал за архитектуру, технический долг и взаимодействие с заказчиком.
- Бэкенд-разработчики (Java) — 2 человека (включая меня).
- Фронтенд-разработчик (React) — 1 человек.
- QA-инженер (Manual/Automation) — 1 человек.
Технологический стек
- Бэкенд: Java 11, Spring Boot (Web, Data JPA, Security), Apache Kafka, PostgreSQL.
- Фронтенд: React, TypeScript, Redux Toolkit.
- Инфраструктура: Docker, Kubernetes (k8s), Jenkins, GitLab CI.
Процессы и взаимодействие
- Планирование: Двухнедельные спринты с планированием (Sprint Planning) и оценкой задач по Story Points.
- Ежедневные стендапы: 15-минутные встречи для синхронизации по прогрессу и блокерам.
-
Разработка:
- Использовали Git Flow с ветками
feature/,release/,hotfix/. - Каждая задача сопровождалась код-ревью через Merge Request (MR) в GitLab. Требовалось минимум один апрув.
-
Пример моего кода (контроллер для заказов):
@RestController @RequestMapping("/api/v1/orders") @RequiredArgsConstructor // Lombok для инъекции зависимостей public class OrderController { private final OrderService orderService; @GetMapping("/{id}") public ResponseEntity<OrderDto> getOrder(@PathVariable Long id) { // Сервисный слой обрабатывает бизнес-логику и маппинг в DTO return ResponseEntity.ok(orderService.getOrderById(id)); } }
- Использовали Git Flow с ветками
- Тестирование: QA создавал тест-кейсы в Jira. После разработки задача передавалась на тестирование. Для регресса использовались автотесты на Selenium и API-тесты в Postman/Newman.
- Деплой: После прохождения тестов и мержа в
mainсрабатывал Jenkins-пайплайн, который собирал образ Docker и разворачивал его в k8s-кластере.
Ключевые особенности: Акцент на непрерывную интеграцию (CI), обязательное покрытие кода юнит-тестами (минимум 80%) и парное программирование для сложных задач.