How to screen React Native developer skills
![React developer skills](https://devskiller.com/wp-content/uploads/2019/11/Screening-posts-21.jpg)
While React gets all of the big press, React Native has steadily become an essential part of the JavaScript universe. It allows mobile developers to write mobile applications that can be ported to both iOS and Android. The advantage of this is that instead of having to develop separate iOS skills (Objective-C and Swift) and Android skills (Java and Kotlin), mobile app developers can draw on JavaScript, the most commonly used language at the moment. But like all tech stacks, it’s not enough to simply know JavaScript. You need to have an in-depth understanding of React Native. So how can employers tell if a React Native developer has the skills they need?
A guide to screening React Native developer skills
This guide will give technical recruiters all the information that they need to screen React Native developer Candidates. Inside you’ll find:
- 1. What is React Native?
- 2. What is React Native used for?
- 3. What is important for an IT Recruiter to know about React Native?
- 4. Technical screening of React Native skills based on a resume
- 5. React Native glossary for technical recruiters
- 6. React Native interview questions
- 7. Technical screening of React Native developer skills using an online coding test
1. What is React Native?
React Native is a framework designed and maintained by Facebook with the aim to simplify the process of developing cross-platform mobile applications, mostly relating to the user interface. It is built on top of another JavaScript library React which has quickly reached the status of the most popular and recognizable tools among fronted developers. But it’s rise has attracted some controversy.
Released in 2015 as an open-source project, React Native quickly divided the community of mobile developers. Before React Native came along, there had been a number of tools displaying web pages written in HTML, CSS, and JavaScript inside a self-contained browser that imitated the native app. If that sounds clunky, you’d be right. They have proven to be a pain to use and have not been very popular.
React Native, on the other hand, avoids taking the same shortcuts as its predecessors. The view hierarchy rendered by the application is completely native to the system it is running on. Put another way, the app looks like it is a native app rather than a webpage. This makes React Native apps indistinguishable from the regular applications written in Swift, Objective-C, Kotlin, or Java. To see it work in practice, check out popular apps like Facebook, Messenger, Instagram, or Discord. Even an expert would have trouble seeing which parts of these apps were written in React Native and which were written using another tech stack.
1.1 The difference between React vs React Native
React and React Native are both open source projects that have been created by Facebook but are not the same thing. React is a JavaScript library for building the front end of web apps while React Native is a framework that provides a unified set of tools for building mobile applications in both iOS and Android. This leads to fundamental differences like the fact that React is rendered in HTML while React Native isn’t. React Native also gives React Native developers the ability to convert or bridge native views written in platform-specific languages like Swift or Kotlin into something usable by React Native.
But despite their differences, React and React Native are remarkably similar, with React Native using a lot of the fundamentals of React. Working with React Native requires using 70-80% of React’s components and practices. Because of this, the learning curve for a React developer to learn React Native isn’t very steep. Still, they are two separate technologies that should not be confused with one another.
2. What is React Native used for?
The biggest advantage of React Native is that it allows the React Native developer to create applications for different platforms without having to learn and use multiple tech-stacks. Facebook calls this approach “learn once, write anywhere.” Their goal in developing React Native is to unify the knowledge required to build mobile applications.
React Native gives developers a declarative way of building user interfaces. In laymen’s terms, this offers a much more gentle learning curve compared to the native UIKit for iOS or Android SDK. This has meant that many app developers use it as a way to get into mobile app development. It has also led to a number of competitor tools like Google’s Flutter or Apple’s recently announced SwiftUI that have been developed using similar principles.
But even though it represents an easy way to get into app development, React Native is the foundation of some powerful apps. Bloomberg, Airbnb, and UberEats are all great examples of apps built with React Native.
3. What is important for an IT Recruiter to know about React Native?
Being still a pretty young framework, React Native is subject to multiple changes with either minor or major impact on the developer’s work. Most of the time, those changes are opt-in and there are little to no hard deprecations that may cause a React Native developer to migrate their codebase.
Due to its open-sourced nature, the roadmap of all the planned changes and improvements is available to the community. With the recent addition of hooks and even more ease-of-life changes planned for the near future, the process of making a mobile application will become even faster and more convenient than ever.
One undeniable advantage of React Native is its broad and helpful community. A lot of questions at all levels have already been answered in either a blog article, an entry on Stack Overflow, or some micro-library posted as an NPM package. There are a lot of resources for beginners to learn and for advanced developers to extend their knowledge.
An important thing to remember though is not to confuse Facebook’s “learn once, write anywhere” approach with “write once, write anywhere”. It is still difficult in React Native to write an app that would work in iOS and Android. This is because there are still a lot of system-dependent features that require splitting parts of your code into separate iOS and Android versions. Still, the goal of React Native is to unify the skills to build apps, not create one app that works on both platforms.
3.1 What experience should a React Native Developer have
When assessing a React Native developer resume, it really comes down to the type of position a candidate is recruited for. Being involved in commercial projects is a must when talking about senior or lead-level positions, as business-related know-how is expected for these roles. For other levels, it does not matter that much. One advantage of open source contributions is that they can give the recruiter additional insight about the code style or the way the candidate interacts with the community. To summarise, it is really important to understand the team’s needs and the responsibilities of the role before starting the screening process.
How to verify React Native skills in the screening phase?
4. Technical screening of a React Native developer’s skills based on a resume
React Native is pretty unique in terms of how people get into it and the backgrounds they come from. Some web developers familiar with JavaScript and possibly also with React itself may want to expand their skill set to include mobile development. Conversely, some native mobile developers may recognize the strengths of React Native’s approach and tooling and would like to leverage them in their day to day work. Both can make a significant contribution to the team, the former bringing JS or React specific patterns and best practices, the latter providing the knowledge about some features and limitations of a mobile-specific environment. It would be good for the recruiter to know what exactly would be the role of the candidate and what skill set is in demand by the team.
5. React Native glossary for technical recruiters
Current JavaScript standards | ECMAScript2015 (aka ES6), ECMAScript2019 (aka ES10) |
JavaScript superset that adds strong typing | TypeScript |
React Native libraries | React-Router, Redux, Redux-Thunk, Redux-Saga, GraphQL |
Package managers |
NMP, Yarn |
JavaScript extensions | JSX |
Tools that help maintain code style | ESLint, TSLint, Prettier |
Test runners | Jest, Mocha |
5.1 What technologies to look for on a React Native developer resume
An important thing to look for is the JavaScript standard the candidate is familiar with. Starting from 2015 with ECMAScript2015 (aka ES6), a new JavaScript standard is being released every year. The current iteration as of 2019 is called ECMAScript2019 (ES10). These different standards can have an impact on the React Native API that the candidate has been using so far.
The most significant change came between standards ES5 (2009) and ES6 (2015). But code written in the newer standards can always be transpired to the older ones using tools like Babel.
5.2 Other things to look out for on a React Native developer resume
A skill that can also be useful for a React Native Developer is TypeScript. This is a superset of JavaScript that uses static typing. Static typing, in general, helps identify some errors in code much sooner (however it won’t replace unit tests in that matter) and allows the developers to express their intents about the public APIs they expose to the public in a more clear and better-structured way.
There are also a lot of ad-hoc React Native libraries focused on solving particular problems like navigation or state management. The familiarity with those is strongly correlated with the types of projects the candidate has been working on. If a candidate lists a library like React-Router, Redux, Redux-Thunk, Redux-Saga, GraphQL, or many others, this could be an interesting entry point of the discussion about the candidate’s previous experience.
6. React Native interview questions
A resume lets you know how a candidate presents their knowledge. But this is not enough to tell you if they have the skills you need. After all, anyone can write anything on a resume. They then need to be questioned about their skills in a phone screen or interviewed after passing the coding skills assessment stage.
6.1 Questions about a React Native developer’s experience
Question 1: Could you describe the applications that you worked on in the past? How did you use React Native in those applications?
Reason: This question should mostly serve as a warm-up for the candidate to open up and take the initiative to talk about their general experience. It’s important to ask how React Native was used by their team as a followup. This allows the recruiter to assess what areas of React Native the candidate may be familiar with – e.g if RN was used in the whole app, or just in some of the screens, was it bridged with native parts written in Objective-C/Java, etc.
Q2: Why did you and your team choose to use React Native? What was the biggest selling point for you? How did it help in applications you’ve worked on?
R: The answer to this question can tell the recruiter several things. It partially shows the position or responsibilities the candidate had in their team – were they involved in the decision-making process? And even if not, are they aware of the key React Native purposes that might have sold the idea to their peers? That also shows if the candidate is able to make a technical decision based on the business requirements of the applications he worked with or if they are just following the trend.
Q3: How did you handle state in those applications? How did it work out?
R: This is a slightly more technical question. Since React Native in its core is just the user interface layer, it is important to know what was the candidate using to fill the remaining blanks, one of which is state management. This has the potential to open up the discussion about unidirectional data flow (redux, flux) or handling state from external services (REST, GraphQL). It also gives a sense of the candidate’s ability to assess the pros and cons of the taken approach which is a crucial skill in self-development.
6.2 Questions about a React Native developer’s knowledge and opinions
Q1: What kind of components can one use in React Native? How do they differ? When to use which?
R: This question can be interpreted by the candidate in various ways. The components could be split either into container/presentational or to stateful/pure/functional. It doesn’t matter which way of thinking the candidate shows here, this question is more about the candidate being able to talk about the purpose or boundaries of each preferably in the context of their own experience.
Q2: How do you reuse code in your application? What techniques do you know to share common logic and what is your opinion on them?
R: There are several ways to achieve code reuse, the most popular of which are Higher Order Components, Render Props, Hooks, and Context. Their usage is usually based on the team’s preference so the main point here is for the candidate to explain why they woulduse one instead of the other. It should give the recruiter some sense of how deep the candidate’s knowledge is, an understanding of React Native internals, and how much the candidate cares about clean and maintainable code.
Q3: How do you debug the application? What tools do you use and how helpful are those?
R: Most of a React Native developer’s time is dedicated to read, analyze, and debug the existing codebase. That’s why the skill and knowledge required to debug the app in a proper and efficient way is crucial. The candidate could mention different approaches varying from using plain logs to attaching a debugger to use breakpoints or inspecting the view hierarchy via React Dev Tools. Each of those has some specific cases in which it shines best, so the candidate should also mention an example situation in which it was used. Bonus points for mentioning a unit test that reproduces the bug and making it pass as a way to determine that the bug was fixed and will remain fixed in the future.
Q4: Have you ever encountered any performance issues with your app? What did you use to diagnose them? How did you solve them?
R: React Native’s performance is often brought up by skeptics when it comes to its usefulness. While it is true that it’s easy to fall into some traps causing the frame rate to drop in the process, understanding the React and React Native internals is just enough to mitigate those issues. Candidates can mention techniques like memorization, improvements like pure components or pitfalls like inline functions. These cover a significant portion of the reasons causing the interface to be less responsive. When candidates talk about tools like profiler and concepts like blending and offscreen rendering, it becomes clear that they have faced truly complex issues (probably with animations). The ideal answer should also mention that in order to improve performance, one needs to have a set of metrics to minimize or maximize (like FPS, memory or CPU consumption, etc.) as without them it’s hard to assess if the React Native developer is going in the right direction.
Q5: What about tests? Did you use them? How did they help your team? What kinds of tests did you use?
R: Testing is still a surprisingly controversial topic. Whether one likes it or not, an application has to be tested in at least some way before being sent to production to ensure that new features are working as specified, and more importantly, that the old one didn’t break. Having a strong and dedicated QA team definitely helps with this, but having unit or snapshot tests gives the React Native developer immediate feedback that they can use to fix the code. Tests are a tool for developers that significantly increase their confidence in the changes being introduced to the codebase. A test will capture the moment when the application is working correctly and maintain that correctness from that point onwards. There are multiple JavaScript test runners, Jest being the most recommended in the context of React Native, especially since it comes from React Native’s authors. Additionally, one can use a react-test-renderer to either test behavior of the particular component or snapshot a whole view hierarchy to protect it from unexpected changes.
Q6: How do you maintain the code style among your team? How do you manage the codebase together?
R: This is a lighter question to reveal the candidate’s knowledge of different tools used in the development process. The answers here may be very broad. They can range from Prettier and ESLint, which correspondingly automates code formatting and checks if the written code matches the rules set by the team, to concepts like continuous integration or even version control systems like Git. The candidate might even mention practices like code review. The main goal of the question is to show how and in which way did the candidates collaborate with their teams, and how much of the repeatable work were they able to automate.
6.3 Behavioral questions to ask a React Native developer
Q1: What was the biggest achievement in your career? What was the biggest mistake? What steps would you take to repeat the success or avoid repeating the failure?
R: A pretty generic question but it shows the self-recognition and self-criticizing skills of the candidate. Both are needed in the learning process which is a constant part of being a great software developer.
Q2: How would you handle a situation in which your project has a deadline set for tomorrow, but there are still some features to implement?
R: That is not so hard to imagine at all and there is a great chance the candidate has faced a situation like this in the past. Maybe the candidate tried to negotiate and gain more time to finish the job. Maybe they sat down with the product owner or manager to prioritize the features and stick to some kind of MVP. Maybe they implemented some features in a way that was fast but not very maintainable to gain time and set a reminder to make a cleanup later. There are different approaches and the goals of this question are to show the recruiter if candidates understand the importance of business goals and if they are able to make some trade-offs on the technical level to meet them.
Q3: What resources would you recommend for the junior/regular developer that would allow him to boost their skills? Would you like to mentor such a developer? Have you done that in the past?
R: The answer to this question is an indirect way to check which of those resources the candidate used before and why. This gives the recruiter additional information about the background. The mentoring part can indicate if the React Native developer likes to share knowledge which can also positively impact the team.
Q4: What areas of mobile development or software development that you would like to explore or get more familiar with? Why?
R: This question gives the recruiter a hint or two on what topics might be interesting to the candidate and in which direction the candidates would like to develop their careers. It allows the recruiter to assess if the project the candidate is recruited for would be a good fit.
7. Technical screening of React Native developer skills using an online coding test
A React Native developer resume contains the skills that your candidates say they have and the phone screen gives you an opportunity to check if they have theoretical knowledge of concepts related to React Native development. But just because a candidate has theoretical knowledge, it is not certain that they can apply that to the practicalities of software development. An online coding test can give you a glimpse into how well a candidate can develop an application using React Native.
7.1 Which React Native programming test should you choose?
There are a few options out there but it is important to pick a test that specifically uses React Native, not JavaScript, or React. Here are some guidelines:
- The test mirrors the work your company does
- It is a reasonable length, one to two hours (or even less)
- The sending is automated
- The test can be taken in the candidate’s home
- It checks code quality and edge cases as well as solutions
- The candidate has access to all of the normal resources they use to develop software
- It is an in stack project which not only gives the candidate access to the React Native framework but also the various libraries that are used with React Native
- It is calibrated to match the level of the position
7.2 DevSkiller ready-to-use online React Native developer coding assessment tests
Devskiller’s react Native tests are built on out RealLifeTesting™ methodology to ensure a completely accurate snapshot of the candidate’s skills. The test can be taken in the place and time where the candidate is most comfortable and ready. They have access to any resource they need like GitHub, Stack Overflow, Google, and other React Native libraries. This is a feature, not a bug as it shows the decisions the candidate makes in a natural programming environment. You can see how well the candidate completes the task but also, the decisions they make, business logic they apply, efficiency and cleanliness of their code, and how well they know the tech stack.
You can build your own test or uses one of DevSkiller’s own tests, built by senior React Native experts.
- Tested skills
- Duration
- 107 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of React Native
Code gaps
assessing knowledge of JavaScript, React Native
Programming task - Level: Medium
React Native | Cheeper - a new social media app - Finish the implementation so that basic socializing would be possible.
- Tested skills
- Duration
- 106 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of ES6, JavaScript
Programming task - Level: Hard
React Native | Movie Store - Implement an application which allows users to buy all the movies they can imagine.
- Tested skills
- Duration
- 101 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of ES6, JavaScript
Programming task - Level: Medium
React Native | HR Companion App - Implement an application to help HR department with maintaining the list of job candidates to be evaluated.
- Tested skills
- Duration
- 70 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of ES6, JavaScript
Programming task - Level: Easy
React Native | Ultimate BugTracker - Implement missing features and fix bugs in the application used as an in-house bug tracker of a software house.
Share post