---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " /> ---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " />

Портал издательского дома "ПОЛОЖЕВЕЦ и ПАРТНЕРЫ"
---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов.

О портале Каталог профессий

Frontend-разработчик React

React занимает лидирующие позиции в области Frontend-библиотек. Frontend-разработчики в дефиците – только на hh.ru размещено более 4000 вакансий для разработчиков.

Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на этой позиции.

  1. Какими знаниями и навыками должен обладать Frontend-разработчик React?
  2. Каков инструментарий Frontend-разработчика React?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Александр Майоров, CTO & co-founder at GeekJOB.ru

1. Хоть мы и говорим об узкой специализации – React-разработчик, тем не менее это все тот же Frontend-разработчик. Поэтому он должен обладать всеми теми общими знаниями, что и современный Frontend-разработчик: хорошие базовые знания в JavaScript, HTML и CSS.

Если раскрыть подробнее, что значит знать JavaScript, то получим следующие рекомендации:

  • знание версий, синтаксиса и API разных версий JavaScript (ECMAScript);
  • знание новых стандартов и возможностей (от ES5 до ES2017+);
  • понимание особенностей работы V8, знать, что такое и как работает DOM, CSSOM, Event Loop;
  • знание JS API: от WebSockets и PWA до WebRTC.
  • знание, как работают браузеры, и особенности разных браузерных движков.

Опыт работы хотя бы с одним или несколькими фреймворками (в нашем случае приоритет отдается React). Знание Node.js хотя бы на минимальном уровне для запуска инструментов. Хорошим плюсом будет опыт серверной Node.js-разработки. Также хорошим плюсом будет опыт тестирования (от Unit-тестов до e2e-тестов).

2. Хоть React и позиционируется как библиотека, но сам по себе в чистом виде не используется. Как правило, это целый набор вспомогательных библиотек и инструментов. Современный React-разработчик пользуется следующим набором: React, Redux, Webpack – это как основной минимальный комплект. Дополнительно может использоваться множество вспомогательных библиотек и инструментов от LoDash и Immutable.js до CSSinJS, JSS и другие.

3. Желательно высшее техническое, но не обязательно.

4. Если говорим про вакансии React-разработчика, то тут зависит от уровня требуемого специалиста. У опытного, естественно, должен быть опыт работы на React хотя бы 2 года. Если говорить про юниоров, то опыт работы с любым фреймворком (хотя бы даже на уровне «изучал для себя»).

Как правило, основное требование – знать хорошо базовые вещи: JS, HTML и CSS. Понимание, как работает интернет (что такое HTTP и как он устроен, что такое HTTP/2), и базовая алгоритмическая подготовка. Фреймворк – это всего лишь инструмент, который может устареть или быть вовсе не пригодным в каком-то конкретном случае. Нельзя мыслить только терминами фреймворков. Надо расширять кругозор и хорошо разбираться в базовых вещах. Вчера был React, сегодня Vue.js, а завтра это могут быть нативные WebComponents. Фреймворки рождаются и умирают. А базовые вещи остаются.

5. Специфических требований нет.


Константин Рыжов, JS-разработчик, «Альфа-Банк»

1. Я считаю, что база специализации Frontend-разработчика примерно одинаковая – вне зависимости от SPA-фреймворка (Single Page Application) или библиотеки, работать приходится с UI в вебе, а значит, следует уметь и понимать его кровь и плоть – HTML, CSS и JavaScript.

Первые полтора года своей профессиональной деятельности я верстал сайты и не слышал про одностраничные веб-приложения, что может объяснить мою точку зрения. Насколько я знаю, jQuery до сих пор широко распространен вне контекста одностраничных приложений, когда речь заходит о верстке. И это можно понять – у jQuery за годы его существования появилась богатая система плагинов и расширений для различных нужд: от галерей и эффектов до продвинутой визуализации данных.

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

2. Помимо TypeScript (последние 2-2,5 года я пишу исключительно на нем) мой инструментарий при разработке SPA на React.js лаконично дополняют сборщик Webpack, библиотека styled-components для CSS-in-JS и линтеры ESLint/TSLint.

Так или иначе, все еще приходится работать с чистым CSS либо его препроцессорами SASS/LESS, но компонентный подход с CSS-in-JS мне пришелся по душе.

Для быстрого прототипирования и запуска приложения можно использовать CLI-инструмент create-react-app, но обычно конфигурация Webpack настраивается вручную под каждый отдельный проект, ибо это более гибкий и легкий (касательно размера файла с кодом на выходе) подход.

Если вы также являетесь сторонником статической типизации, то у TypeScript есть альтернатива в виде Flow, инструмента от Facebook.

3. Требования варьируются от компании к компании. Кому-то специалисты нужны настолько сильно, что они готовы брать людей без опыта во Frontend-разработке либо со смежными знаниями и умениями (backend, mobile). Но если мыговорим о React.js в частности, то помимо базовых вещей в React и умения верстать в первую очередь ценится знание самого языка JavaScript.

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

4. Я часто вижу в вакансиях цифру в 2-3 года профессионального опыта с JavaScript и инструментами его экосистемы (SPA, линтеры, CSS-процессинг). Причем позиции разнятся от middle до senior, потому что среди компаний нет единых критериев оценки желаемой компетенции специалиста.

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

Главное, будьте готовы соответствовать своим требованиям оплаты труда – работая удаленно за доллары или в крупном городе, вы будете получать больше денег, но мало кто согласится платить много денег (это «много», кстати, у каждого свое) начинающему специалисту.

5. В прошлом, в аутсорсе, я несколько раз участвовал в иностранных проектах (США, Нидерланды, Израиль), отчего была возможность практиковать и развивать разговорный английский язык. На текущем месте работы мне это нетребуется, но я искренне рекомендую учить английский язык всем коллегам, потому что это сразу же расширяет ваши карьерные возможности, позволяя сотрудничать с людьми из других стран.


Дмитрий Новожилов, Frontend-разработчик в SPB TV

1. Знание JavaScript (чаще всего используются новейшие версии спецификации: ES2015 и выше), понимание компонентного подхода, умение использовать React и его API (Lifecycle methods, Context), знание основных паттернов (High Order Components, Render Props), навыки верстки и работы с DOM. Также пригодится понимание основ функционального программирования – это поможет сделать код более выразительным и переиспользуемым.

2. React-разработчик использует редактор кода (разброс вариантов велик: от минималистичного Vim до навороченных комбайнов от JetBrains), DevTools браузера и прочие инструменты: NPM/Yarn – пакетные менеджеры, Webpack для сборки модулей, Babel для преобразования последних версий EcmaScript в более старые, Eslint для статического анализа кода, Jest для тестов, Prettier для автоформатирования.

3. Образование и диплом не играют существенной роли при трудоустройстве. Опыт важнее, поэтому можно добиться успеха, даже будучи самоучкой. Однако, по ощущениям, все-таки комфортнее работать, если есть высшее образование вобласти Computer Science: понимание алгоритмов и структур данных, паттернов проектирования и других концепций не только расширяет кругозор, но и облегчает обсуждение с другими членами команды.

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

5. Специфика работы с интерфейсами требует аккуратности и внимания к деталям, а высокая изменчивость фронтенд-технологий – регулярного самообразования и актуализации знаний. На React мы делаем приложения с видеосервисами нетолько для веба, но и для Smart TV. Телевизоры достаточно ограничены в ресурсах (в частности, по размеру оперативной памяти), поэтому большое внимание уделяем вопросам производительности и уменьшению размеров бандла с кодом.


Сергей Черепанов, основатель студии аутсорса fullstack-development.com и технический директор курьерской службы ptichka.moscow

1. Любой Frontend-разработчик должен уверенно владеть HTML/CSS/JavaScript. Важны уверенные знания языка и концепций, которые использует язык (замыкания, функции высшего порядка, прототипное наследование), в таком случае даже знания самого React.js второстепенны. Знаний конкретно по React.js при приеме на работу обычно не требуем, потому как изучение и React.js и сопутствующих Redux/Redux-Saga/Regux-Form осуществимо в течение пары недель. Параллельно с обучением уже можно приносить пользу команде в работе над реальным проектом, проводя рефакторинг частей, не специфичных для React. Минимальный уровень знаний, которые нужно освоить, чтобы активно участвовать в разработке сложного приложения на React, – понимание таких концепций, как однонаправленный поток данных, иммутабельность, наследование/композиция, компоненты высшего порядка, знание JSX, жизненного цикла компонент, local state/props/context у компонент.

2. Естественно, Chrome DevTools и расширения к нему с аналогичными названиями: React DevTools, Redux DevTools, Redux Saga DevTools. Также инструменты общего назначения: сниппеты в редакторах (работа с React влечет за собой довольно много бойлерплейта), форматтеры для консистентного стиля кода (для JavaScript, например, Prettier), линтеры (мы используем TypeScript и, соответственно, как линтер у нас TSLint).

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

4. Мы требуем реализации как минимум парочки своих приложений среднего уровня (от пяти тысяч строк кода). При этом у нас есть своя бесплатная программа обучения для джуниоров, где они могут подтянуть теорию по Frontend-разработке, а потом реализовать три проекта: верстку страницы резюме, UI Kit с парой кастомных страниц, где необходимо самим продумать и реализовать компонентную архитектуру без фреймворков, свой кастомный плагин к jQuery ввиде конфигурируемого бегунка. После выполнения этих практических заданий следует тщательное ревью нашими сотрудниками, по завершении которого мы проверяем теоретические знания по заранее выдаваемому чеклисту (снеограниченным количеством попыток) и принимаем на работу.

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


Борис Качанов, React-разработчик в Goodwix

1. Необходимы следующие знания и навыки:

  • HTML, CSS. Речь, конечно же, про HTML5, CSS3
  • JavaScript
    • Синтаксис языка
    • Базовые операции
    • Манипуляции с DOM
    • Прототипы
    • ES6 со всеми новыми возможностями
  • Общие знания разработки
    • Системы контроля версий
    • Понимание стека протокола TCP/IP
    • HTTP-протокол, его методы (GET, POST и т.д.)
    • Алгоритмы и структуры данных
    • И т.д.
  • Webpack
  • Навыки работы с пакетными менеджерами (npm, yarn)
  • Препроцессоры CSS (Sass, Less, PostCSS)
  • Глубокое знание библиотеки React
  • Styled components
  • State management (Redux, MobX, Flux)
  • Проверка типов с помощью PropTypes, Flow
  • Навыки работы с маршрутизацией в React-приложениях (react-router)
  • Навыки выполнения базовых запросов (fetch, axios, XMLHTTPRequest)
  • Навыки взаимодействия с API, понимание REST-архитектуры
  • Хороший уровень английского языка
  • Понимание принципов Agile

2. Инструментарий Frontend-разработчика React следующий:

  • IDE (WebStorm, VSCode)
  • Система контроля версий
  • Системы отслеживания ошибок (Jira и другие)
  • Swagger

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

4. Все зависит от того, на какую должность претендует кандидат:

  • Junior – 1 год опыта
  • Middle – 2 года опыта
  • Senior – 3 года опыта

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

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


Павел Попов, ведущий разработчик в Luxoft

1. Главная задача Frontend-разработчика – предоставить пользователю информацию на его, клиентской, стороне. Важно всегда помнить, что веб-технологии, пожалуй, являются сегодня самыми кроссплатформенными и широко используемыми на самых разных устройствах. Существует масса самых разных случаев получения доступа к информации: на больших экранах и быстром интернет-соединении, на мобильных устройствах, частично отключенных возможностях браузера (например, отключение JavaScript), а также посредством преобразования текста в речь.

Учитывая все это, получается, что сам Frontend-разработчик, помимо основных технологий HTML, CSS, JS, должен знать:

  • как работает тот или иной браузер, в том числе и, что называется, «под капотом»;
  • как происходит обмен данными с сервером, какие есть технологии и какие у них ограничения;
  • как пользователи могут взаимодействовать с предоставляемыми информацией и интерфейсом;
  • как организовать архитектуру клиентского кода, который иногда может быть ничуть не проще серверного.

2. Под каждую задачу Frontend-разработчик выбирает определенный инструмент:

  • редактор кода или полноценная IDE – для разработки;
  • система контроля версий – для совместной работы и хранений кодовой базы;
  • утилиты для тестирования – для повышения качества кода;
  • средства для отладки кода в браузере – чтобы не писать каждый раз console.log.

Что касается конкретных наименований и используемого софта, то это тема для долгих споров и сравнений. В моем случае это: IDE WebStorm как некоторого рода швейцарский нож для решения большей части моих задач по написанию, отладке и организации кода, Jest для тестирования React-приложений и Chrome DevTools для отладки и внесения изменений «на лету».

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

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

4. На сегодняшний день многие задачи, которые ставятся перед Frontend-разработкой, решаются с помощью фреймворков или библиотек. Конечно, основа никуда не исчезает, и без большого количества опыта работы с HTML, CSS и JS неполучится в полной мере понимать, как работает, например, React.

На мой взгляд, наиболее важен опыт работы с базовыми технологиями, потом уже идет опыт работы с библиотекой или фреймворком. Бывают также специфичные проекты, которые требуют определенного опыта, например с библиотекой D3.js для визуализации графиков.

5. Обычно все зависит от проекта, поскольку требования собираются именно под него.


Антон Пальгунов, Senior Frontend Developer в компании Revolut LTD

1. Из основного я выделил бы навык любить программировать, остальное обычно прилагается, так как это всеобъемлющее понятие и включает в себя потребность постоянно учиться, открывать что-то новое.

Умение разбираться в чужом коде, так как в JS сейчас правит балом npm, и все пакеты мы получаем оттуда, кроме тех, что пишем сами, а изредка и создавать запросы на добавление нужных функций в открытые библиотеки.

Делать мир лучше и удобнее, и это не пустые пафосные слова: если вы решили стать Frontend-разработчиком, перед вами открыто все на сегодня – приложения для телевизора, «умного дома», компьютера, телефона и, конечно, веб, есть возможность писать на JS. Делая крутые продукты, мы упрощаем жизнь себе и остальным.

Дополнительным навыком можно назвать внутреннее чувство прекрасного и самостоятельное создание хорошего UX/UI.

2. Для разработки можно использовать любимую операционную систему, у меня дома Windows, сервер и виртуальная машина на Ubuntu, рабочий ноутбук на MacOS, тут нет ограничений, можно выбирать близкую вам.

Также понадобится установить Node.js, браузер и IDE или любой другой редактор кода, который нравится, и пакеты для сборки проекта, например такие, как webpack, babel, TypeScript.

Но, честно сказать, на сегодня большинство Frontend-разработчиков, которых я знаю, выбирали MacOS как рабочую машину, и оно понятно: *nix-система, консоль, схожая с linux, и стабильность в работе.

IDE у каждого свои, но основная – это WebStorm, из редакторов – VS Code, Sublime и Vim.

Остальные зависят от проекта, например инструменты тестирования, отладки и сборки.

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

Плюсом идет саморазвитие, мы спрашиваем, что человек читал из профессиональной литературы, например YDKJS – Kyle Simpson и статьи на Medium и Habr? Чем увлекается помимо Frontend-разработки? Есть ли домашние проекты?

4. Опыт написания сайтов и приложений на Vanilla JS пару лет и от года с React и Redux как общего стандарта для наших проектов, но даже если человек не писал много c React, но есть опыт разработки приложений на других технологиях ипри этом имеет глубокие знания по Vanilla JS, мы его возьмем, ведь React – это библиотека, и для того, чтобы понять, как она работает, хватит двухнедельного вливания в проект. Почитать документацию и код самого React.js – этого уже достаточно для решения поставленных задач. Также мы используем TypeScript в работе, написание типизированного кода – это вложение в наше будущее для больших проектов, не обязательный пункт, но будет плюсом. И самое главное – умение тестировать свой код, y нас используется jest + enzyme для этого.

Это все технические знания, и они обязательные, но также смотрим и на другой полезный опыт.

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


Подготовил Игорь Штомпель

 
Проект Издательского дома "Положевец и Партнеры"

По вопросам партнерства обращайтесь по электронной почте chooseit@samag.ru

Телефон: +7 499 277-12-45