Frontend-разработчик React
Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на этой позиции.
- Какими знаниями и навыками должен обладать Frontend-разработчик React?
- Каков инструментарий Frontend-разработчика React?
- Каковы требования компании к уровню образования потенциальных сотрудников?
- Какие требования предъявляются к опыту работы?
- Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Александр Майоров, 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. Таких требований нет, но будет плюсом знание банковской структуры, как она работает, это даст понимание многих процессов и поможет в анализе ситуации и принятия верных технических решений без сбора информации. Сюда же можно добавить опыт создания приложений с высокой доступностью как с различных устройств, так и по качеству интернета.
Подготовил Игорь Штомпель