Были ли в команде вашего последнего проекта Frontend-разработчики?

Ответ

Да, проект был полноценным, с отдельной командой Frontend-разработчиков.

Модель взаимодействия: Мы работали по принципу Backend-for-Frontend (BFF) или через четко определённые API-контракты.

Как было организовано сотрудничество:

  1. Согласование контрактов: Использовали OpenAPI (Swagger) для описания всех REST API. Это был "единый источник истины" для форматов запросов и ответов.
    @Operation(summary = "Get user list")
    @GetMapping("/users")
    public List<UserDTO> getUsers() { ... }
  2. Процесс разработки: Фронтенд-команда (используя React) могла начать работу с моковыми данными, основанными на Swagger-спецификации, ещё до полной готовности бэкенда.
  3. Коммуникация: Регулярные синхронизации между командами (на стендапах, планировании спринтов) для обсуждения изменений в API, форматов данных (например, вложенности JSON) и ошибок.

Вывод: Наличие выделенной фронтенд-команды требовало дисциплины в проектировании API и коммуникации, что в итоге ускоряло разработку и улучшало качество продукта.

Ответ 18+ 🔞

А, ну это когда всё по-взрослому, с разделением труда! Да, был у нас такой опыт, отдельная банда фронтендеров, которые на React'е колдовали.

Как мы с ними, блядь, уживались, не перерезав друг другу глотки: Модель взаимодействия была либо Backend-for-Frontend (BFF), либо просто жёсткие, как гвоздь, API-контракты. Без этого — пиши пропало, начинается адъ и израиль.

Организация, мать её:

  1. Контракты — святое. Всё через OpenAPI (Swagger). Это была наша библия, ёпта. Пока там не описано — фронтенд даже пальцем не пошевелит. Типа так:

    @Operation(summary = "Get user list")
    @GetMapping("/users")
    public List<UserDTO> getUsers() { ... }

    Посмотрели на спецификацию — и сразу ясно, что отдаём, в каком виде, какие поля. Никаких «ой, а можно вот это поле ещё добавить?» в пятницу вечером.

  2. Процесс. Пока мы на бэкенде городили логику и базы, фронтенд уже вовсю пилил интерфейсы на моках, сгенерированных из той же Swagger-спецификации. Красота, а не жизнь — никто никого не ждёт.

  3. Общение. А вот это, сука, самый важный пункт. Без регулярных синхронов — хоть на стендапах, хоть на планировании — всё летело к чёрту. Обсуждали каждую мелочь: вложенность JSON'а, коды ошибок, как будем пагинацию делать. Чтобы потом не выяснять, почему у них «createdAt» — это строка, а у нас — timestamp, и кто теперь виноват.

Итог, блядь: Наличие отдельной фронтенд-бригады — это не хухры-мухры. Это жёсткая дисциплина в проектировании API и, блять, постоянная коммуникация. Зато, когда всё налажено, разработка летит вперёд со скоростью света, и продукт получается не кривой-косой, а вполне себе ничего. Но расслабляться нельзя — чуть зазеваешься, и опять начнётся: «бэкенд тормозит», «фронтенд кривой». В общем, вечный двигатель, ёпта.