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?
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
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 considering a React Native developer’s experience, 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
5. React Native glossary for technical recruiters
ECMAScript2015 (aka ES6), ECMAScript2019 (aka ES10)
React Native libraries
React-Router, Redux, Redux-Thunk, Redux-Saga, GraphQL
Tools that help maintain code style
ESLint, TSLint, Prettier
5.1 What technologies to look for on a React Native developer’s resume
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’s resume
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?
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 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?
- 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.
Contains following tasks:
2) Programming task [level: Hard] - React Native | Movie Store - Implement an application which allows users to buy all the movies they can imagine.
Contains following tasks:
2) 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.
Contains following tasks:
2) 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.