HolyJS 2018 в Москве

24–25 ноября 2018 года в Москве прошла очень крутая конференция JavaScript-разработчиков HolyJS, на которой побывали наши ребята Владимир Марков, Евгений Лукашкин и Александр Степовиков. Более 600 JS-специалистов собрались под крышей конгресс-парк гостиницы «Рэдиссон Ройал Москва», чтобы послушать около трех десятков докладов о фронтенде и не только, обсудить новости постоянно развивающейся экосистемы, актуальные инструменты, фреймворки, паттерны, etc. с ведущими  экспертами в данной области. Не остались без внимания и бэкенд и десктоп. По причине своей многочисленности все доклады на конференции были разделены на три параллельных потока. Среди направлений — введение в технологию; для практикующих инженеров; хардкор. Настоящим гвоздем программы в первый день должно было стать выступление Научно-Технического Рэпа — единственной группы в России, играющей нердкор, или интеллектуальный хип-хоп и воспевающей реалии жизни IT-специалистов, биографии знаменитых ученых и популярные теоремы. Под занавес — три параллельных BoF-сессии по актуальных вопросам — State on client side (EN); What about Node.js? (EN); Инструменты разработчика (RU).;

Но обо всем по порядку. И чтобы полностью представить себе весь размах мероприятия, узнать побольше об инсайтах, впечатлениях и просветлениях наших ребят, последуем за нашим рассказчиком и непосредственным участником мероприятия Владимиром Марковым:

1 ДЗЭН

Конференция проходила в самом центре города, напротив Дома Правительства Российской Федерации. Мы по возможности старались охватить все события, но это было непросто, учитывая наш напряженный график. Для меня это был первый опыт участия в подобном мероприятии. Очень хотелось там побывать, посмотреть, как проходят подобного рода ивенты, послушать умных людей. Не могу сказать, что я лично ехал ради какого-то конкретного спикера, думаю, что у ребят, в принципе, те же ощущения. Была пара целевых докладов, которые мне было интересно послушать. В основном ориентировался на категорию «для практикующих». Было также пару «введений в технологию» и «хардкоров».

Прямо с вокзала утром, не заселяясь в гостиницу, мы примчались на конференцию и успели как раз к первому, общему, выступлению в 10.30 Мишеля Вестстрата из Mendix. Доклад был очень занятным, спикер рассматривал много интересных концепций, в частности такую штуку, как MobX — альтернативу для react разработчика. Есть такая библиотека Redux для управления глобальным состоянием приложения. А MobX — альтернатива. Он рассказывал, как она работает под капотом, в чем ее преимущества перед Redux. Конечно, он был максимально тактичным и в лоб не говорил, что вот, мол, моя библиотека лучше. Он говорил, что это новый взгляд на управление состоянием — и это было достаточно интересно.

Далее в 12.00 я решил посетить выступление Камиля Мысливца «Revealing framework fundamentals: NestJS behind the curtain». Конечно, доклад был более актуальным для бэкенд разработчиков, а я фронтенд. Но учитывая мои планы впоследствии сместиться в сторону бэкенда, может, даже в сторону full-stack разработчика, это выступление было интересным и для меня.

В 14.00 я слушал Стаса  Курилова о глубоком погружении в webpack. Хороший доклад и также интересная для нас как практикующих фронтенд разработчиков тема. Было интересно углубиться в webpack — как средство собирать воедино все зависимости, которые есть в приложении, все модули — и с ними работать. Это неотъемлемая часть работы фронтенд разработчика. Также докладчик приводил в пример свой кейс, с которым он столкнулся, рассказал, как он решал проблемы, показал много технических моментов.

16.00 — время Павла Черторогова и его доклада “Строим GraphQL-сервер”
GraphQL — это специальная библиотека, которая помогает взаимодействовать бэкенд и фронтенд разработчикам. То есть стандартный механизм общения на основе Ajax-запросов. В классической схеме это работает так: фронтенд делает запрос бэкенду: «Пришли мне информацию о человеке». У бэкенда прописано, что на такой запрос ему нужно прислать следующую информацию: имя, пол, возраст, место учебы, работы, дата смерти и т.п. Фишка GraphQL в том, что ты не просто отправляешь запрос «Пришли мне информацию о человеке», а моделируешь изначально уже на фронтенде вариант ответа, который ты хочешь получить. И бэкенд учитывает эти особенности. То есть ты пишешь: «Пришли мне информацию о человеке» и указываешь, допустим, что тебя интересует только пол. На такой запрос бэкенд может, в принципе, даже всю информацию прислать, но по факту ты получишь только одно поле «пол». Так легче контролировать данные, с которыми ты работаешь, и это сильно упрощает жизнь. Вот это был интересный опыт.

С 14 до 16 был еще один немаловажный момент конференции — обед. Кормили довольно неплохо, сытно и вкусно, а что еще нужно разработчику.

На выступление в 17.30 я, к сожалению, не попал по причине заселения в отель. Но успел на обсуждение после доклада, и, судя по услышанному, я немного потерял, ведь именно в дискуссионных зонах зачастую звучит все самое актуальное и интересное. Спикером был Теодор Вориллас, который рассказывал об accessibility. Это был доклад для начинающих. И возможно, если бы я попадал на само выступление, то эта тема не была бы для меня приоритетной. Но на обсуждение я попасть очень хотел по той причине, что я как веб-разработчик вижу, что маловато внимания уделяется именно accessibility. И мне кажется, что в современных веб-приложениях нужно идти в том числе и в эту сторону. Просто это огромный кусок работы, и часто в наших краях считают: нет, давайте сделаем хотя бы для людей, у которых нет проблем с восприятием информации, а потом уже по остаточному принципу будем думать о других. Это такой аутсорсинговый менталитет, когда хочешь сделать, сделать, сделать, выкинуть в продакшн, а потом уже, если будет желание, accessibility и все остальное добавить. В общем, такая опциональная вещь для большинства приложений, если не брать в расчет какие-то мега-приложения — большие, международные, где accessibility уже идет стандартом и выполнена на высоком уровне.

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

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

На этом мой первый, такой напряженный и насыщенный день закончился. Как я ни пытался этому противиться — утомительный переезд, обилие информации и усталость дали о себе знать — и я отправился в отель.

2 ДЗЭН

Начало второго дня не обошлось без небольшого происшествия. Я потерял пропуск. Выселяемся из гостиницы, а его нигде нет. Такое со мной очень редко случается. Но на стойке регистрации конференции мне быстро помогли, распечатали новый документ.

Второй день был полегче первого. Не было BoF-ов, а вот я, хорошенько выспавшись и отдохнув, как раз бы сходил на них с радостью.

В 10.30 я решил послушать Виктора  Грищенко о децентрализованном вебе. Доклад меня, скажем так, удивил. Даже странно, что ему дали категорию «для практикующих инженеров». Это было что-то вроде персонального взгляда в будущее, там даже были какие-то кейсы реальные, но в целом человек представил свое видение альтернативного интернета.

В 12.00 я решил копнуть поглубже и посетил выступление Лукаса да Коста «There is a bluebird in my talk that wants to get out», после которого у меня не осталось вопросов, почему докладу поставили «звездочку». Там поднимались многие высокоуровневые вопросы, связанные с высшей математикой: примеры различных функций, выражений, лямбда-исчислений и др.

В 14.00 Вячеслав Шебанов рассказал о системах типов «в двух словах». Правда, в двух словах у докладчика явно не получилось. Он говорил об истории систем типов, анализе текущего состояния языков, демонстрировал свой взгляд в будущее системы типов. Лямбда-исчисление Черча. Лямбда-куб. Линейные типы. Хадкор, в общем.

В 16.00 я посетил, как мне кажется, самую интересную лекцию — Эрика Расмуссена «Final Form: Form state management via Observers». Докладчик — человек, который написал react-form library. Это библиотека, которую ты подвязываешь к своему приложению. У тебя, допустим, есть очень много полей для ввода данных пользователей, допустим, анкетирование, а лучше личный кабинет пользователя. Многие поля там требуют максимально особого контроля: например, нельзя некоторые графы оставлять пустыми, в другие можно вводить только определенные символы и т. д. И всем этим делом достаточно сложно управлять. Хотя, конечно, можно, но я считаю, что это большое упущение не использовать библиотеку react-form. Можно справляться своими силами, но на фоне этой библиотеки это все выглядит как написание велосипеда. Я для себя сделал пометочки, потому что react-form library существует в нескольких вариациях, и я лично собираюсь ознакомиться с этой библиотекой намного ближе, чем было раньше. Я когда-то про нее слышал, но не придавал значения. Эрик Расмуссен продемонстрировал некоторые кейсы, показал, где это все может быть полезно, и я понял, что это очень круто. У меня до этого уже было пару проектов, где мне не хватало чего-то такого. Подключить эту библиотеку — и очень сильно облегчить себе жизнь. Это круто. Это желание любого разработчика. Да и сам спикер мне очень понравился.

В 17.00 спикер Ари Лернер вводил нас в технологию Flutter.io. Для меня она нова. Сегодня набирает популярность концепция написания одного приложения, которое будет работать на мобильных телефонах под разными платформами. Сейчас в большинстве случаев делают так: тебе нужен один разработчик, например, под iOS и один разработчик, скажем, под android. В большинстве случаев все-таки это два разных человека, потому что достаточно большой объем информации нужно знать. Соответственно, траты возрастают пропорционально количеству человек на проекте, и такие проблемы решает наличие таких библиотек, как Flutter.io. Либо популярный на данный момент ее аналог React Native. Не то чтобы аналог, это просто альтернатива, которая появилась раньше, хорошо зарекомендовала себя на рынке, и большинство разработчиков, которые ввязываются в разработку таких кросс-платформенных приложений, как правило, используют React Native. Но  Flutter.io вроде как тоже пытается набирать популярность, но с ним все не так однозначно, поэтому мне было интересно послушать, что скажет докладчик. Если честно я ожидал, что я приду — и человек скажет: «Вот Flutter.io, вот React Native, давайте их сравним». Наверное, это мои проблемы, потому что этого не было даже в программе заявлено. Но я ожидал чего-то подобного, потому что две технологии находятся очень близко и все понимают, что они конкуренты. Но спикер больше рассказывал о Flutter.io, о языке Dart. В итоге меня не особо убедили, и я очень вряд ли буду развиваться в сторону Flutter.

Наконец, последний прослушанный мной доклад в 19.00 — «Маленький Data Science для большого фронтенда» от Романа Дворнова. И снова вектор моих ожиданий и содержание доклада немного не совпали. Тут такая тема — Data Science, которая сейчас на подъеме в IT, ее даже выделили в отдельную область. Эти яйцеголовые ребята из гугла, которые сидят днем и ночью и что-то там вычисляют. Мне было так интересно, как это можно встроить во фронтенд. А по факту нам больше показали, где мы можем видеть Data Science во фронтенде. Например, вот, у нас размер нашего финального файла. Приложение — это же постоянно несколько модулей, если это более-менее крупное приложение. Эти несколько модулей потом вебпаком, про который я говорил раньше, сжимаются в один здоровенный файл — и эта штука называется бандл. И получается мы как фронтенд разработчики можем анализировать размер этого финального файла — бандла — и тем самым работать над оптимизацией процессов. И… я ожидал другого. Что-то крутое, что мы может встроить во фронтенд, может даже построить прикольные графики, основываясь на огромных, невероятных массивах данных, подключить дополнительную библиотеку, как-то это проанализировать. А все было немного попроще, приземленно, но все-таки практически применимо. Еще интересный момент — спикер прямо на конференции представил свою библиотеку, над которой он работал много месяцев, и прямо при нас загрузил ее на GitHub. Было очень приятно, что он решил разделить это событие с нами. У него даже руки дрожали. Поразительный момент. Вот адрес этой разработки:

В целом конференция для меня была мега продуктивная. Я для себя вынес очень много полезного материала. Глупо ожидать, что человек, будучи ограничен форматом часового выступления, сможет тебе объяснить всю суть какой-нибудь вопроса. Поэтому мы приходили, слушали, записывали — и я приехал из Москвы с таким вот небольшим списочком технологий, на которые мне стоит обратить внимание, потому что я вижу, что это интересно людям, разработчикам, большинство вещей и сейчас уже в тренде, некоторые же тенденции сегодня едва различимы, но складывается ощущение, что за ними хорошее будущее.

Еще один наш коллега, посетивший HolyJS, Евгений Лукашкин соглашается, что конференция была супер информативная и, в свою очередь, отмечает также огромное количество интересных задач от спонсоров, решений которых в персональной копилке Евгения немало — около 50. Хитроумные вопросы для участников звучали повсюду: со сцены во время докладов, в дискуссионных зонах и просто в холле, не обязательно на знание технологий или высшей математики, но и на простую логику. За правильное решение были небольшие призы.

Примеры простых задач: сколько чисел от 1 до 1000 имеют в себе цифру три; или рыбак купил удочку, длинной в 5 м, его не пустили в автобус, так как туда нельзя предметы длиннее 4 метров, как рыбаку официально пронести удочку в автобус? Но чтобы получить приз, таких задач нужно было решить несколько.

А вот трофей Евгения за вопрос «со звёздочкой»:

Впечатлил также нашего коллегу и стенд от Иннополиса: «там было все лайтовое, милые девушки, теплые призы и вот такие задачи, без всякого кода».

В общем, это была действительно впечатляющая конференция, из которой каждый вынес много полезной информации и целый багаж впечатлений (а Евгений еще и призов). Спасибо организаторам за теплый прием, спикерам за гипер полезные доклады, а ITSM — за возможность посещать подобные мероприятия и развиваться. Хотим еще :)

PS: СПОЙЛЕР-ответ на задачки Евгения: 271 и удочку вложить в коробку 4 на 3 по диагонали.