Новое определение понятия «Front-End Developer»

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

До появления Интернета в профессиональной разработке программного обеспечения не существовало дихотомии внешнего и внутреннего интерфейса. Были программисты C, программисты Pascal и программисты FORTRAN, но язык, который они использовали, был скорее деталью, чем отражением их прошлого и карьерного пути.

Затем появился Интернет, вызвавший приток огромного нового сообщества разработчиков, у которых не было склонности, опыта и / или мышления для взлома традиционного императивного кода. Первоначально они в основном писали шаблоны на таких языках, как PHP и ColdFusion (а затем JSP и ASP.net) для генерации HTML, отображаемого браузером. Хотя веб-разработчики технически все еще кодировали на уровне сервера, семена разделения на интерфейсные и внутренние части были посеяны.

Примерно на рубеже веков эта тенденция ускорилась двумя крупными нововведениями: Ajax и CSS. Ajax позволил перенести большую часть логики приложения в браузер, а сервер предоставил API для получения и обновления данных через SOAP или REST. Эта новая парадигма привела к появлению jQuery, который, по сути, создал совершенно новый язык для замены ванильного JavaScript, адаптированный к потребностям интерфейсных разработчиков. Несовместимость браузеров была абстрагирована, дрянной DOM API (включая странность XMLHttpRequest) был заменен на нормальный, а встроенные функции упростили создание привлекательных анимаций и переходов.

Последовательные версии CSS, в свою очередь, сделали возможным создание еще более сложных макетов страниц, значительно повысив уровень навыков, необходимых для веб-разработки, ориентированной на пользователя. Это, естественно, привело к большей специализации. Внезапно формальное образование в области информатики и знание алгоритмов, системного проектирования и императивных языков программирования перестали быть необходимыми для работы в качестве профессионального программиста. Вместо этого требовались отличные дизайнерские решения и знание основ взаимодействия с пользователем в дополнение к техническому мастерству HTML и CSS. Раскол между front-end и back-end разработчиками был полным.

Однако в последние годы ситуация стала более запутанной. Сейчас неверно, что вся тяжелая работа выполняется на сервере. Тенденция к использованию одностраничных приложений привела к появлению таких библиотек, как Angular и Ember, которые по своему объему и амбициям больше похожи на серверные фреймворки. Компании, которые сделали все возможное, чтобы нанять квалифицированных интерфейсных разработчиков, внезапно обнаруживают, что они не в состоянии справиться со всеми тонкостями новейших интерфейсных фреймворков. Эти разработчики, тем временем, разочарованно бормочут, что у Angular есть« проблема , потому что он был разработан внутренними разработчиками, которые просто не понимают , как выполняется разработка на стороне клиента.

Это не означает, что взлом Angular выходит за рамки понимания каждого фронтенд-разработчика. Навыки разработки программного обеспечения не являются дискретными, но их можно приблизительно представить в виде следующего континуума. (Обратите внимание, что это не диаграмма рабочего процесса - в этом случае UX, например, будет предшествовать графическому дизайну, - а скорее указывает на близость любых двух навыков. Чем они ближе, тем больше вероятность того, что данный человек будет владеть обоими из них. .)

(Основываясь только на этой иллюстрации, вы, вероятно, можете догадаться, где я нахожусь в спектре.) По моему опыту, почти все разработчики занимают некоторый непрерывный сегмент этого континуума. Есть некоторые разработчики, которые могут справиться с широким спектром этого, и я полностью перед ними трепет. Я уверен, что где-то там есть парень или девушка, которые занимаются графическим дизайном мирового уровня и кодируют драйверы устройств Unix. Тем не менее, большинство интерфейсных разработчиков, которых я встречал, занимают примерно диапазон от UX до jQuery, возможно, с примесью дизайна или (не jQuery) JavaScript. Рост веб-разработки значительно расширила круг потенциальных программистов, открыв двери тем, кто подходит под этот профиль.

Теперь, когда одностраничные приложения перенесли большую часть работы, которая раньше выполнялась на внутреннем уровне, в браузер, людей, занимающихся переходом от UX к jQuery, внезапно попросили заняться хардкорной разработкой программного обеспечения. Между тем то, что на самом деле происходит на сервере, в большинстве случаев стало довольно скучным и обыденным: авторизация вызовов API и передача данных из базы данных через REST. Такие подходы, как CouchApps, нацелены на полное избавление от сервера, и не исключено, что что-то подобное станет популярным в ближайшие несколько лет.

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

Настоящая проблема заключается в восприятии любого кода, выполняемого в браузере, как интерфейсного кода. Это явно не так. Либо мы находим другой термин для описания толпы UX-to-jQuery, либо мы переопределяем то, что мы подразумеваем под «интерфейсом».

Как бы то ни было, наша компания выбрала второе. Мы делим наших разработчиков на две группы: фронтенд и full-stack. Front-end включает в себя те же навыки, что и всегда: UX, HTML, CSS и jQuery, в настоящее время с небольшим количеством директив Angular и тому подобного, добавленных в смесь. Глубокое владение CSS особенно важно, поскольку модульные адаптивные таблицы стилей стали жизненно важной частью современных веб-приложений. Инженеры, занимающиеся полным стеком, работают над всем остальным, что часто означает создание больших сложных программных архитектур с использованием Angular или какой-либо другой «интерфейсной» среды с серверной частью Node.js, которая делает лишь немного больше, чем обслуживает данные.

Angular и другие высокотехнологичные веб-фреймворки не оскорбляют разработчиков интерфейса. Это просто последнее проявление долгосрочной тенденции: перенос кода с сервера в браузер. Давайте определим "интерфейс" для обозначения частей приложения, относящихся к пользовательскому интерфейсу, а не тех, которые выполняются в виртуальной машине JavaScript браузера. Если мы соответствующим образом назначим задачи нашим разработчикам, мы увидим, что новый мир одностраничных веб-приложений очень похож на старый. Plus ça change…

Первоначально опубликовано на blog.salsitasoft.com 18 января 2015 г.