React разработчики на аутсорс
Хотите использовать ReactJS в своём продукте? Мы в Evrone используем эту библиотеку для реализации сложных решений в интерфейсе. Для этого мы собрали сильную команду React-разработчиков и готовы поделиться своими наработками, как это делать.
Мы расскажем, зачем нужен React JS и что создают с его помощью, где опубликовать вакансию и какие вопросы задать во время собеседования. И, наконец, поможем определиться, какой вариант сотрудничества соответствует вашей задаче.
Преимущества разработки на React
React — это JavaScript-библиотека для создания пользовательских веб-интерфейсов и мобильных приложений, а также для single page application предоставляющая разработчикам компонентный подход. Facebook выпустил её в 2013 году.
В работе с React программисты используют расширение языка JSX, которое облегчает задачу: синтаксис JSX похож на HTML, код компилируется в JavaScript, при работе над интерфейсами JSX более наглядный. Эти качества JSX значительно сокращают время разработки продукта.
- Компонентный подход
React подразумевает компонентный подход к разработке. Вся страница разбивается на независимые смысловые блоки — компоненты: навигационная панель, сайдбар, кнопки и т.д. Каждый компонент, в свою очередь, состоит из компонентов поменьше и может быть использован многократно — например, в других частях сайта.
Главное преимущество такой организации страницы — программист может работать с каждым компонентом отдельно. И если требования к одной части интерфейса меняются, разработчик может адаптировать код под новые требования, не нарушая общей архитектуры.
- Высокая производительность
Высокая производительность приложений во многом достигается за счёт использования виртуального DOM, имитирующего DOM-дерево. Виртуальный DOM обновляется гораздо быстрее, чем обычная, потому что не включает в себя тяжелые части реальной DOM. Вместо того, чтобы обращаться к DOM API, изменения вносятся в легкую копию, а перерисовка DOM-дерева запускается только в случае, когда состояние одного из компонентов изменилось.
- Серверный рендеринг
В React есть возможность настроить рендеринг на стороне сервера. Это свойство повышает производительность приложения и облегчает индексацию сайта поисковыми системами. Скорость прогрузки страницы — один из факторов, учитываемых поисковыми алгоритмами при ранжировании страниц. Чем лучше производительность сайта, тем выше он поднимается в поиске.
- Многофункциональность
На базе React Facebook создал фреймворк React Native для разработки мобильных приложений под платформы iOS и Android. React Native использует схожую компонентную логику при разработке приложений, а код, написанный для веб-приложения, может быть использован вторично. React используется для создания приложений в соответствии с принципом mobile first.
Сферы применения React
- Социальные сети
React зародился в Facebook — компания частично использует библиотеку в разработке десктоп-страницы и мобильного приложения, в дополнительных инструментах Facebook Ads Manager и Facebook Analytics. В большой степени React применяется в работе над Instagram и WhatsApp — например, в таких функциях, как определение геолокации.
Из других известных компаний, которые применяют React, можно назвать Pinterest и Twitter. Reddit использует библиотеку и в веб-версии, и в работе мобильного приложения.
- Видеоплатформы
Netflix активно применяет React в разработке, чтобы улучшить пользовательский опыт, сократить время прогрузки страниц и повысить их производительность. React используется не только для отрисовки HTML в браузере, но и для отрисовки идентичного HTML на сервере и клиенте. Среди преимуществ библиотеки компания отмечает виртуальный DOM и изоморфность приложений.
- SaaS-компании
Команда разработчиков Asana, приложения для управления проектами, первоначально разработала свой фреймворк Luna. С ростом количества пользователей Asana начала чувствовать недостатки своего фреймворка и переписала фронтенд на React.
Корпоративный мессенджер Slack полностью переписал пользовательский интерфейс с использованием React, что повысило производительность сервиса.
- Образовательные платформы
Платформа по изучению языков программирования Codecademy включила React в свой технологический стек, и это улучшило взаимодействие пользователя с платформой. Библиотека помогает выстраивать логику уроков, интерфейс которых состоит из большого количества компонентов, и по ходу занятия раскладка страницы часто меняется. Один из плюсов, которые отмечает компания, — переход на React не обязательно должен быть радикальным решением. Библиотека хорошо работает с легаси кодом и достаточно гибкая, чтобы её можно было заменить или дополнить другими инструментами в будущем.
Проекты Evrone с использованием React
Cryptopay — интегратор для инструментов платежных систем и транзакций по купле, продаже и обмену криптовалют.
Prism — веб-приложение и расширение Google Chrome для сохранения и управления визуальными закладками и ссылками на сайты. На фронтенде команда использовала React.
iGooods — сервис доставки продуктов. Мы разработали веб-приложение, единое для для клиентов, агентов и курьеров, которое одинаково хорошо работает на любых устройствах.
Work&Play — BI-платформа для геймификации рабочего процесса и мотивации сотрудников.
Где искать React-разработчиков?
Чтобы найти сильного React разработчика, используйте сразу несколько платформ для размещения вакансии. Если вам нужно решить разовую задачу, рассмотрите возможность отдать проект на аутсорс или нанять удалённую команду React JS разработчиков через агентство.
- Рекрутинговые сайты
Сайты с вакансиями и резюме, вроде hh.ru и «Мой Круг» — это работа сразу по двум направлениям. Компания и размещает вакансию, и получает доступ к базе резюме для самостоятельного поиска подходящих разработчиков на React. Это универсальные платформы, где можно не только найти сотрудника — на удалёнку или в офис, но и узнать зарплатные ожидания программистов на React и охватить сразу большое количество кандидатов.
- Тематические сообщества
Онлайн-комьюнити — неотъемлемая черта каждого языка программирования. В случае с React вакансию можно разместить и в тематических чатах, и в общих frontend-сообществах. Например, в следующих slack-чатах: ReactJS, All That JS, JavaScript или Fronthub.
- Телеграм-чаты
Часто более живое сообщество, где вакансия получает больший охват и отклик. Вакансию можно опубликовать в следующих сообществах: JavaScript — русскоговорящее сообщество, JavaScript Jobs — чат, React — русскоговорящее сообщество, React Native — русскоговорящее сообщество.
- Конференции и митапы
React — это популярная технология. Поэтому в разных городах проходят посвящённые ей тематические митапы, а на frontend-конференциях под неё обязательно отводится как минимум один блок или выступление. Если позиция frontend-разработчика для компании серийная, имеет смысл быть представленным на конференции, стать партнёром и активно участвовать в формировании react-сообщества.
- Рекрутинговое агентство
С вакансией всегда можно обратиться в рекрутинговое агентство и делегировать поиск react-разработчиков рекрутерам, но за компанией сохранится функция оценки и проведения технических собеседований. Такой формат работы подойдёт, когда нет человека, который смог бы взять на себя задачу целиком. Или в случае, если компания готова перевозить сотрудников из регионов и помимо технических вопросов необходимо обсудить и бытовые аспекты трудоустройства.
- Аутсорс агентство
Аутсорсинг проекта — это возможность закрыть бизнес-задачу целиком и при этом не переживать, если потребуются компетенции из смежных областей, не тратить время на обучение сотрудников и выстраивание коммуникации. При работе с аутсорсинг-агентством вы получаете сработавшуюся команду, которой будет управлять опытный тимлид.
В этом случае компания тратит время на поиск агентства и обсуждение проекта, но подготовительный период в любом случае короче, чем при поиске сотрудников в штат, проведении собеседований, обсуждении условий и онбординге.
- Взять сотрудников на аутстафф
Главное отличие аутстаффинга от аутсорсинга — агентство не закрывает задачу, а выделяет компании дополнительных сотрудников для её решения. Аутстаффинг позволяет подкорректировать работу с разработчиком под собственные нужды. Это может быть долгосрочный проект или задача на пару недель. К компании может присоединиться один программист, команда React-разработчиков, тимлид или CTO, который поможет отладить процессы. Полный контроль над командой и работой остаётся у компании-нанимателя.
Что должен знать React-разработчик и как спросить об этом на собеседовании?
На рынке нет недостатка в программистах на React, поэтому сложность состоит не в том, чтобы найти, а в том, чтобы правильно оценить способности кандидата и понять, соотносятся ли они с потребностями компании. Приведём примеры вопросов, которые стоит задать во время собеседования react-разработчику:
- Основы JavaScript
React-разработчик должен хорошо знать базу — HTML и CSS. React — это JavaScript-библиотека, поэтому программист должен быть знаком с синтаксисом JS, механизмами, характерными для языка, API разных версий JavaScript. Примеры вопросов:
- В чём отличие нативных-объектов от хост-объектов?
- Что такое неизменяемость (иммутабельность)? Приведите пример неизменяемых объектов в JavaScript.
- В чём разница между ES5 и ES6 конструкторами?
- Какие инструменты для сборки и автоматизации вы используете? В чём их преимущества перед альтернативными вариантами?
Знание React
Примеры вопросов на знание библиотеки и понимание парадигм:
- Чем React отличается от других JavaScript-фреймворков?
- Какие существуют фазы жизненного цикла компонентов React?
- В каких случаях вместо Functional Component вы используете Class Component?
- Опишите, как происходит обработка событий в React?
- Каким образом React JS использует ключи?
- Как работает метод render() в React?
- Что такое PropTypes и как их использовать?
- Какие существуют React-хуки (Hooks) и как они работают?
Дополнительные инструменты для работы с React
React, как правило, не применяется в чистом виде. React-программисты используют дополнительные инструменты — например, пакет модулей Webpack, библиотеку Redux, транскомпилятор Babel, менеджер пакетов npm. Примеры вопросов на знание этих инструментов:
- Как изменяется состояние в Redux?
- Какие проблемы решает Webpack?
- Что такое Babel и для чего он используется?
Чтобы оценить грейд разработчика, проследить за ходом его мыслей во время решения проблемы, спросите о предыдущих проектах. Senior-разработчик способен смотреть на проект на уровне архитектуры, брать на себя решение проблемы, а не только выполнение локальной задачи. Примеры вопросов:
- Какова была ваша роль в последнем проекте?
- Что было самым сложным, а что не вызывало затруднений?
- Какие инструменты использовали для решения бизнес-задач компании?
- Участвовали ли вы в принятии продуктовых и технических решений?
- Есть ли у вас опыт управления командой и менторинга молодых специалистов?
Инхаус-команда, аутсорс или аутстафф?
Вывод: если вам нужен сотрудник на долгое время и вы точно сможете обеспечить ему равномерную нагрузку, стоит брать разработчика в штат. Если задач у вас на пару месяцев и работа носит в основном проектный характер, выбирайте аутсорс или аутстафф. Еще заранее подумайте о менеджменте: если на вашей стороне нет грамотного CTO, лучше обратиться в агентство.
Процесс найма React разработчика
Процесс найма зависит от того, есть ли у вас команда, которую просто нужно дополнить react разработчиком на аутсорсе или же вы хотите собрать команду с нуля и обращаетесь к нам за технической экспертизой.
Расскажите, для какого проекта вам нужен react разработчик, и мы решим вашу задачу
Мы работаем над интерактивными интерфейсами любой сложности, запускаем мобильные приложения на IOS и Android с использованием React Native. Напишите нам о своем проекте, и мы обсудим, как наша команда может усовершенствовать существующие решения или создать новые. Мы обладаем достаточным опытом и экспертизой и готовы присоединиться к проекту на любом этапе.