Smashing Podcast Episode 18 With Mina Markham: Как я могу научиться реагировать?

Опубликовано: 2022-03-10
Краткое резюме ↬ В этом выпуске Smashing Podcast мы говорим об изучении React. Каково работать с React и с чего начать работу опытным разработчикам? Дрю Маклеллан беседует с Миной Маркхэм, чтобы выяснить это.

В этом выпуске Smashing Podcast мы говорим об изучении React. Каково работать с React и с чего начать работу опытным разработчикам? Я поговорил с Миной Маркхэм, чтобы узнать.

Показать примечания

  • Мина Маркхэм в Твиттере
  • персональный сайт Мины

Еженедельное обновление

  • От статических сайтов к приложениям JAMstack для конечных пользователей с помощью FaunaDB, Брайан Робинсон
  • Ваш сайт вызывает стресс у посетителей? Сюзанна Скакка
  • Mirage JS Deep Dive: Understanding Timing, Response And Passthrough (Part 3) Кельвин Омерешон
  • Создание веб-приложения для распознавания лиц с помощью React, автор Adeneye David Abiodun
  • Интернационализация в Vue с помощью плагина Vue I18n от Timi Omoyeni

Стенограмма

Фото Мины Маркхэм Дрю Маклеллан: Она фронтенд-архитектор, спикер и организатор конференций, а также любитель дизайн-систем. Ее работа над патентной библиотекой брючных костюмов для президентской кампании Хиллари Клинтон «Хиллари за Америку» ознаменовала собой водораздел для систем проектирования в отрасли и была представлена ​​​​в таких публикациях, как Wired, Fast Company и Communication Arts. Как и многие из нас, она зарабатывает на жизнь написанием кода, в настоящее время занимая должность старшего инженера в Slack. Итак, мы знаем, что она талантливый и дальновидный разработчик, но знаете ли вы, что однажды ее приняли за Патрика Суэйзи? Мои потрясающие друзья, пожалуйста, поприветствуйте Мину Маркхэм. Привет Мина. Как твои дела?

Мина Маркхэм: Я разбиваю.

Дрю: Рад слышать. Теперь иногда в Smashing Podcast мы говорим с людьми на тему, которой они больше всего известны. А иногда забавно просто поговорить о чем-то немного второстепенном. Теперь я мог бы болтать с вами весь день о библиотеках шаблонов, системах дизайна, об удивительной работе, которую вы проделали в этой конкретной области, и я мог бы говорить с вами о предметах, о которых вы, возможно, говорили, о событиях, таких как событие Помимо таких вещей, как художественное руководство. И мы, очевидно, могли бы говорить о CSS, пока коровы не вернутся домой. Но вы написали твит несколько дней назад, и я понял, что на самом деле мы оба в одной лодке в том, что мы оба опытные фронтенд-инженеры, и мы оба недавно начали работать с React. Итак, прежде чем мы перейдем к самому React, к чему вы пришли? Работали ли вы с другими библиотеками и фреймворками для разработки JavaScript?

Мина: Нет, на самом деле я какое-то время занимался в основном ванильным JavaScript. А до этого, конечно же, я увлекся JavaScript. Позвольте мне перефразировать это. Я начал работать с Java-скриптами, используя jQuery, потому что это было наиболее целесообразно для меня. Это было то, что мне было очень легко разобрать, чтобы понять, что происходит. А затем оттуда я вернулся к простому ванильному, простому JavaScript, ESX, и я действительно не слишком увлекался войнами фреймворков. У меня не было, как и не было фаворита. У меня не было собаки в драке. Я такой: «Для тебя, React, что угодно. Мне все равно». Но времена меняются.

Дрю: И таким способом работы с ванильным JavaScript, потому что я тоже много чего делал сам. Я работал с различными фреймворками. В свое время я много работал с jQuery. Я работал с YUI, библиотекой пользовательского интерфейса Yahoo. Вы чувствовали многие болевые точки, которые пытается решить что-то вроде архитектуры React?

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

Дрю: Вообще говоря, каков характер ваших проектов с React?

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

Дрю: Конечно.

Мина: Но по сути то, что я пытаюсь сделать, это использовать React для, это очень интерактивный продукт, в котором мне нужно, чтобы люди могли вводить и сохранять данные в определенном состоянии, а затем манипулировать ими и сгенерировать что-то еще с указанными данными. И это просто то, что на данный момент это не простая манипуляция с DOM. На самом деле это намного более сложное внешнее управление данными и управление состоянием указанных данных. Так что действительно не было другой альтернативы, кроме как использовать какую-то библиотеку, которая пытается решить эту проблему. Я знал, что не смогу обойтись простым JavaScript. Я думал обработать что-то на стороне сервера, но опять же, из-за очень интерактивного характера того, с чем я работаю, это должно быть в клиенте. Итак, мы уже используем React в Slack для других целей. И поэтому я подумал: «Хорошо, мы просто должны пойти дальше и принять то же самое, что и остальные материнские компании, и двигаться дальше».

Дрю: Одна из проблем, с которой я всегда сталкиваюсь, когда люди берут в руки React, — это разобраться с цепочкой инструментов, необходимой для того, чтобы все заработало, а Webpack — очевидный слон в комнате. Приходилось ли вам много настраивать цепочку инструментов или, как мне, если бы вы могли позволить себе роскошь, когда товарищи по команде делали это за вас?

Мина: О, мне нравится команда инфраструктуры в Slack the data. Команда фронтенд-инфраструктуры в Slack справилась со всем этим. Мне не нужно было об этом думать. Это было здорово. Потому что раньше я пытался изучить React. Обычно лучше всего я учусь, работая над вещами и внедряя их в жизнь. Еще в 2016 году мы использовали React для создания сайта hillaryclinton.com. Не то чтобы я никогда не работал с людьми, которые его используют. Просто моя работа никогда напрямую не требовала моего участия. Но эта кодовая база была очень сложной и очень изощренной, и происходило так много всего, что существовал такой барьер для входа, чтобы попытаться узнать что-нибудь там, если вы еще не знали, как работают React и Redux и все это, что я не сделал. Так что я не очень эффективно учился в той среде.

Мина: К счастью, здесь у меня есть люди, которым нравится убирать немного больше сложных деталей. Мне вообще не нужно беспокоиться о конфигурации Webpack. Это было установлено. Это было испытано и проверено и готово к работе. Я нахожусь в той же лодке, где мы также используем Redux в дополнение к React, что я не осознавал, что это две разные вещи. Я не знал, какая часть за что отвечает. Такое погружение в кодовую базу немного дезориентировало, потому что я не осознавал, что все это одно и то же. У меня были люди, которые были опытными разработчиками React, которые говорили мне: «О, мы также используем Redux, из-за чего вам немного сложнее понять, на что способен React all, если вы начинаете с нуля». И я так и не понял, что они имели в виду под этим, потому что я не знал, о чем они говорили.

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

Дрю: Да, я обнаружил в существующей кодовой базе то же самое, что и мой первый проект React, использующий Redux. И я думаю, что такова природа любой из этих технологий, когда они молоды, они очень быстро повторяются, и то, что в какой-то момент было лучшим, через 6 месяцев изменилось, и есть другой способ делать вещи. И когда у вас есть кодовая база, которая охватывает много лет, иногда вы можете использовать разные стили реализации. Не всегда синхронизируется. И, конечно же, если вы следуете учебнику или чему-то еще, вы читаете книги, используете ресурсы, они будут в самой современной версии того, как что-то делать. И это не обязательно соответствует тому, что вы видите, когда смотрите на существующий, зрелый продукт. Это то, с чем вы когда-либо сталкивались, или вам действительно удавалось поддерживать свою кодовую базу в актуальном состоянии?

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

Дрю: Очевидно, что одна из вещей, связанных с React, к которым приходят такие люди, как вы и я, это может показаться немного неприятным, как и вся эта история с JSX. Используете ли вы JSX в своем проекте?

Мина: Мы. Я использую JSX.

Дрю: Ты смирился с этим?

Мина: Каждый раз, когда я открываю один из этих файлов, я чувствую себя так, будто маленькая частичка меня умирает. Мне все еще кажется святотатством помещать мой HTML в файл JavaScript. Я знаю, что это революционно и в этом весь смысл, но мне просто не нравится, что я пишу свою разметку в файле JavaScript. Я смирился с этим, но каждый раз, когда я это делаю, я просто такой: «…» Разлука беспокоит, это вещь. Я хочу вернуть его, пожалуйста.

Дрю: Это верное замечание, не так ли? В моем опыте, когда я начал более серьезно работать с JavaScript, и, вероятно, это было, когда я вернулся в Yahoo, все было в значительной степени основано на модели HTML-страниц, отображаемых сервером, а затем применялся подход прогрессивного улучшения, наслоение JavaScript поверх для улучшения. интерфейс. И если состояние чего-то в интерфейсе нужно изменить, ваш код должен знать обо всех частях интерфейса, которые ему нужно обновить, что, очевидно, приводит вас к тесно связанному подходу с этими большими монолитными представлениями, где код, который вы пишете, должен знать обо всем остальном коде вокруг него. И я предполагаю, что это не совсем подходит для компонентного подхода, который вы бы использовали при работе с библиотекой шаблонов или системой проектирования, что больше относится к вашей области знаний. Думаю, React больше подходит для такого подхода, не так ли?

Мина: Думаю, да, особенно с возможностью связать очень специфический CSS с одним компонентом JSX или одним компонентом React. Таким образом, гораздо проще отделить или взять только то, что вам нужно для библиотеки, и оставить все остальное, в то время как библиотека шаблонов или система дизайна, которая пытается сделать что-то более монолитное с помощью всего одного большого файла стиля CSS или чего-то в этом роде. , это сильно усложняет. Вы вроде должны принять все это или ничего. Поэтому я ценю то, что React позволяет нам использовать более индивидуализированный, более компонентный способ разработки, даже если я все еще хочу, чтобы у меня был способ по-настоящему отделить уровень представления и слой контента от уровня интерактивности. Но, может быть, это просто я немного старомоден в этом смысле.

Дрю: Я определенно чувствую там боль. Идея состоит в том, чтобы прийти и поправить меня, если я ошибаюсь, насколько я понимаю, это не разделение технологий, CSS, JavaScript и HTML, а разделение функциональности. Таким образом, все, что является одним компонентом, существует вместе.

Мина: Ага.

Дрю: … что, я думаю, полезно, если этот компонент больше не нужен. Вы можете просто удалить его, и он исчезнет, ​​и он не оставит следов вокруг вашего приложения. Однако это не всегда так с CSS. Как вы работаете с CSS с React? Вы смотрели на такие вещи, как стилизованные компоненты или что-то в этом роде?

Мина: Нет. Я слышал о styled-components, но, честно говоря, никогда не исследовал их полностью. То, как мы работаем с CSS с React, заключается в том, что мы пишем Less, и у нас просто есть файл Less, прикрепленный к каждому отдельному компоненту, который импортируется в этот компонент. Затем он связывается через Webpack и передается клиенту.

Дрю: Используете ли вы систему вроде БЭМ или что-то в этом роде, чтобы изменить пространство имен?

Мина: Ага. Мы используем БЭМ для пространства имен, хотя соблюдение его зависит от того, кто что пишет. Но мы пытаемся использовать шаблон пространства имен БЭМ, чтобы немного прояснить назначение каждого отдельного класса и компонента.

Дрю: И кажется, что это успешно работает для вас?

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

Дрю: Определенно. Это постоянная битва, не так ли, как назвать вещи?

Мина: Ага.

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

Мина: Я стараюсь всегда называть вещи, основанные на их функции или цели, а не на вещах, которые немного более эфемерны, потому что маловероятно, что фактическая цель этого компонента изменится. Я забыл упомянуть, но в дополнение к использованию BEM, я думаю, мы используем BEMIT, если вы знакомы с этим. По сути, это ITCSS плюс BEM, оба из которых были созданы Гарри Робертсом. Поэтому я использую венгерскую нотацию, чтобы обозначить, является ли что-то компонентом, объектом макета или более крупным шаблоном, состоящим из нескольких компонентов. И затем оттуда мы используем соглашение БЭМ, чтобы обозначить как элемент блока и все такое.

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

Мина: Ага. Так что не связанная с React часть моей работы по поддержке slack.com заключается в том, что это всего лишь набор файлов Less, которые компилируются для CSS. И я гарантирую вам, что там много зомби-кода, потому что за то время, что я был там, мы определенно много итерируем вышеперечисленное. И у нас не всегда есть время вернуться и сделать очистку по сравнению с редизайном страницы или чем-то еще. Так что это просрочено для аудита, я так скажу.

Дрю: Это то, что мы только что рассмотрели в нашем проекте React, глядя на то, как мы подходим к CSS. На данный момент у нас есть несколько больших глобальных файлов CSS для всего приложения, и у нас есть ситуация, когда размер нашего пакета только растет, растет, растет и никогда не становится меньше, даже несмотря на то, удаленный. Итак, мы рассматривали такие вещи, как стилизованные компоненты, Tailwind — еще один вариант, который мы действительно серьезно рассматриваем. Вы много смотрели на попутный ветер?

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

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

Мина: Ага.

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

Мина: Нет, нет.

Дрю: Но оказывается, я на самом деле думаю, что это решает много проблем. Я был весьма впечатлен.

Мина: Ага. Я как бы пришел к похожему образу мышления, потому что в прошлом я предпочел бы иметь один класс, включающий все стили, которые мне нужны для определенного компонента, а не делать класс для каждого свойства, как я полагаю, что это делает Tailwind. или языки, подобные этому. По тем же причинам это было очень похоже на: «Ну, на данный момент я просто запускаю встроенный CSS. Зачем мне это делать?» Но по мере того, как я разрабатывал все больше и больше, внутри нашей системы дизайна Slack я создал кучу того, что я называю служебными классами, которые делают такие вещи, как добавление небольшого поля с помощью шаблона. Я заметил, что все больше и больше использую эти классы в дополнение к классам компонентов. Так что я такой: «Хорошо, может быть, мне стоит вернуться ко всему этому, чтобы делать CSS как одно объявление за раз». Я не знаю, зайду ли я так далеко, но это определенно стоит рассмотреть.

Дрю: Вычислительная техника, кажется, резко меняется с точки зрения тенденций между тонкими клиентами и решениями для толстых клиентов. Мы начали с мейнфреймов с терминалами, а затем наступила эра ПК с окнами, офисом и всеми подобными крупными приложениями. И все они становились очень медленными, а затем появился Интернет, и это был просто браузер, и вся работа выполнялась на сервере. И снова все быстро и четко. И теперь мы вернулись к тому, чтобы вернуть всю эту работу обратно в браузер, где все делается с помощью JavaScript, таких вещей, как React и подход JAMstack, где мы вернулись к своего рода толстому клиенту. Иногда я беспокоюсь, что мы слишком многого требуем от браузера. Это ошибка? Не слишком ли многого мы требуем от браузера, пытающегося сделать все это в React?

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

Мина: Меня просто немного раздражало, что много раз это был подход «все или ничего». В одном из выступлений, которые я давал в AEA в прошлом и в других местах в прошлом, говорилось о том, как включить прогрессивное улучшение, и не только ваше развитие, но и художественное оформление и дизайн сайтов. И я бы особо выделил примеры веб-сайтов, которые не применяли прогрессивное улучшение или какую-либо изящную деградацию. Это было похоже на то, что либо у вас запущен JavaScript в браузере, либо вы не получаете абсолютно ничего. И это был бы простой сайт, представляющий информацию об истории веб-дизайна, который был одним из сайтов, о которых действительно говорили, истории веб-дизайна с 1990 года до настоящего времени. Это был красивый веб-сайт с множеством графиков, анимацией вещей. Но его также можно было бы отобразить статически, используя только список. Между тем, чтобы ничего не показывать, и тем, что мы показываем этот прекрасно улучшенный опыт, были шаги, которые, как мне кажется, были утеряны из-за того, как мы сейчас подходим к современной веб-разработке.

Дрю: Итак, вы бы сказали, что есть абсолютно определенные категории проектов, которые подходят для такого решения, как React, и такие, где его действительно не следует использовать, и вы должны использовать более традиционные методы?

Мина: Я думаю, что если ваш сайт в основном статичен, он просто предоставляет информацию, я думаю, я не понимаю, зачем вам нужен такой проект, как React, для рендеринга чего-то, что не имеет большого взаимодействия, кроме манипуляций с DOM. . Наверное, я не вижу, какую пользу ты извлекаешь из этого. Опять же, я, возможно, не работаю над соответствующими проектами. Возможно, я не просто видел или нашел этот вариант использования, но мне трудно понять, является ли это в основном статическим сайтом, представляющим контент, не так много взаимодействия, не так много взаимодействия, кроме манипулирования DOM и выполнения анимации. Я не понимаю, как наличие библиотеки React поможет вам достичь этой цели.

Дрю: Это интересно, потому что я неплохо говорю об этом, потому что я на самом деле не использовал его, но я вижу много проектов Gatsby, и Gatsby является генератором статических сайтов, который использует интерфейс React. И я вижу, что все примеры тем и вещей, которые у них есть, — это сайты, основанные на содержании, или блоги, и сайт рецептов, и портфолио, и тому подобное. И я думаю, что на самом деле это не обязательно подходит для чего-то вроде React. Почему это не отображается статически, а затем постепенно улучшается?

Мина: Ага.

Дрю: Это не программное обеспечение.

Мина: Ага. На самом деле я тоже не использовал Гэтсби. Я слышал много хорошего об этом, но, вероятно, это один из примеров, о которых я подумал бы: «Хорошо, я думаю, я просто не понимаю, почему этот инструмент необходим для выполнения этой конкретной работы. ” Опять же, я не знаю. Может быть, это просто потому, что большему количеству людей удобно писать на React, когда они пишут что-то новое, и это просто предоставляет инструмент, который встречает людей там, где они есть. Я слышал отличные отзывы о генераторах статических сайтов, которые используют React для людей, которые использовали их и любят их, но это не тот вариант использования, о котором я бы сразу сказал: «О, это имеет смысл».

Дрю: Кажется, всегда шла битва между тем, что мы называем веб-сайтом, и тем, что вы могли бы назвать веб-приложением. И пропасть между ними, кажется, становится все шире, и шире, и шире, в то время как прогрессивный подход к улучшению пытается преодолеть разрыв, беря что-то статичное, добавляя JavaScript и добавляя интерактивность. Кажется, что такие вещи, как React, идеально подходят для программного обеспечения, которое вы запускаете в браузере. Ты бы согласился с этим?

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

Дрю: Итак, мы даем людям разрешение создавать достойные статические веб-сайты?

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

Дрю: На самом деле React существует все то время, пока вы работаете веб-разработчиком.

Мина: Может быть, у меня просто старая душа. Я не знаю.

Дрю: Я думаю, что это, вероятно, так. Я лично не смотрел, есть подходы к рендерингу на стороне сервиса, которые вы можете использовать с приложениями React. Испытывали ли вы что-либо из этого?

Мина: Я не испытывал их. Я кратко изучил их для проекта, над которым я сейчас работаю, потому что я чувствую, что некоторые части операции будут работать лучше на сервере, чем на клиентах. Но я думаю, что из-за моих ограниченных знаний и того факта, что кодовая база немного сложнее, чем я могу понять, я не совсем смог понять, как заставить эту часть работать. Я хотел бы понять это в конце концов, но я потратил день, копаясь в этом. Я такой: «Знаешь что? Я не утаиваю это, мне нужно быть. Так что я просто отступлю и пойду другим путем».

Дрю: Ага. Я думаю, что мы все были там.

Мина: Ага. Я пошел по дорожке. Я подумал: «О, это темно и страшно. Давай наоборот. Давай повернемся».

Дрю: Отойди от кода.

Мина: Да.

Дрю: Итак, до сих пор вы были очень дипломатичны и вежливы в отношении React. Я чувствую, что под поверхностью немного бурлит какое-то напряжение. Ну давай же. Расскажите нам, что вы действительно чувствуете.

Мина: Я была вежлива и дипломатична, в основном потому, что фанаты React иногда могут быть немного злыми, и я бы предпочла, чтобы они не приходили за мной. Пожалуйста, React великолепен. Это замечательно. Используйте его для того, для чего вы хотите его использовать. Я шучу, но даже тот твит, который вы упомянули в начале этого подкаста, где я думаю, что вы сказали, что я не ненавижу его. Я не люблю это, но я не ненавижу это. Даже это заявление, которое я получил от людей, не было сарказмом, но было больше того, что они были готовы встать на защиту и сказать: «Ну, мне это нравится, потому что X, Y, Z». Я такой: «Я не говорил, что это плохо. Я просто сказал, что меня это не устраивает». Но, видимо, быть мехом нехорошо. Я должен любить это.

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

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

Мина: Ага. Это действительно странно. За этим интересно наблюдать только с социологической точки зрения, но зачастую наблюдать за этим просто странно. Как будто мне не разрешено быть, как я уже сказал, нейтральным в отношении определенных вещей. У меня должно быть твердое мнение, которое я не считаю здоровым. Что означает термин «твердые мнения, которых придерживаются свободно»? Вот как я отношусь к вещам. Я сильно переживаю по поводу некоторых вещей, но это не значит, что ты не можешь изменить мое мнение. Там, где я чувствую себя как у некоторых людей, их идентичность заворачивается в определенные аспекты, что если вы не за то, с чем они решили отождествлять себя, это личное пренебрежение, а не просто, меня не волнует эта конкретная тема, или инструмент, или что-то еще.

Дрю: Да. Я не знаю, усугубляет ли это тот факт, что мы все как бы склонны специализироваться на определенных частях стека. И я знаю, что есть люди, которые являются разработчиками React. Они назвали бы себя разработчиком React, потому что это то, в чем они работают. И они не обязательно будут писать какой-либо ванильный Java-скрипт или не будут использовать Vue или что-то в этом роде. React — это их мир. Поэтому я думаю, что это почти похоже на нападение на всю их карьеру, когда они говорят: «Мне не нравится React». Что ж, они действительно вложили средства в то, чтобы вы полюбили React или любую другую технологию.

Мина: Я признаю, что был одним из тех людей в прошлом. На самом деле, вероятно, это было в основном о SASS, я полагаю. Я очень активно участвовал в работе над SASS в качестве препроцессора, а все остальные препроцессоры — мусор. Я не хочу говорить о них. Я не хочу иметь с ними дело. И я понял, что это был очень узкий взгляд на вещи. Используйте соответствующий инструмент для работы. Что бы ни делало вас более продуктивным, это правильный инструмент. На самом деле не имеет значения, что это такое.

Дрю: Есть ли какие-нибудь технологии, с которыми мы работаем, в которых нет такого племенного чувства? Есть ли что-то, что люди просто счастливы использовать или не использовать? Я ничего не могу придумать.

Мина: Вау. На самом деле ни у кого нет мнения о разметке.

Дрю: Нет.

Мина: Я чувствую, что ни у кого нет мнения о том, что такое настоящий HTML и просто разметка, просто типа: «Он там». Они используют это. Но у людей есть твердое мнение о CSS и о том, что он либо ужасен, либо прекрасен, и о войнах препроцессоров, которые на самом деле больше не случаются, и, конечно же, обо всем трайбализме в различных библиотеках JavaScript.

Дрю: Итак, вы могли бы сказать, что ваше путешествие с React до сих пор было просто: «Это инструмент. Он выполняет свою работу?»

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

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

Мина: Ага. И вот я как бы пришел к такому этапу своей карьеры, когда я не вкладываюсь по-настоящему в какой-либо конкретный язык, или технологию, или что-то еще, потому что это похоже на: «Просто любой инструмент, наиболее подходящий для того, что вы хотите». пытаешься сделать, то используй это». Я узнал, что всему есть место; есть время и место для всего. И до недавнего времени у меня не было ни времени, ни места, чтобы использовать эту библиотеку React, а теперь есть.

Дрю: Думаю, это хорошее место. Итак, в последнее время я узнаю все о React, как и вы в повседневной работе. Есть ли что-то еще, о чем вы узнали в последнее время?

Мина: На самом деле, по иронии судьбы, я узнал, что это еще один язык, который возник в Facebook. Я много занимаюсь разработкой Hack, в основном потому, что это то, что я использую в Slack на своей повседневной работе. Learning Hack помог мне освоиться с React, потому что они следуют очень похожим шаблонам, за исключением того, что один из них является серверным, а другой нет. Так что, помимо всего прочего, я стал больше узнавать о бэкенде и о том, как он работает по разным причинам. И последние пару лет я напрягался и все больше и больше выходил за пределы своей комфортной зоны. Дизайн-системы, библиотеки — это почти мой мир, и я чувствую себя очень хорошо и комфортно в этом мире. Но я выхожу за рамки этого и занимаюсь гораздо большей логикой на стороне сервера, разработкой API, моделированием данных и всем этим. Я тоже много работал над этим в прошлом году.

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

Мина: Ага. Думаю, я чувствую то же самое. Теперь, когда у меня есть лучшее представление о том, как мы уже говорили, о том, как мы добираемся от данных до конечного клиента. Я обнаружил, что думаю обо всем конвейере, независимо от того, над какой частью я на самом деле работаю. Я думаю о том, как лучше всего структурировать этот API, чтобы, когда я доберусь до шаблона, мне не пришлось так много манипулировать данными, которые я получаю на этом конце. Это определенно сделало меня лучшим инженером, мне так кажется.

Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she's @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?

Mina: Have a smashing night?

Drew: Great.