Как новинки веба доходят до работы
В конце 2023 года мы спорили, произошло ли в CSS что-нибудь по-настоящему заметное. Юля Миоцен говорила, что после нескольких насыщенных лет новые возможности уже не так сильно меняют её работу. Я возражал: изменений много, просто мы начинаем пользоваться ими не сразу.
Этот спор проходил через весь итоговый выпуск «Веб-стандартов». Вместе с Юлей, Вадимом Макеевым, Никитой Дубко и Андреем Мелиховым мы возвращались к одному вопросу: что должно произойти между новостью о технологии и её применением в проекте?
Что означает «современный CSS»
В 2023 году снова заговорили о названиях CSS4, CSS5 и следующих версиях. Меня эта идея порадовала. Словами «современный CSS» мы пользуемся давно, а представление о том, что за ними стоит, у каждого своё.
Для одного разработчика это гриды, которые он недавно освоил. Другой уже работает с каскадными слоями и выражениями от контейнера. Оба говорят, что знают современный CSS, но имеют в виду разные наборы возможностей. Каждый раз перечислять модули и уточнять, какой именно опыт стоит за словами, неудобно.
Никита возразил, что знание условного CSS5 не показывает, умеет ли человек решать задачи. Согласен. Я и не предлагал превращать номер в оценку специалиста. Общие названия помогли бы точнее разговаривать о технологиях: на собеседовании, при обсуждении обучения или внутри команды.
Вадим уточнил, что речь пока шла о предложении, а не об уже принятых версиях языка. Модули CSS продолжали развиваться отдельно, каждый со своим уровнем. Мне хотелось, чтобы в этом было проще разобраться тем, кто пишет CSS каждый день.
Узнать, что уже можно применять
Другим таким ориентиром стал Baseline. Вадим рассказывал, как в течение 2023 года менялись его критерии и представление на MDN. Он должен был показывать, поддерживают ли основные браузеры нужную возможность, чтобы разработчик не проверял каждый из них отдельно.
Мне хотелось пойти дальше страницы со статусом. Обычно мы узнаём, что технология появилась в очередном браузере, а потом должны сами помнить, где она ещё не работала и достаточно ли теперь поддержки. Я бы хотел подписаться на изменения: вышла новая версия браузера, и стало видно, какие возможности наконец можно рассматривать для своих проектов.
Это меняет и разговор с дизайнером. Если разработчик вовремя узнал, что прежнее ограничение исчезло, он может предложить решение, которое раньше приходилось откладывать.
Никита снова напомнил о проектах с пользователями старых браузеров. Я предложил выбирать версии браузеров под свой проект и видеть поддержку в них. Вадим возразил: смысл Baseline именно в общей договорённости. Для индивидуальных условий можно использовать открытые данные и сделать отдельный инструмент, но общий ориентир от этого не должен менять значение.
Мне самому подходили общие условия Baseline. Я искал способ так же упростить работу разработчику с другой аудиторией.
Что происходит с долгами Interop
Interop мне нравился тем, что браузеры договаривались о совместной работе над конкретными возможностями. Вместо бесконечных разговоров о несовместимости появлялись проверяемые цели и тесты. В 2023 году список таких задач стал шире, и результаты были заметны.
Но, подводя итоги, я хотел посмотреть и на прошлые обязательства. Что случилось с возможностями, которые не удалось довести до конца годом раньше?
Никита и Вадим поправили моё первоначальное впечатление: незавершённые задачи не исчезали, их переносили дальше, и работа продолжалась. Никита объяснил, что последние проценты могут приходиться на сложные особенности движков. По одной итоговой цифре нельзя заключить, что над возможностью никто не работал.
Вадим предложил сравнить положение дел с тем, что было до Interop: браузерная совместимость уже значительно улучшилась. Я соглашался, но хотел обратить внимание и на незавершённую работу. Мы все встречали планы, в которых старые задачи годами уступают место новым.
Не каждую возможность нужно использовать
Разговор о вложенности в CSS получился особенно показательным. Никита попробовал её и остался недоволен: синтаксис менялся, инструменты ещё не везде справлялись, а в его проектах новый код всё равно приходилось преобразовывать для старых браузеров. Вадим тоже потратил время на эксперимент в своём блоге, но ожидаемого удовольствия от работы не получил.
Мне казалось, что выводы слишком ранние. Когда в браузерах появились пользовательские свойства CSS, мы тоже не переписали на них все проекты в день релиза. Нужно время на поддержку, инструменты и собственную практику. В конце 2023 года я ожидал, что вложенностью начнут пользоваться шире через несколько лет.
Это не означало, что Никита обязан её полюбить. CSS уже достаточно велик, чтобы выбирать подходящие возможности и обходиться без остальных.
С Юлей мы спорили о масштабе перемен. Ей не хватало изменений, сравнимых с появлением гридов: тех, которые непосредственно влияли на её ежедневную работу. Я перечислял новые направления и не понимал, почему отдельное решение проблемы разработчика должно считаться недостаточно значительным. Ведь и до гридов можно было сделать хороший сайт — только сетку приходилось собирать другими средствами.
Вадим помог точнее назвать разногласие. Юля говорила о впечатлении от своей работы, а я отвечал перечнем возможностей платформы. Технология может быть интересной и при этом пока ничего не менять в конкретном проекте. Особенно когда поддержка ещё ограничена или для применения нужно пересмотреть устройство стилей.
Элемент появился, а привычка осталась
После появления элемента <search> несколько недель выходили объяснения и обсуждения, потом разговор почти исчез. Меня беспокоило, как о нём узнает разработчик, который давно работает с привычным набором HTML и пропустил эту новость.
Вадим радовался, что HTML получил элемент со встроенной семантикой, полезной для доступности, и что браузеры его поддержали. Мне этого для распространения технологии было недостаточно. Можно добавить элемент в спецификацию, но для появления в повседневной работе его ещё нужно объяснить на прикладных задачах.
Разработчик должен вспомнить о нём, когда будет решать подходящую задачу. Одной волны новостей для этого мало. Мы уже видели, как долго новые элементы осваиваются и как их начинают использовать без понимания назначения.
Похожее раздражение у меня вызывал медленный переход на модули ECMAScript в Node.js. Мне хотелось больше разговаривать о том, чего не хватает для перехода и как устранить препятствия. Андрей напомнил, что обсуждения есть, но часто они начинаются с другого вопроса: зачем менять работавший способ подключения модулей?
Сборщик мог скрыть несовместимость зависимостей, а при запуске того же пакета непосредственно в Node.js она обнаруживалась. Тогда приходилось разбирать всю цепочку. Я согласился: прежде чем предлагать переход, стоит разобраться, как пройти его в таком проекте.
За списком требований есть работа
К концу 2023 года мне снова приходилось много заниматься трудностями начинающих разработчиков. Мы с Олегом Моховым говорили об отношении к новичкам ещё в докладе «Старикам тут не место?». Мне казалось, что помогать новичкам мы стали охотнее. Через несколько лет у нового поколения возникли свои препятствия при поиске первой работы.
На этом фоне я задумал «Фронтенд-инженерию». У HTML Academy уже были выпускники, которые стали тимлидами и техническими директорами. Хотелось подробно расспросить их о проектах: чем занимаются разработчики, какие задачи получают и как это соотносится с требованиями в вакансиях.
За одинаковым названием профессии в разных компаниях может стоять совсем разная работа. А список технологий в вакансии не всегда помогает её представить. Мне хотелось поставить рядом этот список и реальные задачи, задать вопросы о расхождениях и показать, что именно предстоит делать человеку, который придёт в команду.