Преимущество этого заключается в том, что вместо того, чтобы развивать отдельные навыки iOS (Objective-C и Swift) и навыки Android (Java и Kotlin), разработчики мобильных приложений могут использовать JavaScript, наиболее часто используемый в настоящее время язык. Но, как и для всех технических стеков, недостаточно просто знать JavaScript. Вам необходимо хорошо разбираться в React Native. Итак, как работодатели могут определить, обладает ли разработчик React Native необходимыми навыками?
Это руководство предоставит техническим рекрутерам всю информацию, необходимую им для проверки кандидатов на разработку React Native. Внутри вы найдете все, чтобы провести собеседование на должном уровне:
1. Что такое React Native? React Native - это фреймворк, разработанный и поддерживаемый Facebook с целью упростить процесс разработки кроссплатформенных мобильных приложений, в основном связанных с пользовательским интерфейсом. Он построен на основе другой библиотеки JavaScript React, которая быстро достигла статуса самого популярного и узнаваемого инструмента среди фронт-разработчиков. Но его рост вызвал некоторые споры.
Выпущенный в 2015 году как проект с открытым исходным кодом, React Native быстро разделил сообщество мобильных разработчиков. До появления React Native был ряд инструментов, отображающих веб-страницы, написанные на HTML, CSS и JavaScript, внутри автономного браузера, имитирующего собственное приложение. Если это звучит неуклюже, вы были бы правы. Они доказали, что использовать их сложно, и они не пользовались большой популярностью.
React Native, с другой стороны, избегает использования тех же ярлыков, что и его предшественники. Иерархия представлений, отображаемая приложением , полностью соответствует системе, в которой оно работает. Другими словами, приложение выглядит как нативное приложение, а не веб-страница. Это делает приложения React Native неотличимыми от обычных приложений, написанных на Swift, Objective-C, Kotlin или Java. Чтобы увидеть, как это работает на практике, ознакомьтесь с популярными приложениями, такими как Facebook, Messenger, Instagram или Discord. Даже у эксперта возникнут проблемы с определением того, какие части этих приложений были написаны на React Native, а какие - с использованием другого технологического стека.
1.1. Разница между React и React Native
React и React Native - это проекты с открытым исходным кодом, созданные Facebook, но не одно и то же. React - это библиотека JavaScript для создания внешнего интерфейса веб-приложений, а React Native - это платформа, которая предоставляет унифицированный набор инструментов для создания мобильных приложений как для iOS, так и для Android. Это приводит к фундаментальным различиям, таким как тот факт, что React отображается в HTML, а React Native - нет. React Native также дает разработчикам React Native возможность конвертировать или связывать нативные представления, написанные на языках, зависящих от платформы, таких как Swift или Kotlin, во что-то, что может использовать React Native.
Но, несмотря на их различия, React и React Native удивительно похожи, причем React Native использует многие основы React. Работа с React Native требует использования 70-80% компонентов и практик React. Из-за этого кривая обучения React-разработчика для изучения React Native не очень крутая. Тем не менее, это две отдельные технологии, которые не следует путать друг с другом.
2. Для чего используется React Native?
Самым большим преимуществом React Native является то, что он позволяет разработчику React Native создавать приложения для разных платформ без необходимости изучать и использовать несколько технологических стеков. Facebook называет этот подход «учись один раз, пиши где угодно». Их цель при разработке React Native - объединить знания, необходимые для создания мобильных приложений.
React Native предоставляет разработчикам декларативный способ создания пользовательских интерфейсов. С точки зрения непрофессионала, это предлагает гораздо более щадящую кривую обучения по сравнению с собственным UIKit для iOS или Android SDK. Это означает, что многие разработчики приложений используют его как способ заняться разработкой мобильных приложений. Это также привело к появлению ряда инструментов-конкурентов, таких как Flutter от Google или недавно анонсированный Apple SwiftUI, которые были разработаны с использованием аналогичных принципов. Но несмотря на то, что это простой способ начать разработку приложений, React Native является основой некоторых мощных приложений. Bloomberg, Airbnb и UberEats - отличные примеры приложений, созданных с помощью React Native.
3. Что важно знать ИТ рекрутеру о React Native?
React Native - это еще довольно молодой фреймворк, и в него может вноситься множество изменений, которые либо незначительно, либо серьезно влияют на работу разработчика. В большинстве случаев эти изменения являются добровольными, и практически отсутствуют серьезные устаревания, которые могут заставить разработчика React Native перенести свою кодовую базу.
Благодаря природе с открытым исходным кодом, дорожная карта всех запланированных изменений и улучшений доступна сообществу. С недавним добавлением хуков и еще большим количеством изменений, облегчающих жизнь, запланированных на ближайшее будущее, процесс создания мобильного приложения станет еще быстрее и удобнее, чем когда-либо. Одним из неоспоримых преимуществ React Native является его широкое и полезное сообщество. На множество вопросов на всех уровнях уже даны ответы либо в статье блога, либо в записи о переполнении стека, либо в какой-либо микробиблиотеке, опубликованной как пакет NPM. Есть много ресурсов для начинающих и опытных разработчиков, которые могут расширить свои знания.
Однако важно помнить, что не следует путать подход Facebook «учись один раз, пиши где угодно» с «напиши один раз, напиши где угодно». В React Native по-прежнему сложно написать приложение, которое работало бы в iOS и Android. Это связано с тем, что по-прежнему существует множество системных функций, требующих разделения частей вашего кода на отдельные версии iOS и Android. Тем не менее, цель React Native - объединить навыки для создания приложений, а не создавать одно приложение, работающее на обеих платформах.
3.1. Какой опыт должен иметь разработчик React Native
При рассмотрении опыта разработчика React Native все сводится к типу должности, на которую подбирается кандидат. Когда речь идет о руководящих должностях, участие в коммерческих проектах является обязательным, так как для этих должностей требуются ноу-хау, связанные с бизнесом. Для других уровней это не имеет особого значения. Одним из преимуществ предложений с открытым исходным кодом является то, что они могут дать ит рекрутеру дополнительную информацию о стиле кода или о том, как кандидат взаимодействует с сообществом. Подводя итог, действительно важно понять потребности команды и обязанности, связанные с ролью, прежде чем начать процесс подбора ит персонала.
4. Техническая проверка навыков React Native разработчика на основе резюме.
React Native довольно уникален с точки зрения того, как люди попадают в него и откуда они пришли. Некоторые веб-разработчики, знакомые с JavaScript и, возможно, также с самим React, могут захотеть расширить свой набор навыков, включив в него мобильную разработку. И наоборот, некоторые разработчики мобильных приложений могут осознавать сильные стороны подхода и инструментов React Native и хотели бы использовать их в своей повседневной работе. Оба могут внести значительный вклад в команду, первый из них привносит специфические шаблоны и передовые методы JS или React, а второй дает знания о некоторых функциях и ограничениях мобильной среды. Рекрутеру было бы полезно знать, в чем конкретно будет заключаться роль кандидата и какой набор навыков востребован командой.
5. Глоссарий React Native для IT рекрутеров Текущие стандарты JavaScript: ECMAScript2015 (он же ES6), ECMAScript2019 (он же ES10)
Расширенный набор JavaScript, который добавляет строгую типизацию: Машинопись
React Native библиотеки: React-Router, Redux, Redux-Thunk, Redux-Saga, GraphQL
Менеджеры пакетов: NMP, Yarn
Расширения JavaScript: JSX
Инструменты, помогающие поддерживать стиль кода: ESLint, TSLint, Prettier
5.1. Какие технологии искать в резюме разработчика React Native
Важно обратить внимание на стандарт JavaScript, с которым кандидат знаком. Начиная с 2015 года с ECMAScript2015 (он же ES6), каждый год выпускается новый стандарт JavaScript. Текущая версия от 2019 года называется ECMAScript2019 (ES10). Эти различные стандарты могут повлиять на API React Native, который кандидат использовал до сих пор.
Наиболее существенное изменение произошло между стандартами ES5 (2009 г.) и ES6 (2015 г.). Но код, написанный в новых стандартах, всегда можно перенести на старые с помощью таких инструментов, как Babel.
5.2. Другие вещи, на которые следует обратить внимание в резюме программиста
Навык, который также может быть полезен для разработчиков React Native, - это TypeScript. Это надмножество JavaScript, в котором используется статическая типизация. Статическая типизация, как правило , помогает выявлять некоторые ошибки в коде намного раньше (однако в этом отношении он не заменяет модульные тесты) и позволяет разработчикам более ясно и качественно выражать свои намерения в отношении общедоступных API-интерфейсов, которые они предоставляют широкой публике - структурированный способ.
Также существует множество специальных библиотек React Native, ориентированных на решение конкретных проблем, таких как навигация или управление состоянием. Знакомство с ними напрямую связано с типами проектов, над которыми работал кандидат. Если кандидат перечисляет такие библиотеки, как React-Router, Redux, Redux-Thunk, Redux-Saga, GraphQL или многие другие, это может быть интересной отправной точкой для обсуждения предыдущего опыта кандидата.
6. Вопросы для собеседования с разработчиком React Native
Резюме позволяет узнать, как кандидат представляет свои знания. Но этого недостаточно, чтобы сказать вам, обладают ли они необходимыми вам навыками. В конце концов, любой может написать в резюме что угодно.
6.1. Вопросы об опыте разработчика React Native
Вопрос 1: Не могли бы вы описать приложения, над которыми вы работали в прошлом? Как вы использовали React Native в этих приложениях? Этот вопрос в основном должен служить для кандидата разминкой, чтобы он раскрылся и проявил инициативу, чтобы рассказать о своем общем опыте. Важно спросить, как React Native использовался их командой в качестве продолжения. Это позволяет рекрутеру оценить, с какими областями React Native кандидат может быть знаком - например, если RN использовался во всем приложении или только на некоторых экранах, был ли он связан с нативными частями, написанными на Objective-C / Java, и т.д.
Вопрос 2: Почему вы и ваша команда решили использовать React Native? Что было для вас самым большим коммерческим аргументом? Как это помогло в приложениях, над которыми вы работали? Ответ на этот вопрос может сказать рекрутеру несколько вещей. Это частично показывает положение или обязанности кандидата в своей команде - были ли они вовлечены в процесс принятия решений? И даже если нет, знают ли они о ключевых целях React Native, которые могли бы продать идею их коллегам? Это также показывает, может ли кандидат принять техническое решение на основе бизнес-требований приложений, с которыми он работал, или они просто следуют тенденции.
Вопрос 3: Как вы обрабатывали состояние в этих приложениях? Как все получилось?
Это немного более технический вопрос. Поскольку React Native по своей сути является просто уровнем пользовательского интерфейса, важно знать, что кандидат использовал для заполнения оставшихся пробелов, одним из которых является управление состоянием. Это может открыть дискуссию об однонаправленном потоке данных (redux, flux) или состоянии обработки из внешних служб (REST, GraphQL). Это также дает представление о способности кандидата оценить плюсы и минусы принятого подхода, что является решающим навыком для саморазвития.
6.2. Вопросы о знаниях и мнениях разработчиков React Native
Вопрос 1: Какие компоненты можно использовать в React Native? Чем они отличаются? Когда какой использовать? Кандидат может трактовать этот вопрос по-разному. Компоненты могут быть разделены на контейнерные / презентационные или на сохраненные / чистые / функциональные. Неважно, какой образ мышления здесь демонстрирует кандидат, этот вопрос больше касается способности кандидата говорить о целях или границах каждого из них, предпочтительно в контексте своего собственного опыта.
Вопрос 2: Как повторно использовать код в своем приложении? Какие методы вы знаете, чтобы разделять общую логику, и каково ваше мнение о них?
Есть несколько способов добиться повторного использования кода, наиболее популярными из которых являются компоненты более высокого порядка, свойства рендеринга, хуки и контекст. Их использование обычно основано на предпочтениях команды, поэтому главное, чтобы кандидат объяснил, почему они использовали бы один вариант вместо другого. Это должно дать рекрутеру некоторое представление о том, насколько глубокие знания кандидата, понимание внутреннего устройства React Native и насколько кандидат заботится о чистом и поддерживаемом коде.
Вопрос 3: Как вы отлаживаете приложение? Какие инструменты вы используете и насколько они полезны?
Большая часть времени разработчика React Native посвящена чтению, анализу и отладке существующей кодовой базы. Вот почему навыки и знания, необходимые для правильной и эффективной отладки приложения, имеют решающее значение. Кандидат может упомянуть различные подходы, варьирующиеся от использования простых журналов до подключения отладчика для использования точек останова или проверки иерархии представлений с помощью React Dev Tools. У каждого из них есть несколько конкретных случаев, в которых он проявляется лучше всего, поэтому кандидат также должен указать пример ситуации, в которой он был использован. Бонусные баллы за упоминание модульного теста, в котором воспроизводится ошибка, и за его прохождение, чтобы определить, что ошибка исправлена и будет исправлена в будущем.
Вопрос 4: Вы когда-нибудь сталкивались с проблемами производительности своего приложения? Что вы использовали для их диагностики? Как вы их решили?
Когда речь заходит о полезности React Native, скептики часто называют его полезность. Хотя это правда, что легко попасть в некоторые ловушки, вызывающие падение частоты кадров в процессе, понимания внутренних компонентов React и React Native достаточно, чтобы смягчить эти проблемы. Кандидаты могут упомянуть такие методы, как запоминание, улучшения, такие как чистые компоненты, или подводные камни, такие как встроенные функции. Это покрывает значительную часть причин, по которым интерфейс становится менее отзывчивым. Когда кандидаты говорят о таких инструментах, как профилировщик, и таких концепциях, как смешивание и закадровый рендеринг, становится ясно, что они столкнулись с действительно сложными проблемами (возможно, с анимацией). В идеальном ответе также следует упомянуть, что для повышения производительности необходимо иметь набор показателей, которые нужно минимизировать или максимизировать (например, FPS, потребление памяти или ЦП,
Вопрос 5: А как насчет тестов? Вы ими пользовались? Как они помогли вашей команде? Какие тесты вы использовали?
Тестирование по-прежнему удивительно спорная тема. Нравится это кому-то или нет, но приложение должно быть хоть как-то протестировано перед отправкой в производство, чтобы убедиться, что новые функции работают, как указано, и, что более важно, не сломалось старое. Наличие сильной и преданной команды QA определенно помогает в этом, но наличие модульных или моментальных тестов дает разработчикам React Native немедленную обратную связь, которую они могут использовать для исправления кода. Тесты - это инструмент для разработчиков, который значительно повышает их уверенность в изменениях, вносимых в кодовую базу. Тест фиксирует момент, когда приложение работает правильно, и поддерживает эту правильность с этого момента. Существует несколько исполнителей тестов JavaScript, из которых наиболее рекомендуется Jest в контексте React Native, тем более что он исходит от авторов React Native. Кроме того, можно использовать средство отрисовки теста-реакции, чтобы проверить поведение конкретного компонента или сделать снимок всей иерархии представления, чтобы защитить его от неожиданных изменений.
Вопрос 6: Как вы поддерживаете стиль кода в своей команде? Как вы вместе управляете кодовой базой?
Это более легкий вопрос, чтобы раскрыть знания кандидата о различных инструментах, используемых в процессе разработки. Ответы здесь могут быть очень широкими. Они могут варьироваться от Prettier и ESLint, которые соответственно автоматизируют форматирование кода и проверяют, соответствует ли написанный код правилам, установленным командой, до таких концепций, как непрерывная интеграция или даже системы контроля версий, такие как Git. Кандидат может даже упомянуть такие практики, как ревью кода. Основная цель вопроса - показать, как и каким образом кандидаты сотрудничали со своими командами, и какую часть повторяемой работы они смогли автоматизировать.
6.3 Поведенческие вопросы, которые следует задать программисту React Native
Вопрос 1: Что было самым большим достижением в вашей карьере? Что было самой большой ошибкой? Какие шаги вы предпримете, чтобы повторить успех или избежать повторения неудачи? Довольно общий вопрос, но он показывает способности кандидата к самопознанию и самокритике. И то и другое необходимо в процессе обучения, который является неотъемлемой частью отличного разработчика программного обеспечения.
Вопрос 2: Как бы вы справились с ситуацией, когда для вашего проекта установлен крайний срок на завтра, но есть еще некоторые функции, которые нужно реализовать?
Это совсем не сложно представить, и велика вероятность, что кандидат сталкивался с подобной ситуацией в прошлом. Возможно, кандидат пытался договориться и выиграть больше времени, чтобы закончить работу. Может быть, они сели с владельцем продукта или менеджером, чтобы расставить приоритеты по функциям и придерживаться какого-то MVP. Возможно, они реализовали некоторые функции быстрым, но не очень удобным в обслуживании способом, чтобы сэкономить время и установить напоминание о необходимости очистки позже. Существуют разные подходы, и цель этого вопроса - показать рекрутеру, понимают ли кандидаты важность бизнес-целей и могут ли они пойти на компромисс на техническом уровне для их достижения.
Вопрос 3: Какие ресурсы вы бы порекомендовали младшему / обычному разработчику, которые позволили бы ему повысить свои навыки? Хотели бы вы стать наставником такого разработчика? Вы делали это раньше?
Ответ на этот вопрос - косвенный способ проверить, какие из этих ресурсов кандидат использовал раньше и почему. Это дает рекрутеру дополнительную информацию о предыстории. Часть наставничества может указать, любит ли разработчик React Native делиться знаниями, что также может положительно повлиять на команду.
Вопрос 4: Какие области мобильной разработки или разработки программного обеспечения вы хотели бы изучить или узнать больше? Зачем?
Этот вопрос дает рекрутеру пару намеков на то, какие темы могут быть интересны кандидату и в каком направлении кандидаты хотели бы развивать свою карьеру. Это позволяет рекрутеру оценить, подходит ли проект, для которого набирается кандидат.
7. Техническая проверка навыков разработчика React Native с помощью онлайн-теста кодирования.
Резюме содержит навыки, которые, по словам ваших кандидатов, у них есть, а экран телефона дает вам возможность проверить, обладают ли они теоретическими знаниями концепций, связанных с разработкой React Native. Но то, что кандидат обладает теоретическими знаниями, не дает уверенности в том, что он сможет применить их к практическим аспектам разработки программного обеспечения. Онлайн тест кодирования может дать вам представление о том, как хорошо кандидат может разработать приложение с помощью React Адаптивное.
7.1. Какой тест программирования на React Native выбрать?
Есть несколько вариантов, но важно выбрать тест, в котором конкретно используется React Native, а не JavaScript или React. Вот несколько рекомендаций:
- Тест отражает работу, которую выполняет ваша компания.
- Это разумная продолжительность, от одного до двух часов (или даже меньше).
- Отправка автоматизирована
- Тест можно сдать дома у кандидата.
- Он проверяет качество кода и крайние случаи, а также решения
- Кандидат имеет доступ ко всем обычным ресурсам, которые он использует для разработки программного обеспечения.
- Это проект в стеке, который не только дает кандидату доступ к фреймворку React Native, но и к различным библиотекам, которые используются с React Native.
- Он откалиброван для соответствия уровню положения