Ситуация: сломался фронтенд. Непонятная ошибка с null, код обфусцирован, сорс-мап нет, хотя это тестовое окружение.

Открываю исходник и вижу: поиск в коллекциях, парсинг чисел и дат, форматирование с учетом локали, поход в сеть и прочие штучки. И мне правда интересно — что этот код делает на фронтенде? Почему он не на бекенде? Чего ты добился, заставив этот код крутиться на клиентской машине?

Ты потерял всякую предсказуемость, потому что код выполняется уже не на сервере с линуксом и джавой фиксированных версий. У тебя зоопарк клиентов, где хромы-фаерфоксы с блокироващиками всего и вся. Ты потерял нормальные стек-трейсы. Ты потерял удобный прогон тестов. Ты потерял логирование и отправку ошибок в Sentry. Ты банально сделал хуже по всем статьям.

Звоню фронтендеру. Первое, что от него слышу — сегодня пятница, и он уходит через две минуты. Падает фронтенд? Это с бэка приходят неверные данные, почисти базу и заработает. Сорс-мапы? Тебе надо, ты и добавь. Созвониться в понедельник? У меня будет выходной. Но ты держись!

Я понимаю, что фронтендеру надо зарабатывать, да. Однако лучшее, что можно сделать с проектом — это сократить фронт до одного верстальщика и переехать на северный рендер. Вся логика будет в одном месте; будут тесты, будут прогоны на CI, будут предсказуемые билды. А верстальщик пусть рисует макеты.

Да, будет что-то, что не ложиться на серверный рендер. В таком случае мы это просто не делаем. Если из десяти хотелок мы сделали девять, а последняя ложится поперек, то ее перерабатывают. Например, бьют фичу на два экрана, убирают лишнюю интерактивность и так далее.

Кому-то это не понравится, но что поделать? Чтобы проект шел легко, нужно сбросить балласт. А роль балласта часто играет фронтенд.