Половину того, что спрашивают на собесах, делает компилятор
За последний год у меня отобрали два навыка. Оба учил годами, за оба платили, про оба спрашивали на каждом собеседовании. Про каждый по отдельности написана сотня статей. А вместе их почему-то никто не складывает.
Первое — мемоизация
React Compiler стал стабильным ещё осенью 2025, а в Next.js 16 он вообще включён по умолчанию. Он сам, на этапе сборки, расставляет мемоизацию где надо. Производные значения, колбэки, отфильтрованные массивы — короче, всё то, что мы руками оборачивали. И дело не в том, что useMemo куда-то делся. Он на месте. Пропало умение. Ну вот это: смотришь на компонент и видишь, где на каждый рендер создаётся новая ссылка, из-за которой зря перерисовывается пол-дерева. Это же было натуральное ремесло. На ревью сразу видно, кто умеет, а кто нет. На собесах на мидла спрашивали железно. А теперь это делает компилятор. Причём аккуратнее, чем я в четверг вечером. Руками осталось в паре мест. Если внешняя библиотека завязана на то, что ссылка на функцию не меняется. И внутри try/catch — его компилятор просто пропускает. Ну и всё, собственно.
Второе — сборка
Rolldown вышел стабильным в мае. Vite 8 на нём выкинул сразу и esbuild, и Rollup, а трансформации отдал Oxc вместо Babel. У Linear сборка после этого упала с 46 секунд до 6 — по крайней мере, так говорит сама команда Vite. Вот тут мне было обиднее, если честно. Я реально потратил годы на webpack.config.js. В каком порядке ставить лоадеры, почему один плагин ломает второй, почему сборка идёт четыре минуты и что с этим делать. Знание было редкое — не потому что сложное, а потому что скучное, туда просто никто не хотел лезть. Сейчас оно не стоит ничего. И не потому что кто-то написал конфиг лучше моего. А потому что конфига больше нет. Но кое-что осталось Момент, который для меня главный: компилятор оптимизирует то, что ты написал. Он не решает за тебя, чего писать не надо. Был случай. Открыл вкладку Network просто посмотреть — а бандл весит 14,7 МБ. Джаваскрипта. Не картинок. И отдавали мы его пользователям, у которых интернет совсем не такой, как у нас в офисе. Самое смешное, что виноватых нет. Никто не накосячил. Просто два года все делали абсолютно нормальные вещи. Подключили библиотеку графиков. Потом иконки, пачкой. Потом ещё компонент ради одной кнопки. Локально-то у всех летает, кто это заметит. Никакой компилятор бы тут не помог. И Rust бы не помог. Помогло полчаса с bundle analyzer и тупой вопрос: а пользователю это вообще надо? Разрезал по роутам, тяжёлое унёс в ленивую загрузку, лишнее выкинул. Стало 1,9. Задачи такой, кстати, ни в одном спринте не было. Просто увидел цифру и не смог развидеть. И вот это, по-моему, единственное, чего инструменты у нас пока не забрали. Понять, кто там на другом конце, с каким телефоном и каким интернетом, и решить, что ему вообще стоит отдавать.
Ну и про собесы
Про useMemo спрашивать не перестанут ещё года три. Списки вопросов копируют друг у друга, они живут своей отдельной жизнью. Но смысл у вопроса поменялся. Раньше он проверял, знаешь ли ты React. Сейчас скорее показывает, когда собеседующий последний раз открывал ченджлог. Поэтому если спросят, я бы не про массив зависимостей отвечал. А про то, что с React Compiler это делается само, а вот тут и тут всё ещё руками, и почему.
А вас про что на последних собесах спрашивали? Реально интересно, попадался кто-нибудь, кого уже про компилятор гоняли?
Ну а если вы все это уже знали, но все равно прочитали весь пост, то вот вам интересный факт, чтоб не зря потратили время : у бобров есть дополнительные прозрачные веки, которые работают как очки для плавания.