Ever since Node.js, an event-driven, JavaScript-based platform, was first introduced, the ecosystem around it has grown and matured. Nearly two hundred thousand packages have been developed are being downloaded millions of times every day. It provides a very familiar programming environment yet also offers some unique tools and features required to build robust state-of-the-art web applications.
At Toptal, our clients often look for developers specializing in Node.js — especially after having issues with their previous full-time staff. While Node.js has pitfalls that make it extremely difficult to master, the challenge of finding a truly excellent Node.js developer can be even harder. That’s why, after years of experience vetting thousands of Node.js developers, we’ve come up with a list of important key strategies to use when finding and hiring top developers. Keep these in mind the next time you need one that specializes in Node.js.
Create a Clear Job Description
Communication is the key to a successful hiring process, and it begins with your job advertisement. It’s where potential candidates get their first impression about the opportunity and should, therefore, provide an overview of your company’s culture, benefits and perks and a detailed description of the job. This should include a list of responsibilities, expected skills and qualifications.
Create a template to save yourself time, and make sure the requirements and responsibilities are both crystal-clear and specific. Posting a generic web developer description for your job listing will bring a flood of applications from people who specialize in building front-end user interfaces, or web designers who may not have any programming knowledge specific to Node.js. A top-notch job description should be separated into the following sections: 1) company introduction, 2) job description, 3) responsibilities and 4) skills and qualifications.
Clearly list all the skills that are critical to this position. Proficiency in JavaScript is a necessary skill, for example. A great Node.js developer needs to have a strong grasp on a wide array of technologies (such as server-side template engines, asset preprocessors and pipelines, sophisticated build tools etc.) and should be fluent in architecting modern web applications.
Prepare Relevant Interview Questions
Prepare a pool of interview questions that is relevant to the job. Outstanding developers are often turned off by interview questions that are irrelevant or feel trivial. Additionally, be sure to filter out unfit candidates early on to prevent your technical interviewers from getting overwhelmed. This can be done by testing communication skills and problem-solving ability.
Ask candidates challenging interview questions that are as relevant to your projects and technology stack as possible. Don’t just gauge simple Node.js platform skills. For example, you may ask them to solve a reasonably tricky problem that your existing team may have recently solved in one of your projects.
If you are hiring, but you are not a developer yourself, you may want to leave Node.js interview questions to your technical interviewer. But no matter who handles the interview, make sure that it contains Node.js-specific questions. For example, ask candidates about ways to avoid “callback hell,” how Node.js handles child threads and how it supports multi-processor platforms. Furthermore, asking questions that require the developer to explain complex things in simpler terms is often a fair way to judge their own depth of knowledge on the topic. Can they explain how the event-driven nature of Node.js is fundamentally different from other thread- and process-based platforms like Python and Java?
Search in the Right Places
Starting a random search for Node.js developers in arbitrary places will take you nowhere. To work around the issues of overlapping qualifications of front-end JavaScript developers and Node.js developers, you should look for candidates where their concentration is highest.
- Check for contributors to Node.js packages and Node.js itself. You can find talented Node.js developers by quickly browsing through packages on npmjs.com and their contribution history on GitHub.
- Attend Node.js conferences. Attendees there will often be of the caliber of developer you’re looking for and you’ll be able to start evaluating them as candidates during casual conversation.
- Look in Node.js’ extremely active community. You should consider including Q&A sites like Stack Exchange, freelance sites and popular open source project mailing lists in your search.
Check for Common Mistakes and Best Practices
When it comes to Node.js, shedding the beginner’s label is easy. However, for one to truly understand the potential of Node.js and utilize it without falling into its unique traps, one must be very careful about common Node.js mistakes. Unlike most popular platforms, Node.js programs are quite different in nature and require the developer to keep a number of things in mind to write programs that are not only correct, but are also easy to read and maintain. Look out for these common mistakes:
- Blocking the event loop
- Invoking a callback more than once, deeply nesting callbacks or expecting callbacks to run synchronously
- Assigning to “exports” instead of “modules.exports”
- Throwing errors from inside callbacks
- Assuming number to be an integer datatype
- Ignoring the advantages of streaming APIs
- Not using supervisor programs
Luckily, over time, the community has come up with many approaches to solve common Node.js quirks. Make sure your developer is aware of best practices like checking for errors in callbacks, returning on callbacks, only using try-catch in sync code and creating small modules. RisingStack has a good list to get started.
Real-world Node.js is not easy, and JavaScript skills and a basic idea of Node.js can only take you so far. A robust and performant Node.js application that scales elegantly, on the other hand, is a great testament to its developers’ deep understanding of the platform, unparalleled dedication to quality code and development workflow.
These qualities are difficult to find. Don’t underestimate the importance of the hiring process in your search for an expert Node.js developer.