Никакой магии в большом проекте
Недавно снова посмотрел на styled-components. Вот критический CSS вычисляется автоматически, а вот больше никакого пересечения классов, потому что названия классов генерируется автоматически.
Магия — это круто. Сделал мало работы и быстро получил результат. Идеально для стартапа, где нужно как можно быстрее показать фичу. Идеально для своего сайта и пет-проджекта. Но нет ничего хуже, чем затаскивать магию в крупный проект.
В Яндексе я работал с React Native. Все было хорошо, пока не прилетел баг, что на андроиде определенной версии не работала загрузка фоток.
Иду смотреть на код загрузки, а там магический компонент от React Native. Что он делает внутри, я хз. Как это работает в андроиде — хз. Иду гуглить и надееюсь, что там есть ответ. Ответа нет — бегу к мобильным разработчикам, а они хз, как работает React Native, ведь там внутри магия. Я разбираюсь с этой магией, а пользователь все ждет.
Тогда я взял за правило — если ты в деталях не знаешь, как работает инструмент, не тащи его в большой продукт.
Чтобы понимать инструмент, нужно знать базу, на которой все держится. Во фронтенде — это HTML, CSS и чистый JavaScript. А потом уже все остальное.
Магические библиотеки для типичных задач. Крупный продукт — это всегда что-то нетипичное и свое.
Тем не менее, у крупных компаний всегда есть ответвления — маленькие продуктики, которые не так часто изменяются. Сайт с вакансиями, промо-страница, информационный сайт, внутренняя админка. Вот туда спокойно можно затаскивать, что угодно.
Магия — даем результат быстро. Но все может рухнуть при любом нетипичном дуновении. База — даем результат дольше, но мы всегда готовы к любому шторму.