Гайд по вакансиям в Веб Разработке
Итак, вы решили стать Веб разработчиком. Вы знаете три магических термина 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 отличий»? Тогда это для вас. Нет – не насилуйте себя.
Если ваше воображение не включается «по щелчку» – дизайн не для вас. Хороший дизайнер управляемо вызывает необходимые эмоции у себя и переносит их в визуальную форму. Если вы безэмоциональный человек – ваш дизайн будет мёртвым. Если у вас нет визуальной интуиции, нет врождённого чувства цвета и формы – вы не добьётесь успеха в этом направлении. Да, можно копипастить чужие идеи, втайне презирая себя за проф-непригодность, но зачем?
Найдите свои самые сильные стороны и сделайте ставку на них. Найдите свои самые слабые стороны и взвесьте – не помешают ли они в выбираемой профессии. Всё что «посрединке» – оставьте в покое.
Желаю Удачи!