Интервью с Эваном Ю

Интервью с автором Vue.js: «Важно понимать, что хотят пользователи»

Эван Ю — независимый разработчик и автор Vue.js, JavaScript фреймворка с открытым исходным кодом. Мы организовали интервью, в котором Эван рассказал про третью версию Vue.js, fullstack-разработчиков, и объяснил, как люди используют созданную им технологию, как он сам организует ежедневную работу, чтобы не было «выгорания».

Интервью

Evrone: Приветствуем, Эван, и добро пожаловать на интервью! Давай начнём с твоей фулл-тайм работы, которая во многом уникальна: твой проект финансово поддерживают тысячи разработчиков и компаний с помощью Patreon. Как ты организовал свою ежедневную работу, чтобы всё успевать и избегать «выгорания»?

Эван: Работая из дома над собственным проектом, я стараюсь каждый день придерживаться чёткого графика. Как ни странно, этому способствуют семья и дети: фиксированный график работы позволяет проводить с ними всё то время, когда я не пишу код. Когда чувствую необходимость сделать перерыв, то беру большой «отпуск» на несколько недель, что тяжелее сделать, если работаешь в офисе фулл-тайм.

 

Evrone: Звучит как хороший план! Кстати, а какие у тебя планы после релиза Vue 3? Возьмешь отпуск или займёшься системой сборки Vite?

Эван: У меня всегда длинный список задач в бэклоге. Что касается Vite, я для начала хочу стабилизировать эту систему: она новая, и разработчики пытаются использовать её неожиданными для меня способами. Дадим Vite время и посмотрим, в какую сторону её нужно развивать. И конечно, у меня уже есть планы на Vue 3.1, но перед этим — отпуск!

 

Evrone: Когда ты работал в Google Creative Lab, у тебя был диплом по истории искусств и должность «creative technologist». Чувствовал ли ты нехватку фундаментальных знаний по математике, алгоритмам и структурам данных, когда начал создавать Vue? Как ты считаешь, нужно ли разработчикам хорошо знать теорию информационных технологий и математику, или же нам нужно быть «писателями программ»?

Эван: Честно говоря, особой нехватки я не ощущал. Думаю, что Vue, или же фронтенд фреймворки в целом — это не та область программирования, где нужно много математики и алгоритмов. В сравнении, например, с базами данных.

Алгоритмы и структуры данных до сих пор не моя сильная сторона. Такие знания полезны, но, на мой взгляд, для разработки популярных фреймворков гораздо полезнее другие навыки: понимание пользователей, вменяемый дизайн API, создание сообществ и поддержка своего кода долгое время.

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

 

Evrone: Разумный подход. Наш следующий вопрос про такие технологии как Nuxt.js и JAMstack. С их помощью разработчики могут фокусироваться на фронтенде приложения, используя минимальный бэкенд — Node.js или Backend-as-a-Service. В результате получается «разработка без backend» или «fullstack» разработка, где один разработчик делает все части приложения. Что ты об этом думаешь?

Эван: Полагаю, здесь мы наблюдаем рост популярности продуктов, которые могут быть созданы таким образом. Разработчики становятся «fullstack» или используют минимальные бэкенды не потому, что это самый лучший способ разработки, а потому, что могут таким образом решать определенный класс бизнес задач. Это не волшебная палочка, но хорошо подходит для проектов со сложным фронтендом и относительно простым бэкендом.

 

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

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

 

Evrone: Последние несколько лет мы видим параллельную эволюцию JavaScript и TypeScript. Как думаешь, что произойдет раньше: в JavaScript всё-таки добавят типы, или все будут разрабатывать на TypeScript, а JavaScript станет «ассемблером»?

Эван: Добавление типов в JavaScript это очень, очень, очень долгая история. Мое личное мнение — это вообще не случится, так как создание системы типов комитетом (а мы знаем, как работает TC39)… не очень практично. С другой стороны, TypeScript вряд ли заменит JavaScript, потому что является надстройкой над ним. Думаю, в обозримом будущем мы будем использовать оба языка и они будут развиваться параллельно.

 

Evrone: Твой фреймворк уже использует более миллиона разработчиков. Как их правильно посчитать? Вопросы на Stack Overflow и звёзды на GitHub показывают публичную активность, но ведь многие разработчики внутри корпораций работают в «закрытом периметре», редко задают вопросы и «просто используют технологию». Можем ли мы их тоже посчитать?

Эван: Именно для open-source решений это сложная задача. Пользователи не обязаны отчитываться об использовании, а у авторов нет надёжных способов это отслеживать. Особенно если решение не «смотрит наружу в интернет». В случае с Vue.js я считаю тех, кто использует наше devtools расширение для браузеров.

 

Evrone: Для третьей версии Vue было проделано много работы над «tree-shaking». Как думаешь, почему так много времени понадобилось, чтобы эта технология наконец начала использоваться во фронтенд фреймворках? В чём основные сложности?

Эван: Механика работы tree-shaking предполагает, что исходный код структурирован определённым образом. Это значит, что лучше всего технология будет работать для кода и API, которые с самого начала написаны с учётом tree-shaking. Очень тяжело сделать существующий нетривиальный код «дружественным» к tree-shaking. Для этого надо либо сломать обратную совместимость API, либо провести серьёзный рефакторинг (который обычно порождает не менее серьёзные риски).

 

Evrone: Предложение «Function-based Component API» для Vue вызвало большое сопротивление со стороны разработчиков. Что можно сказать сейчас, когда бурные обсуждения завершились?

Эван: Сопротивление было вызвано страхом, что текущее API версии 2.x будет заменено новым. Следовательно, с нашей стороны было ошибкой высказывать такое предположение, предлагая новое API. Как авторы и мейнтейнеры, мы в основном общаемся с ранними последователями, которые, в отличие от большинства обычных пользователей, более заинтересованы в новых фичах. Это привело к тому, что мы неправильно оценили важность обратной совместимости. Пользователям не нравится, когда у них что-то отнимают.

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

 

Evrone: Vue используют многие компании, от самых маленьких до огромных корпораций. Louis Vuitton и NASA работают с Vue. Какие примеры использования Vue ты можешь рекомендовать как образец действительно сложного фронтенда?

Эван: Большинство действительно сложных фронтендов не являются open-source, их внутреннее устройство будет тяжело оценить. Я рекомендую смотреть на Vue Devtools и Vue CLI UI: это не совсем консьюмерские решения, но они обладают сложным и нетривиальным пользовательским интерфейсом, созданным с помощью Vue.

В завершение интервью

Наша беседа с Эваном позволила узнать чуть больше о подходах лучших разработчиков как к созданию своих решений, так и к организации рабочего времени. Мы в Evrone часто используем Vue.js, чтобы создать индивидуальные решения для наших клиентов. И мы всегда стараемся узнать больше у авторов популярных технологий и решений, чтобы самим научиться лучше создавать софт для наших клиентов. Если у вас есть задачи, которые вы хотите решить с помощью Vue.js — напишите нам, и мы расскажем, что можем сделать для вашего бизнеса.

Пользователям не нравится, когда у них что-то отнимают. Нам нужно понимать, чего они хотят. Это не всегда просто. Иногда такое понимание приходит не самым приятным способом, и важно сохранять в себе желание получать даже неприятную обратную связь.
Эван Ю
Создатель Vue.js
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.