Это учебное собеседование с Виталием Слободиным, Senior Frontend Engineer из GitLab: сначала он рассказывает о переходе из backend/full-stack в frontend и о мейнтейнерстве PhantomJS, затем отвечает на архитектурные вопросы. Основная часть посвящена выбору Angular, React и Vue, миграции legacy, SPA/SSR, BFF, микрофронтендам и REST, GraphQL и JSON:API. В завершение участники обсуждают осторожное внедрение TDD и проводят code review функции обновления нормализованного дерева категорий.
Выбор фреймворка следует привязывать к типу продукта, опыту команды и найму: по мнению участника, Angular уместен для тяжёлого enterprise с множеством форм и ролей, а Vue или React удобны для поэтапной миграции legacy.
При миграции legacy полезно заменять части приложения постепенно и выпускать их в production; полностью игнорировать устаревший стек рискованно ещё и потому, что он усложняет найм и поддержку.
SPA оправдана для интерфейсов с частыми обновлениями данных, сложной клиентской логикой и критичным временем отклика, но сам по себе интернет-магазин не делает SPA обязательной — нужно оценивать возможности backend и требования к UX.
BFF полезен, когда нужно собрать и подготовить данные из нескольких микросервисов для конкретного экрана; его не стоит вводить без компетенций в Node.js, эксплуатации и серверных рисках.
TDD участник предлагает не навязывать всей команде сразу: сначала испытать подход на коротком эксперименте или спринте и оценить влияние на скорость и качество.
В code review для обновления дерева категорий он выделяет нарушение контракта возвращаемого значения, мутацию входных данных, неясные имена и лишние проходы по данным; Set считает уместным для устранения дубликатов дочерних идентификаторов.