Мастера разработки: Эдди Османи, инженер-разработчик ПО в Google, Часть II

2013-08-27

Начало читайте здесь

В: Что насчет будущего фронтенд-разработки? Что нас ждёт хорошего?

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

Когда начинающие программисты начинают использовать, к примеру, jQuery, им очень нравится идея плагинов и возможность просто пойти, скачать его и разместить на странице симпатичную плашечку. Но в реальности дело часто заканчивается тем, что приходится писать собственные элементы страницы для различных проектов. По крайней мере я, в свою бытность фрилансером много лет назад, писал код для элементов страницы не меньше 10-20 раз, и точно знаю, что многим разработчикам приходится этим заниматься. То же касается каруселей и других виджетов на сайте.

А что если бы у вас был тэг карусели для её определения, и всё что вам останется сделать – это вставить тэги изображения? Это гораздо более простой способ интеграции и использования компонента. Вы могли бы просто сказать: «Вот изображения, позаботьтесь об остальном».

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

Со стороны веб-платформы мы собираемся сделать это с помощью Web Components. Они позволяют задействовать ваши знания HTML, CSS и JavaScript для создания компонентов, которые могут быть повторно использоваться где угодно. Я очень воодушевлен Web Components, поскольку они позволяют расширить ваш html-вокабуляр (через Custom Elements), усовершенствовать стили и логику (с помощью Shadow DOM), иметь доступ к родной привязке данных (с помощью Object.observe), и многое другое. Эрик Биделман (Eric Bidelman) подробно рассмотрел концепцию Web Components на HTML5Rocks.com

Также можно посмотреть Polymer, библиотеку, основанную на использовании этой концепции в браузерах.

В: Для тех, кто начинает свой путь в качестве фронтенд-разработчика, изучение каких языков, фреймворков или библиотек ты бы порекомендовал?

О: Сложно принять простую истину, но состоит она вот в чём:  для каждой работы – свой инструмент.

Хотя я написал несколько книг по этой тематике, я всё ещё считаю, что мало знаю о фронтенд-разработке, и, думаю, большинство разработчиков думают о себе так же. Если вы хорошо усвоили основы, даже если вы до этого работали только с jQuery, вы всегда можете изучить JavaScript и CSS. Первым делом я бы занялся следующим: сел и писал, писал, писал бы код. Чтение технической литературы – это прекрасно и помогает расширять свои знания, но чтобы понять ту или иную концепцию, нужно её применить. Так что мой совет: хорошенько усвоить основы программирования.

Что касается фреймворков, тут тот же принцип: свой инструмент для каждой деятельности. Я лично использую Backbone и Angular. Мне кажется, это хороший выбор, но ведь есть еще Ember, Knockout и многое другой. Поэтому я и мой друг Синдр Сорхус (Sindre Sorhus) создали проект TodoMVC.

У нас есть 50 из 60 доступных фреймворков, и если вы хотите посмотреть, как что будет выглядеть, TodoMVC  сделает это для вас.

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

В: Я слышал о твоём следующем большом проекте, TasteJS. Что ты можешь рассказать о нем?

О: Ну что ж, TodoMVC – это прекрасно, но я хотел сделать что-то ещё более крутое. Мы сейчас работаем над новым, более сложным приложением, в котором будет ещё больше авторских фреймворков. Очень часто вы сталкиваетесь с воплощением таких вещей,  как аутентификация или логин, или анимации в разных частях страницы. А иногда вам нужно включить анимацию и при переходе с одного элемента страницы на другой. Помимо этого есть ещё огромное количество вещей, о которых задумываются, если хотят сделать приложение неординарным. Мы надеемся, что TasteJS станет более удобным и продвинутым инструментом, чем TodoMVC.

По поводу названия проекта: просто хотелось, чтобы люди почувствовали вкус JavaScript. В последний год я вижу, что всё больше людей вне JavaScript-сообщества занимаются разработкой1 приложений. PHP-сообщество, Ruby-сообщество, .net-сообщество. Это очень интересно, потому что можно воплотить в жизнь и концепцию сравнения различных языков программирования. Приложение уже есть, почему бы нам не попробовать использовать его и для этих целей?

У нас есть и вспомогательные проекты вроде Taste Lang. Его мысль следующая: «Вы хотите выучить новый язык. Вот язык, который вы, наверное, знаете, а вот и кое-что новенькое». Вы идёте дальше и смотрите, как мы создали приложение с помощью этих двух языков.

В: Представим, что разработчики попробовали множество фреймворков с помощью TasteJS. Как ты думаешь, какой именно они предпочтут в ближайшем будущем?

О: Я люблю Backbone. Даже книгу написал «Разработка приложений в Backbone.js» (Developing Backbone.js Applications). С помощью Backbone я создал множество относительно сложных приложений. Но, конечно, есть случаи, когда нужно что-то более категоричное. Категоричное ПО пытается за вас принять некоторые решения. Backbone – очень кастомная платформа. Он даёт основу, но вам придется принимать множество решений о том, как приложение будет работать.

Более современные решения вроде Angular и Ember многое решают за вас. Одно из практических преимуществ заключается в том, что вам придется писать меньше кода.

В пространстве Backbone многие стали использовать Marionette.js Дерика Бэйли (Derrick Bailey). На своих воркшопах я часто показываю этот инструмент, и он на самом деле успешен. Marionette – это что-то вроде расширения для Backbone, которое как раз и представляет собой встроенные в него готовые решения.

В: Каким ты видишь будущее приложений для мобильных устройств?

О: Я думаю, что мобильный веб должен уметь практически всё, что умеет обычный браузер.

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

Например, вы ищете в гугле новые кроссовки Nike, кликаете на первую ссылку. Что происходит? Сайт перенаправляет вас на главную страницу мобильной версии сайта. Его не волнует, что вы только что искали что-то конкретное. Это очень напрягает, когда вы просто хотели посмотреть на кроссовки.

Ещё одна проблема заключается в том, что разработчикам приходится урезать версии своих сайтов и приложений для мобильных версий. Это происходит потому, что сетевая структура, визуализация и обработка логических процессов на мобильном устройстве и на ПК значительно отличаются. Если вы работаете с сайтом или с приложением интенсивно, мобильная версия, скорее всего, окажется неудобной.

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

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

В: Думаешь, это долгий процесс?

О: Думаю, да. У всех есть определённые сроки, и если мы говорим об оптимизации производительности и ускоренной мобильной версии, мы добавляем ещё одну головную боль. Нам нужно убедить не только разработчиков, но и менеджеров с заказчиками, которые ставят сроки, в том, что этими вопросами нужно заниматься.

В: Ты занимался многими open-source проектами. Какой из них был самым интересным?

О: Yeoman, наверное. Потому что это был мой первый по-настоящему большой проект, при реализации которого я много времени проводил в Node. Истинное удовольствие работать в пространстве JavaScript, не волнуясь о кросс-браузерных вопросах.

При создании Yeoman я узнал много нового. А ещё очень приятно смотреть, как проект растет и всё больше разработчиков используют его в своей работе.

В: Что думаешь о дальнейшем развитии Dart?

О: Dart – очень интересная штука. Google уделяет много времени попыткам усовершенствовать веб-платформу. Мы пытаемся найти решения для разработчиков, которые переходят с одной платформы на другую. К примеру, вы переходите с C# на Java. Этот переход дастся вам нелегко, потому что у вас уже есть представление о том, как работает тот или иной инструмент на прежней платформе. Dart как раз поможет справиться с этим.

В: По твоему мнению, какие самые важные новости были анонсированы на Google I/O?

О: Web Components! О них я уже рассказал. Кроме них, мне очень понравилась идея об автоматическом входе в аккаунты со всех девайсов. Например, вы вошли в свой Google+ аккаунт с десктоп-браузера, и он предлагает вам автоматически установить приложение на вашем мобильном устройстве. В один клик, даже не прикасаясь к вашему телефону и планшету. Как только вы откроете приложение на своём мобильном устройстве, оно автоматически произведёт вход в ваш аккаунт. Это очень удобное и лаконичное решение.

В: И последний вопрос. Как ты следишь за новостями фронтенд-разработки?

О: В последнее время я перестал пользоваться RSS, и предпочитаю читать новости индустрии в Twitter или в кругах Google+. Я читаю ленты 40-50 человек. Они не только в курсе свежих трендов, но и работают над своими проектами. У меня есть список людей, работающих в JavaScript-сообществе, в open-source проектах, список веб-разработчиков и так далее.

Ещё сейчас есть тенденция возвращения к рассылкам. Кому ни скажешь «Я подписался на e-mail рассылку», - удивляются и говорят: «Что, назад в 1995?». Но на самом деле идея рассылок очень правильная, особенно если она составлена правильными людьми.

JavaScript Weekly, HTML5 Weekly, webplatformdaily.org – ресурсы, которые я использую ежедневно. 

 

Подготовлено по материалам Awwwards.com


Читайте также: 

42 правила командной работы от Джонатана Розенберга

Мастера разработки: Джон Резиг, автор jQuery

Работа в Game Industry: не только интересно, но и выгодно