Гайд по вакансиям в Веб Разработке

Gayd po vakansiyam v web razrabotke

Итак, вы решили стать Веб разработчиком. Вы знаете три магических термина HTML / CSS / JS и полагаете, что станете востребованным специалистом, как только освоите все три в совершенстве. Вы представляете, как будете учить их последовательно, один за другим. Заполните портфолио. Найдёте вакансию Junior. Утрёте нос сомневавшимся.

На самом деле, даже Фронтенд разработчик – вымирающий вид. Но не потому, что работы становится меньше :) Скорее – наоборот. Ежедневно растущая сумма знаний не оставляет шансов для широких категорий. Абстрактные «программисты» существуют только в фильмах о хакерах и в народном представлении. Так и фронтенд разработчики, постепенно, становятся абстракцией, разделяясь на всё более узкие специальности.

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

Если у вас есть опыт аренды жилья, вы, вероятно, сталкивались с фразой «Интернет Wi-Fi». Риэлторы обожают это словосочетание. Не пытайтесь объяснить им, что Wi-Fi это способ раздачи от подведённого источника, и вас интересует именно последний. «Интернет Wi-Fi» может оказаться чем угодно: ADSL, 3G, оптоволокном...

Фундаментальное непонимание ничуть не мешает риэлторам тиражировать бессмысленную фразу. Та же история с рекрутерами.

Давайте разберёмся, какие титулы вакансий, подходящие под определение «веб-разработки», популярны сегодня. Сразу отмечу, что данный гайд не претендует на полноту и отражает точку зрения человека, использующего JS как основной язык.

Титулы вакансий

Web Developer

Синонимы: веб-разработчик, веб-инженер

Обычно, подразумевает использование каких-либо CMS. Некоторые люди на полном серьёзе считают, что начинающие используют «простые CMS», а эксперты – «продвинутые CMS». Хинт: если человек спрашивает – Какую CMS используете? у компании программистов в конференц-зале – вероятно, он полный нуб. И это не обвинение, а констатация факта. Серьёзные современные проекты не используют CMS, ну разве что в качестве вспомогательного инструмента. Wordpress для ведения блога компании – да, возможно. Wordpress в качестве магазина – уже сомнительно. «Социальная сеть на Joomla» – фантазии подростка. CMS имеют свое место на рынке, но они давно перестали быть «государствообразующим» элементом.

«Делать сайт на CMS» примерно тоже самое, что «клепать дизайны под ThemeForest». «Копейка рубль бережёт!» – Nuff Said.

Веб-инженер занимается контентом, «правит» вёрстку, делает разное и (occasionally) программирует. Web Developer – это низший уровень из всех возможных «веб-разработчиков». В случае с фрилансом, под веб-разработчиком, обычно, подразумевается «человек-оркестр», а точнее – «человек-батрак».

Срчно!!! Ищем терпеливого веба-разработчека!

CSS / HTML Developer / Markup Developer

Синонимы: верстальщик

Должность, на которой требуется верстать дизайн. Требования к знанию JS и программирования минимальные или отсутствуют. Желательно необходимо знание основ дизайна, т.к. дизайн почти никогда не переводится из PSD в HTML один-к-одному. «Pixel-Perfect» – фраза-«звоночек». Маркер менеджера-самодура, ни имеющего ни малейшего понятия о том, как работает браузер и замеряющего качество работы попиксельным (с зумом!) сравнением PSD макета и HTML страницы. Попытки объяснить разницу между рендерингом шрифта в фотошопе и в браузере, обычно, воспринимаются как «споры вместо работы». Избегайте «попиксельных» вакансий всеми силами.

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

Иван не только знает всё о профессиях из этой статьи, но и поможет их освоить, составить правильное резюме и подготовиться к собеседованию. Записаться

FrontEnd Designer / Web Designer

Синонимы: веб-дизайнер

Самизнаетекто™. От специалиста требуется знание визуального дизайна (возможно, дизайна интерфейсов), знание типографики, владение Photoshop. Знание JS, обычно, не требуется.

На западном рынке, дизайнеры обычно занимаются и вёрсткой. Во-первых современная вёрстка, с учётом респонсив- и адаптив- приставок и анимаций посредственно описывается статической картинкой. Вы часто видели дизайнера показывающего анимацию и мобильную версию? Я тоже. Обычно, их возможности ограничиваются выбором из библиотечных анимаций (подобранных программистом!). Во-вторых (но по той же причине), настоящему специалисту часто оказывается проще сделать дизайн сразу в виде вёрстки. Зачем делать работу X + Y, если можно обойтись Y?

На нашем рынке, ввиду технологического отставания, дизайнеры и верстальщики – разные люди.

Interface Developer / UI-UX Designer

Похоже на предыдущий вариант, но с упором на дизайн интеракций. Специалисты на этой должности, обычно, много общаются с программистами, с клиентами, с менеджерами, потом опять с программистами... По этой причине, желательно знание основ разработки ПО и коммуникативные навыки. Очень часто, вакансия также требует знания специфики мобильной разработки, т.к. двух UI/UX экспертов нанимают довольно редко. Имейте в виду, что по этому направлению сложно найти материал для самообучения, что может идти как в плюс (меньше конкуренция) так и в минус (сложнее освоить). Если же вы способны учиться на примерах – проблем быть не должно.

Mobile / Tablet FrontEnd Developer

Должность для разработчика, специализирующегося на мобильных устройствах. Требуется знание специфики платформ IOS и Android. React Native – современный вариант этой специализации, позволяющий использовать веб-технологии для создания нативных приложений. Хинт: веб-приложения, гибридные приложения, нативные приложения и нативные приложения на веб-технологиях – это всё разные вещи.

FrontEnd Developer / Engineer

Синонимы: фронтендщик, фронтенд-разработчик

Обобщённое название должности для разработчика, владеющего HTML / JS / CSS. Обычно встречается в небольших компаниях, где на одного человека возлагается широкий спектр задач. Знание дизайна, вероятно, не требуется, но будет идти как бонус. В современных условиях, всё чаще заменяется на титул конкретной технологии: jQuery Developer, Backbone Developer, React Developer, Angular Developer... Умения программировать и верстать входят в пакет требований.

JS Developer / FrontEnd Programmer

Синонимы: JS разработчик* / JS программист

То же, что и предыдущее, с большим упором на программирование и меньшим на вёрстку и дизайн. Вообще, термин Developer (Engineer в меньшей степени) вместо Programmer, может означать что программирования будет меньше, а «всякой всячины» – больше. Кроме случаев, когда язык программирования указан явно (JS developer ~= JS programmer).

JS Developer может означать и FullStack (см. ниже). В этом случае, компания, вероятно, планирует определиться с вашей специализацией позже – когда будут ясны ваши сильные и слабые стороны. Или же когда иные рабочие места распределятся. Поэтому, JS Developer почти всегда идёт в паре с Junior или Senior / Middle.

FrontEnd SEO expert

Редкая должность, на которой требуется оптимизировать HTML код согласно требованиям и пожеланиям поисковых систем (Google / Yandex). Специфические знания: микро-форматы, микро-разметка. Учитывая, что SEO вымирает и заменяется классическим маркетингом – рекомендую избегать всего, что содержит данный акроним. Если поиск работы не ваше хобби, конечно.

FrontEnd Accessibility expert

Упор на оптимизацию сайта под специальные ридеры (например, для людей с ограниченным зрением). Исключительно редкая должность. Занесена в Красную книгу. Встречается только на крупных проектах.

FrontEnd Dev. Ops

Должность для специалиста по вопросам сборки, автоматизации, интеграции фронт-енд приложений. Встречается, преимущественно, в крупных компаниях, т.к. подразумевает довольно узкий спектр задач. Актуальные знания: Webpack / Gulp / Grunt. Со временем, у вас начнут спрашивать чем вы, собственно, занимаетесь...

FrontEnd Testing / QA

Должность для специалиста по тестированию / контролю качества фронтенд приложений. Встречается в крупных и средних компаниях. Актуальные знания: юнит-тесты, функциональные тесты, A/B тесты, ручное тестирование и автоматизация. Коммуникативные способности входят в список требований.

Многие люди ошибочно полагают, что «тестировщик» – более простая работа, чем «программист». Да, иногда встречаются вакансии где можно «кликать по ссылкам» и «составлять отчёты». Но это исключения.

Заставить Selenium NightmareJS гулять по приложению, создавая скриншоты и выполняя регресионные тесты не так уж и просто. Ведь это, по сути, фуллстек разработка. Работа ведётся сразу в нескольких средах (Electron + Chromium) и требует хороших фундаментальных знаний.

FullStack Developer / Engineer / Programmer

Должность для эксперта по полному стеку веб-технологий. Подразумевает понимание клиент-серверного взаимодействия, опыт работы с базами данных, знание асинхронного программирования и др. Выбор серьёзно настроенных людей.

FullStack делится на две категории: FullStack-JS и всё остальное. В первом случае, как несложно догадаться, на сервере и на клиенте используется JS. Во втором случае – на сервере используется Ruby / Python / PHP.

Для начинающих, чтобы не распыляться между разными языками и платформами, настоятельно рекомендую отдавать предпочтение первому варианту (по возможности). Учить сразу несколько языков – работа на износ.

FullStack JS предполагает использование феб-фреймворков на базе NodeJS. Это может быть монолитный фуллстек фреймворк (типа MeteorJS), реактивный бекенд с минималистичным клиентом (типа HorizonIO) или сборка из независимых библиотек (типа KoaJS + ReactJS). Все они имеют свои преимущества и недостатки.

FullStack JS часто используется в приложениях реального времени: чаты (а-ля Slack / Gitter), финансовые приложения (масштабируемость, PayPal...), игровые сервера. Возможность пушить информацию на клиент (создавая риал-тайм) практически «из коробки» – основной двигатель роста этой технологии.

[Whatever] Architect

Высший градус классического программирования. Любая вакансия со словом Architect предполагает Senior специалиста и, вероятно, не представляет интереса в краткосрочной перспективе для вас, дорогой читатель.

[Whatever] Lead

Вакансии лида бывают очень разные. Сколько компаний – столько разных лидов. С другой стороны, этот тот случай, когда человек определяет место, а не место – человека. Для начинающих – интереса не представляет, т.к. Junior Lead – такой же нонсенс как Junior Architect.

NodeJS Developer / Backend JS Developer

JS бекендщик. «Великий и ужасный» NodeJS – что только не говорили по его поводу. Восхваления, обвинения в «хипстерстве» – было всё... Sapienti Sat. Работа предполагает знание асинхронного программирования, потоков, баз данных, REST API. Близко к FullStack JS (минус требования к знаниям вёрстки и дизайна).

Что выбрать

С моей точки зрения, учить стоит FullStack JS, даже если планируется работа по FrontEnd. Человек, не имеющий представления о том как работает сервер, – не сможет настроить даже сборку бандла. «Малоизвестный факт»: современный фронтенд собирается с помощью NodeJS, а пакеты инсталлируются через NPM (часть NodeJS экосистемы).

Знание бекенда на уровне:

  • умею развернуть простейший REST API
  • умею запускать NPM скрипты
  • умею инсталлировать зависимости
  • ...

повысит шансы найти работу React или Angular разработчика на порядок.

Освоить NodeJS, по сути, проще чем браузер, т.к. среда NodeJS сравнительно проще. Плюс работа с файловой системой, минус тонны Web API и vendor-specific ерунды.

В общем и целом – учить нужно то, что интересно лично вам, не заморачиваясь на «востребованность» специализации. Рынок веб-разработки уже устоялся и баланс между спросом и предложением практически одинаков по всем имеющимся категориям. «По Angular много вакансий» – это ваша точка зрения. «По Angular много резюме» – точка зрения рекрутера.

При выборе направления, не гонитесь за простотой (пресловутый «ручной тестировщик»). Индийцы не дремлют, а зверски демпингуют. Все тренды показывают, что будущее за программированием, обоснованным теорией (функциональное программирование, статическая типизация) и математикой. Поинтересуйтесь числом вакансий по машинному обучению. Делайте ставки на долгосрочную перспективу. Ищите по слову «интерн», а не «джун». Интерн позволит вам увидеть команду в деле. Лучше «не подойти», чем увольняться через два месяца. Второе будет ломать вас психологически. «Найти работу в хорошей команде» – совсем не то же самое что «найти работу».

Рекрутеры не любят «любых» работников. Рассматривая вакансии начинающих, они ищут людей, которые уже определились с тем, чего хотят. Чем более точным и узконаправленным будет ваше резюме – тем больше у вас шансов. Ибо даже если вы найдёте «любую работу» – вашей следующей задачей будет поиск «лучшей работы». И когда вы планируете закончить с поиском и начать получать удовольствие от жизни?

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

Вёрстка требует невероятной усидчивости. Любите игру «Найди 10 отличий»? Тогда это для вас. Нет – не насилуйте себя.

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

Найдите свои самые сильные стороны и сделайте ставку на них. Найдите свои самые слабые стороны и взвесьте – не помешают ли они в выбираемой профессии. Всё что «посрединке» – оставьте в покое.

Желаю Удачи!


Хочешь узнать больше?

Записывайся на квесты по изучению программирования вместе с опытным наставником! Мы учим и новичков, и уже опытных разработчиков. С чего начнём?

Выбрать квест Nastavnik po veb razrabotke