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