Просмотров: 22723

Веб-разработчики – тоже программисты?


Николас Закас (Nicholas C. Zakas) — известный front-end-консультант, автор многочисленных книг и статей, почетный гость конференций и, разумеется, блоггер. 5 лет проработал в Yahoo, где был руководителем технического отдела разработки внешнего интерфейса главной страницы (капец, нет вы только вдумайтесь, какие замечательные должности — «руководитель технического отдела разработки внешнего интерфейса главной страницы Yahoo»), а также внес вклад в библиотеку YUI.

Специализируется на JavaScript, HTML5 и CSS3, повсеместно ратует за большую производительность, масштабируемость, доступность и удобство сопровождения окружающего нас «веба». Сегодня мы знакомимся с его мнением по вопросу, который актуален и в нынешнем IT-сообществе, — что такое веб-разработчик и почему он тоже программист?

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

Как всё начиналось

Когда я поступил в колледж, мне очень хотелось работать с компьютерами, но я не мог сказать точно, чем именно собираюсь заниматься. Я с первого взгляда влюбился в «мультимедийный» (так это тогда называлось) компьютер Packard Bell, оснащенный процесcором Pentium и (просто невероятно!) CD-дисководом. Днями сидел за этим компьютером, не делая ничего конкретного, просто неустанно мастерил разные мелкие программки и отлаживал систему. Вот и все, чем я хотел бы заниматься, но я был уверен, что именно это мне и нужно.

В колледже я записался на обязательные курсы. В первом и втором семестре у нас был предмет «Информатика», где преподавали Pascal. Затем UNIX вместе с C. Затем — C++, Smalltalk, Prolog, ассемблер. Структура данных, алгоритмы. Базы данных.

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

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

Но в расписании моего колледжа, к сожалению, не нашлось ни единого курса по веб-разработке. Слишком молода была эта область. Поэтому я постигал это искусство в основном самостоятельно. Наконец, мои искания привели меня на практику в один стартап, где занимались веб-разработкой.

веб программист разработчик программирование web developer

С тех пор прошло уже более 15 лет. Бизнес постепенно осваивал «всемирную паутину», поэтому потребность в веб-разработчиках постоянно возрастала. Но меня удивляет то, что одно обстоятельство с тех пор совершенно не изменилось — я имею в виду отношение ко всей касте веб-разработчиков.

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

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

Но вот что мне в этой организации не нравилось — так это факт, что меня там считали обычным «программистом». А слово «программист» автоматически означало «многостаночник». То есть мне приходилось писать и запросы для базы данных, и код для серверных приложений, и работать с HTML, CSS и JavaScript.

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

На самом деле мне совершенно не нравится такой подход, поскольку это насаждает определенную ментальность: утка, как известно, и плавает, и летает, и ходит... и все это делает плохо.

Моя история Yahoo

Одна из причин, по которым я попал в Yahoo, заключалась в том, что здесь мне могли предложить работу, связанную исключительно с HTML, CSS и JavaScript. Мне хотелось оставить всю серверную работу тем, кого она привлекает, а самому сосредоточиться на любимом деле. Действительно, Yahoo была одной из первых компаний, которая стала взращивать искусство веб-разработки.

Именно у них впервые обозначилась новая профессия «веб-разработчик», и на появившиеся вакансии пришла блестящая плеяда специалистов, которые очень скоро повели приютившую их компанию в славное будущее

Среди этих первопроходцев были Томас Ша, Эрик Миралья, Нейт Кэшли, Майк Ли и многие другие. Это была настоящая команда-мечта, целиком и полностью, и именно она окончательно и бесповоротно убедила Yahoo всерьез заняться веб-разработкой.

Вскоре после этого компания Yahoo, движимая этим первым коллективом веб-разработчиков, пришла к выводу, что все эти талантливые личности, в сущности, являются программистами. Сегодня человек был «веб-мастером», а завтра становился «инженером внешних интерфейсов». Они заняли свое законное место среди программистов — место, которое заслужили уже очень давно. За этим последовало развитие величайшего front-end-сообщества — на мой взгляд, совершенно неповторимого.

Это было еще до зарождения Google и задолго до того, как в умах программистов возникли Facebook и Twitter. Многие незаменимые методы, которыми мы пользуемся сегодня — особенно такие, которые связаны с быстродействием, прогрессивным улучшением (progressive enhancement), открытыми API и обеспечением доступности — являются плодом той работы, которой занялась компания Yahoo в те незапамятные времена. Когда я поступил на работу в Yahoo — а было это в 2006 году — сообщество front-end-разработчиков было полным жизни и активным, эти люди неустанно превращали Yahoo в ту самую компанию, которая затем сформировала неповторимый пользовательский опыт в интернете и заслуженно гордилась этим. Мне выпала честь стать частью этого сообщества и поработать со всеми упомянутыми выше людьми.

Некоторые великолепные мастера, вышедшие из первого поколения веб-разработчиков, достигли выдающихся новых высот. Томас Ша создал фреймворк YUI и заручился поддержкой, благодаря которой этот проект смог достичь зрелости. Эрик Миралья стал вице-президентом по продукции в компании Meebo, которая только что была приобретена Google. Нейт Кэшли снискал международный авторитет в CSS и front-end-разработке. Майк Ли продолжил творить и основал еще несколько стартапов. Дуглас Крокфорд формализовал нотацию JSON и стал всемирно признанным авторитетом по JavaScript, а также весьма успешным писателем. Стив Содерс стал экспертом мирового класса в области производительности, опубликовал первые данные о производительности в большой компании, создал YSlow, написал две книги и стал сооснователем конференции Velocity.

Благодаря Биллу Скотту, занимавшему посты вице-президента по UI-разработке в Netflix и старшего директора по UI-разработке в PayPal, в этих компаниях также появились свои сообщества front-end-разработчиков. Николь Салливан получила всемирное признание в области CSS благодаря предложенному ей подходу OOCSS, а также стала крайне востребованным консультантом по повышению производительности систем. Стоян Стефанов продолжил дело Стива по разработке YSlow, стал признанным авторитетом в области производительности и написал несколько книг. Исаак Шлютер создал npm и возглавил Node.js. Крис Хайлманн стал всемирно известным разработчиком-евангелистом. Скотт Шиллер зарекомендовал себя как специалист мирового уровня в области сетевого аудио, реализовав свой проект SoundManager 2.

Я мог бы продолжить этот список — рассказ обо всех разработчиках, вышедших из Yahoo и сделавших важнейший вклад в дело мировой веб-разработки, занял бы несколько страниц. Достаточно сказать, что такое большое front-end-сообщество не могло не привлечь выдающихся людей. Многие разработчики внешних интерфейсов, вышедшие из Yahoo, обосновались в больших и малых компаниях по всему миру, задав там планку высокого профессионализма.

Два аспекта негативного отношения к веб-разработчикам

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

Возможно, наши знания и навыки не идентичны знаниям и умениям классических программистов, но мы, тем не менее, — самые настоящие программисты. Если вы пишете код — значит, вы программируете. И это действительно значит, что вы — программист. Суть этой профессии именно в том, что программист создает код, который потом используют заказчики. Если ваш код написан не на Java или С++ — вы не становитесь от этого «менее программистом», чем ваши коллеги, использующие эти языки каждый день.

(Примечание: я намеренно игнорирую кажущееся очевидным различие между «разработчиком» и «инженером». Я убежден, что эти слова означают одно и то же).

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

Ключевой аспект, из-за которого к веб-разработчикам сохраняется такое отношение, заключается в стиле нашей деятельности. Не допускайте даже намека на то, что вы — не программист. Как это сделать? А нужно всего лишь конкретнее называть то, чем вы занимаетесь. Мне хотелось бы, чтобы в интернете становилось меньше вакансий «Требуется веб-мастер», а им на смену приходили вакансии «Ищем front-end-разработчика» или «Разыскивается разработчик пользовательских интерфейсов». И, пожалуйста, избегайте таких выражений, как «веб-звезда» или «веб-ниндзя». Из такой формулировки вовсе не следует, чем именно вы можете быть полезны, да и выглядит она глупо.

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

Второй момент немного сложнее. Front-end-разработчики должны вписываться в состав всего IT-отдела — точка. Все мы программисты, мы работаем вместе с другими программистами и совершенствуем наше мастерство, как и все прочие. Все программисты заслуживают того, чтобы к ним относились одинаково, и их место должно соответствовать их навыкам.

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

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

  • Младший разработчик (junior engineer) — начинающий, возможно, недавний выпускник. Нуждается в обучении и помощи наставника. Ему можно доверять небольшие задачи под надзором старшего коллеги
  • Разработчик среднего уровня (mid-level engineer) — несколько лет опыта. Может работать без контроля, способен самостоятельно решать задачи среднего объема и сложности. Скорее всего, с большинством задач он справится хорошо.
  • Старший разработчик (senior engineer) — опытный специалист, демонстрирующий лидерские качества в командной работе. Может целиком брать на себя крупные задачи и отлично справляется с ними самостоятельно. Готов за все отвечать, а другие члены команды могут обращаться к нему за советом и критикой.
  • Главный инженер (principal engineer) — очень опытный специалист, чья способность руководить превосходит масштабы одной команды. Способен браться за выполнение сложных задач, а также распределять обязанности и управлять людьми. Обладает непоколебимыми навыками общения, благодаря чему может определять развитие работы как внутри своей команды, так и за ее пределами.
  • Архитектор (architect) — исключительно опытный специалист, способный руководить множеством команд. Организован, умеет общаться, хорошо разбирается в системах. Может и сам решать любые задачи, но большую часть времени тратит на проектирование и постановку задач для других, контроль над их выполнением в командах, а также на консультирование коллег. Незаменимый человек для решения непростых вопросов.

Выводы

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

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

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

Ошеломительный успех в области разработки внешних интерфейсов, достигнутый в Yahoo, следует взять на заметку всем компаниям: работая правильно, можно привлечь невообразимое количество талантливых людей и добиться выдающихся успехов. Недавние пертурбации Yahoo никак не связаны с front-end-сообществом; кроме того, как упоминалось выше, многие специалисты, успевшие поработать в Yahoo, сейчас выстраивают хорошие front-end-отделы в других компаниях.

Практически все «топовые» компании, которые можно припомнить навскидку, обязаны своим процветанием именно front-end-разработчикам. И по-прежнему не утихает «гонка вооружений», которую сейчас ожесточенно ведут Google, Facebook и Twitter, стремящиеся завербовать в свои ряды все больше и больше разработчиков веб-интерфейсов.

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

dev.by, 2012

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , ,
Эта запись опубликована: Воскресенье, 8 июля 2012 в рубрике ПрограммированиеМнения.

1 комментарий

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

    Но всё таки нельзя брать веб-программистов, чтобы они Вам написали desktop-программу, потому что у них будет web-код, но никак не desktop. Это легко можно заметить просто посмотрев на код коллег, если ты desktop'ник или mobdev-разработчик, а коллеги твои - web-разработчики. В принципе, об этом же говорит и автор оригинальной статьи, но как-то немножко запутано: "Программисты все равны, но мы разные".

    В общем, работодатель не должен писать объявления как некоторые увиденные мной на hantim.ru ("Нужен программист, который разбирается в html, css, javascript, php, perl, python, ruby и 1С" wtf?!), а более, точнее - совсем конкретно.

    Ну а так да - все равны, но умеем мы разное :)

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз