Моника Киндернаёва

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

Вам понравится реактивность, если вам нравится функциональное программирование, javascript, интерфейс, шампанское и пиво!

Более того, конференция - прекрасное место, где можно почитать и изучить новые идеи. Кроме того, Братислава - красивый город с замком, рекой и очаровательным центром города.

Если вас интересует больше, вы можете выбрать то, что хотите прочитать:

Структура конференции

Конференция началась с шампанского и словацких пирожных, что заставило меня с нетерпением ждать этого момента. Конференция длилась три дня, первые два дня состояли из лекций, а последний был днем ​​семинара.

Помимо докладчиков со всего мира, он стал отличным форумом для общения и встреч с докладчиками и участниками в неформальной обстановке. Организаторы подготовили словацкую дегустацию в первый вечер, где мы попробовали словацкие фирменные блюда, а затем у нас были вечеринки после вечеринок в следующие два вечера.

Конференция состояла из двух этапов - основного и открытия. Основная сцена была посвящена переговорам и открытию для AMA. Чтобы лучше организовать время и приоритетность вопросов, люди могли задавать вопросы в Интернете и голосовать за них. Вопросы обсуждались либо в конце беседы, либо на этапе открытия.

Мне лично нравится AMA, так как я могу видеть вопросы, о которых никогда раньше не задумывался, и я нашел их очень полезными. Кроме того, у этих сессий были более длинные выделенные временные интервалы.

Любимые беседы

Игорь Минар - Тряска дерева и устранение мертвого кода

@Igorminar, инженер-программист в Google, руководитель проекта Angular

О чем это было?

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

В качестве одного из самых надежных атрибутов производительности он измерил критические пути рендеринга и TTI (время взаимодействия). Он создал простое приложение на vanilla js + RxJS + Webpack, в котором объяснил все мелкие шаги, которые помогают повысить производительность сайта. Он начал объяснять проблему тряски дерева, когда люди часто считают, что это должно напрямую улучшить размер нашего пакета. Проблема с встряхиванием дерева (он использовал Webpack 3) заключается в том, что он часто включает лишние вещи, например, если мы включаем модуль, в котором мы используем одну функцию, и если он состоит из 20 функций, тогда он включает все 20 функций. Вот почему у нас есть еще один шаг, на котором мы используем uglify, который отвечает за удаление мертвого кода.

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

Если вы хотите узнать больше об улучшениях, то здесь - видео из выступления.

Мои основные выводы

  • Обдумывать каждый шаг при создании пакета и расставлять приоритеты в производительности пользователей.
  • Если мы используем babel-loader Webpack, он снизит уровень импорта EM в CommonJS, который можно изменить в предустановках или включить конкатенацию (удаляет служебные данные модуля и улучшает устранение мертвого кода), который должен быть явно настроен в Webpack.
  • Лучше использовать модули ES, чем Common JS, поскольку он имеет такие преимущества, как удаление неиспользуемых импортов, объединение модулей и разделение кода.
  • Оптимизация сети через HTTP / 2 push

Tiago forte - революция в производительности React

@Fortelabs, основатель Forte Labs

О чем это было?

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

Он объяснил, почему тяжело справиться с тяжелой работой (когда люди берутся за большие дела и концентрируются только на ней) сложно. Он предложил разделить задачу на более мелкие части одинакового размера. Это связано с тем, что инженеры-программисты хотят избежать одновременной работы с большими модулями и хотят разбить их на более мелкие модули.

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

Далее он рассказал о 5 уловках, с помощью которых мы можем каждый день оказывать большее влияние:

  1. Определите и соберите свой рабочий контент
  2. Разбейте это содержимое на небольшие пакеты с чистыми краями.
  3. Примечания к дизайну для удобного поиска и извлечения
  4. Организуйте эти пакеты по проектам и темам
  5. Практикуйтесь в сочинении вещей

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

Мой главный вывод

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

Ричард Фельман - CSS как байт-код

@Rtfeldman, инженер-программист в Noredink

О чем это было?

Стилизация веб-страницы иногда может быть кошмаром. Ричард говорил об этом и о новом подходе в своей презентации.

Он начал с простого элемента, масштабируемого по горизонтали и централизованно, и спросил, сколько людей смогут написать для него css, не заглядывая в Интернет прямо сейчас, поскольку мы ожидаем, что это очень легко сделать. Однако CSS никогда не бывает простым.

Он рассказал об истории стилизации (CSS и другие языки) и о том, как это началось. Идея заключалась в том, чтобы спроектировать его для конечных пользователей, чтобы стилизовать контент, который люди читают. Однако в наши дни он используется для создания пользовательских интерфейсов. Вот интересная статья по теме - Языки, которые были почти css, о которой он упомянул.

Основная часть была посвящена элементам стиля. Это библиотека, написанная на Elm и компилируемая в JS, CSS и DOM. Мы можем представить это так же, как у нас есть языки, которые компилируются в JS, но нам не нужно знать JS, например Вяз или ClosureScript. Почему у нас не может быть библиотека, которая компилируется в CSS, но не требует специальных знаний CSS. Идея состоит в том, чтобы создавать пользовательские интерфейсы и забыть о CSS. Новый старт. Вот правила, которым они стараются следовать:

  • создавать поддерживаемые пользовательские интерфейсы
  • долгосрочная кроссплатформенная поддержка
  • иметь одну таблицу совместимости

Он также показывает пример, как это работает, и код для этого. Так что если вам интересна эта концепция, посмотрите презентацию здесь.

Мои основные выводы

  • Нам нужно смотреть на вещи по-разному. Мы всегда должны пытаться найти какие-то более эффективные решения для вещей, которые уже существуют, и они нас не устраивают. Тогда таким образом мы сможем двигаться дальше.
  • «Если он компилируется, он работает»

Джаред Форсайт - Reason, приправленный Javascript Академия OCaml Khan

@Jaredforsyth, инженер-программист Khan Academy

О чем это было?

Джаред говорил о Reason, функциональном языке программирования, который использует экосистемы JavaScript и OCaml.

Он задал Reason вопросом: хотите ли вы использовать мощный хорошо типизированный язык на работе, а не только в свободное время? Что, к сожалению, верно для JS.

В своем выступлении он затронул вопросы внедрения (легко начать) и обслуживания (легко продолжать) и сравнил их с существующими возможностями.

Он указал, что основная проблема с JS после простой адаптации - это трудно поддерживать, что улучшает Reason.

Используя его в существующем проекте, Reason предлагает такие преимущества, как взаимодействие с Javascript.

Если вам интересно узнать больше о функциях, которые предлагает этот язык, посмотрите видео здесь.

Мои основные выводы

  • Преимущества Reason - это система типов, неизменяемость, многоплатформенность и оптимизированный вывод.
  • Мне понравилось преимущество в производительности и возможность компилировать на родной язык, помимо того, что это функциональный язык. Для компиляции он использует BuckleScript, который является бэкендом для компилятора OCaml, который генерирует JavaScript.

Дэвид Нолен - Datomic

@Swannodette, инженер-программист Cognitect

О чем это было?

Дэвид говорил о проблемах с современной разработкой программного обеспечения. Он упомянул интересную статью Out of the Tar Pit, в которой их анализирует. Эта статья была написана 11 лет назад и в ней также рассказывается о функциональном реляционном программировании. Авторы говорили о проблемах современного программного обеспечения, например, о неуправляемом состоянии. Если бы они могли выбирать между тестами и простотой, они бы выбрали простоту, потому что она всегда окупается.

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

Со всеми этими примерами он сделал введение в систему функциональных отношений, которую они выстраивают в Cognitec. Они используют сценарий Closure на бэкэнде и во внешнем интерфейсе, а их база данных - Datomic. Это в основном похоже на сокращение в облаке. Он также неизменен и поддерживает путешествия во времени. Он использует ClojureScript в качестве клиента, но также доступен в качестве клиента в Javacsript.

Датомические свойства:

  • Кислотный, Относительный
  • Неизменный
  • Запросы и правила журнала данных

Если вы хотите узнать больше и увидеть несколько примеров, посмотрите это видео здесь.

Мои основные выводы

  • Простота всегда окупается
  • Чтобы научиться программировать, нужно хорошо представлять себе, что эти вещи значат в нашей голове.

Ури Гольдштейн - Подписки GraphQl

@Urigoldshtein, разработчик ПО с открытым кодом в команде Apollo

О чем это было?

GraphQl - это язык запросов, на котором вы можете описывать данные, спрашивать, что вы хотите, и получать предсказуемые результаты.

Ури рассказал о проблемах с приложениями реального времени и объяснил, почему хорошо использовать подписки GraphQl, основанные на модели публикации-подписки. Поток подписок:

  • сервер описывает события
  • Клиент данных подписывается на события и запрашивает именно те данные, которые ему нужны
  • запросить любой источник событий и источник данных

Если вы хотите узнать больше о подписках и примерах их использования, а также о проблемах с двунаправленными данными в реальном времени, вот видео.

Мой главный вывод

  • Если у вас нет реактивного бэкенда и вы хотите дать клиенту больше возможностей запрашивать именно те данные, которые ему нужны, подписки GraphQl кажутся хорошим вариантом.

Ширли Сюэян Ву - D3 и совместная реакция

@Sxywu, Фрилансер

О чем это было?

Во-первых, у нее были действительно классные визуализации, где она показывала, кому нужен контроль над DOM, когда d3 и реакция вместе.

D3 достаточно, если нам нужно использовать наведение, щелчок и другие простые взаимодействия. Но если мы хотим разбить визуализации на компоненты или управлять состояниями при взаимодействии пользователя, неплохо было бы объединить это с React.

Если вы хотите узнать больше и увидеть крутые визуализации, посмотрите это видео здесь.

Мои основные выводы

D3 нужен DOM для

  • переходы
  • топоры
  • кисти

D3 не нуждается в DOM для

  • макеты
  • гео
  • форма

Рабочий день

Последний день конференции был посвящен мастер-классам. Мы могли выбирать из множества возможностей.

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

Reason уже сейчас составляет более 25% интерфейса Facebook messenger.com.

Семинар вели Шон Гроув, Джаред Форсайт и Дэниел Вулфель. Ребята нам очень помогли и постарались объяснить все наши вопросы.

Сначала у нас была презентация о языке, а затем мы поиграли в онлайн-редакторе, чтобы привыкнуть к синтаксису и особенностям языка.

Следующая часть была посвящена Reason with React, где мы пытались адаптировать, как писать компоненты React с помощью Reason.

Git: https://github.com/sgrove/reactiveconf-2017-reasonml-workshop

Лично мне язык понравился. Мне наверняка кажется, что время адаптации больше, но я ценю все функции, которые он предлагает, например: безопасность типов, поддержку JS и собственной платформы, а также функции языка функционального программирования, такие как неизменность.

Последние мысли

Одна вещь нашла отклик у меня на АМА с Игорем. Кто-то спросил, как стать хорошим программистом на Angular. Он ответил, что не важно быть хорошим разработчиком Angular, но важно понимать потребности пользователей, а затем найти правильную технологию, которая выполняет эту работу. Итак, давайте изучим, какие возможности существуют вокруг нас, поиграем с ними и сделаем наших пользователей довольными тем опытом, который они получают :).

Ресурсы

Основной этап

  1. Разговоры с первого дня: https://www.youtube.com/watch?v=X9iqnovPGyY
  2. Разговоры второго дня: https://www.youtube.com/watch?v=62xd25kEZ3o

Стадия открытия

Панельная дискуссия« Стиль в CSS »
AMA Gavin Doughtie
AMA Tiago Forte
AMA David Nolen
AMA Richard Feldman
AMA Джаред Форсайт
AMA Игорь Минар
AMA Evan You
Олег Слободской
Хави Веласко
Джерард Санс
Шмуэла Джейкобс
Шон Ларкин
Webpack - Шон Ларкин и Тобиас Копперс

ПОСМОТРЕТЬ мир вместе с нами

Многие из наших сотрудников имели возможность воспользоваться нашим опытом работы с сотрудниками Skyscanner (SEE) - самофинансируемой, самоорганизующейся программой, позволяющей работать до 30 дней в течение 24 месяцев в некоторых из наших 10 глобальных офисов. Существует также возможность работать в течение 15 дней в году из своей страны, если сотрудник находится в офисе за пределами страны, которую он называет своим домом.

Нравится, как это звучит? Взгляните на наши текущие должности в Skyscanner Product Engineering.

Об авторе

Меня зовут Моника Киндернайова, инженер-программист, работающая в компании Direct Booking Experience Tribe в Эдинбурге. Вне работы я люблю путешествовать, и в этом году я провел 6 недель по Южной Америке.

Вы можете найти меня в Twitter и LinkedIn.