Карьера фронтенд-разработчика: нужны ли вам навыки помимо фронтенда?

0
2666
views
javascript logo

Хочешь проверить свои знания по JS?

Подпишись на наш канал с тестами по JS в Telegram!

×

Перевод статьи «Are Front End Development Skills Enough for a Career?»

Фронтенд-разработка

Недавно я посетил митап NUS Hackers’ Friday Hacks, где познакомился с одним начинающим разработчиком. Он задал мне интересный вопрос относительно карьеры фронтендера.

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

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

Фронтенд это сложное направление и со временем оно только усложняется

Большинству читателей приходилось пользоваться такими сайтами как facebook.com, youtube.com и gmail.com. Над ними работают сотни инженеров (и даже тысячи, если учитывать и бэкенд). Это связано с большим количеством требований к этим сайтам — они должны быстро загружаться, быть безопасными и к тому же хорошо выглядеть. Сегодня фронтенд-разработка это не просто создание сайтов, отображающих статический HTML. Многие современные сайты это фактически веб-приложения. Для их создания нужна хорошо продуманная архитектура, а это требует от разработчика много умений и навыков.

Вот почему во фронтенд-разработке так много инструментов, таких как React, Redux, Relay, CSS-модули, webpack и т. д. Все эти инструменты необходимы для удовлетворения постоянно растущих требований к созданию полнофункциональных и высокопроизводительных приложений и сайтов. Быть хорошим фронтенд-разработчиком очень тяжело. Вам нужно разбираться во множестве разных вещей — HTML, CSS, JavaScript, API браузера, анимации, сетях, SEO, вопросах безопасности и производительности. Этот список далеко не полный и к тому же постоянно растет.

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

Фронтенд-разработка и мобильная разработка

Угрожает ли существованию веб-разработчиков развитие мобильных технологий?

Многие современные продукты имеют собственные мобильные приложения. Их так много, что может показаться, что это представляет угрозу для веб-разработки. Я думаю, что это правда лишь отчасти. Некоторые приложения, например, Uber и Lyft, относятся к mobile-first, и это естественно. Однако есть много других сложных профессиональных приложений, где всегда будет превалировать веб (или любой интерфейс с большими экранами), например, офисные программы или ПО, связанное с дизайном.

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

Такие инструменты как React Native и Flutter также создавались для того, чтобы помочь инженерам создавать продукты на разных платформах — путем написания кода «лишь единожды» (в кавычках, потому что эта голубая мечта по-прежнему в разработке). Такой подход, конечно, не панацея и должен еще доказать свою состоятельность, но он вполне применим для прототипирования маленьких приложений или даже отдельных частей вашего мобильного приложения. Приложения Facebook Ads Manager и Marketplace tab созданы с использованием React Native. Есть множество технологий, позволяющих человеку со знанием фронтенд-разработки создавать нативные приложения на мобильных платформах.

Несмотря на рост использования мобильных приложений, все равно остается много случаев, когда десктопное приложение лучше мобильного. Google Suite, Microsoft Office, инструменты дизайна по-прежнему более эффективны на десктопах. А многие современные десктопные приложения фактически созданы на технологиях HTML5. Возможно, вы и сами использовали подобные приложения — Slack, Discord, WhatsApp Desktop, VS Code, Atom. Я думаю, у разработчиков, имеющих исключительно навыки создания десктопных платформ, куда больше поводов для волнений, чем у фронтенд-разработчиков.

Мастер на все руки, но со специализацией

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

Этот совет не поражает новизной, но он хорош. В большинстве университетских программ подразумевается, что студенты будут изучать основы многих предметов, прежде чем выберут себе специализацию. Например, в School of Computing Сингапурского национального университета студенты сначала изучают основы алгоритмов, структур данных, операционных систем, компьютерных сетей, разработки программ, а уж затем выбирают, что они хотят изучить более глубоко (компиляторы, компьютерную графику, искусственный интеллект и машинное обучение, медиа, сети и т. д.).

Фронтенд-разработка

Хорошее знание основ многих направлений дает возможность менять сферу деятельности. Конечно, подобные перемены протекают непросто, но солидный фундамент и умение быстро учиться существенно облегчают процесс. В самом крайнем случае, если веб станет нерелевантен и никакие компании больше не захотят нанимать фронтенд-разработчиков, специалисты с хорошим знанием основ всегда смогут переключиться на мобильную разработку или бэкенд, или те платформы (AR/VR?), которые будут популярны на тот момент.

Наличие хороших инструментов (таких как Create React App, Parcel) не избавляет фронтенд-разработчика от необходимости обладать хорошими навыками разработки. Что, если вашей задачей будет создание подобных инструментов? Хорошие фронтенд-разработчики выходят за уровень абстракций, они понимают, как работают их инструменты и для решения каких задач нужен тот или иной набор инструментов. Также они постоянно стремятся создавать все новые, лучшие технологии для удовлетворения постоянно растущих потребностей.

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

Приобретайте новые нужные навыки

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

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

После прочтения книги Crafting Interpreters я занялся написанием собственного интерпретатора. Я намерен и дальше исследовать эту сферу в свободное время. Возможно, займусь созданием связанного с фронтендом инструментария, где использовались бы статический анализ и компилирование.

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

Заключение

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here