Мастера разработки: Николас Закас, экс-разработчик в Yahoo!

2013-09-05

Хотите стать успешным разработчиком? Учитесь у тех, кто уже достиг успеха. Никакая техническая литература не подготовит вас к постоянно меняющимся веб-горизонтам, поэтому очень важно иметь возможность наблюдать за опытными маститыми учителями. Николас Закас – как раз из таких людей.

Лидер в мире JavaScript, мастер производительности и универсальности с широким опытом работы в Yahoo! и Box. Николас Закас выделяется из массы своим искренним стремлением внести вклад в развитие веб-пространства.

В: Начнём с простого. Расскажи немного о себе.

О: Запросто. Я – разработчик ПО, фокусирующийся на фронтенд-разработке. Я люблю сеть, и очень рано понял, что именно ей я хочу заниматься. Эта любовь привела меня ко многому, в том числе к писательству и к публичным выступлениям. Сейчас я работаю в Box, помогая компании решить вопросы масштабируемости.

В: Ты был главным фронтенд-разработчиком в Yahoo! Большинство даже представить не может, насколько сложно работать в таких масштабов. Расскажи, с чем ты сталкивался в Yahoo!, и как работа там повлияла на твоё мышление?

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

Мой опыт в Yahoo! повлиял на всё, чем я сейчас занимаюсь. Я очень увлечён принципами масштабируемости и проблемами, с ней связанными, и после Yahoo! это и стало основой моей деятельности – и в Box, и в сфере консультирования. Мой опыт в Yahoo! помог мне рассмотреть эту проблему под различными углами, - не только с технической стороны, но и в контексте человеческих ресурсов и управления.

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

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

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

В: Продолжая начатую тему, каких навыков не хватает фронтенд-разработчикам? Что они должны уметь, но не умеют?

О: Самая большая проблема, на мой взгляд, - отсутствие организации кода. Частично это обусловлено тем, что веб-технологии вроде CSS и JavaScript не имеют встроенных форм. У Java есть пакеты, у C++ - встроенные типы данных, а веб-технологии не дают вам формальных инструментов для организации кода. Всё это ведёт к плохой организации, к плохой архитектуре.

Изучение дизайн-шаблонов, организации кода и принципов архитектуры значительно бы упростило жизнь фронтенд-разработчиков. Это не только сделает код сильнее, но и расширит кругозор.

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

О: Действительно, в комитете разработки стандартов сейчас наблюдается солидный приток практиков. Rick Waldron и Yehuda Katz из jQuery Foundation и  Eric Ferraiuolo из YUI-команды TC39 – это люди со значительным опытом в создании веб-приложений и JavaScript-библиотек. Множество ярких звёзд участвуют в es-discuss и разделяют этот практичный взгляд. Я тоже время от времени вклиниваюсь в обсуждение, когда мне кажется, что реальность не совсем подозревает о наших планах.

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

В:  Кажется, что это во многом обусловлено внедрением таких DSL, как CoffeeScript, TypeScript и Dart, которые дают большую гибкость и производительность для фронтенд-разработчиков. Это особенности именно языка или подхода разработчика?

О: Мне кажется, это зависит скорее от разработчика. Сейчас я вижу, как люди без большого опыта веб-разработки решают, что это очень просто, и начинают жонглировать языками. JavaScript выглядит очень похожим на другие С-языки, поэтому они начинают писать на нём так, как писали бы на С или С++, или на Java. Потом они начинают нервничать, потому что в JavaScript нет того функционала, к которому они привыкли. И потом они обращаются к CoffeeScript или Dart, которые дают им чувство обретения чего-то потерянного.

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

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

О: Лично для меня вопросы оптимизации – слишком специфичная и узкая область. Если вы – фронтенд-разработчик, ваша работа включает в себя и производительность, и обслуживание, и локализацию, и вопросы доступности, и многое другое. Другими словами: если разработчикам не думать над этими вещами, то о чём им тогда вообще думать? Из моего опыта, чем больше различных специализаций, тем сложнее распределять ответственность. «Это не моя компетенция, это обязанности команды производительности», или «Ой, нет, об этом пусть позаботится команда обеспечения доступности». Мне думается, что гораздо лучше, когда все в команде способны решать все эти вопросы вместе.

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

О: По порядку:

  1. Изменяющиеся горизонты API – убедитесь, что знаете все возможности

  2. Как эффективно использовать появляющиеся инструменты разработчика

  3. Стандарты – понимание необходимых и  не очень

  4. Каналы откликов от браузеров – вы должны их использовать

  5. Организация кода и шаблоны дизайна

Перевод: Люся Ширшова. Подготовлено по материалам Net.Tuts. 


Актуальные вакансии Front End разработчиков можно посмотреть здесь

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

Дэйв Мэтвин: jQuery создают личности

Работа в лучших компаниях мира. Blizzard Entertainment

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