When hiring Node developers, far too many product companies target a narrow skill set that directly corresponds to their project. But is this a wise approach? Well, it sure makes things easier for your candidates…
The dev crew at DedicatedTeams has several Node.js professionals onboard. They’ve gone through dozens of Node.js interviews — both as candidates and as interviewers — and they have a ton of experience to share.
For this post, I’ve asked our Node guys to provide me with a comprehensive list of skills they look at when interviewing Node.js developers for hire. For the sake of clarity, I’ll divide the list into three categories: must-haves, nice-to-haves, and advanced.
Must-have skills to consider for a Node.js interview
Let’s start with the things you’d pretty much expect from every hirable Node.js developer. I’m sure you’ll find several points obvious (especially the first one), but hey, some things need to be mentioned for the sake of order ?. Without further ado, here are the must-haves:
- MVC frameworks. These are intrinsic to the Node.js ecosystem, but their sheer number may seem overwhelming. Many experienced Node engineers argue that Express is “the One Framework to rule them all” — and a must-learn for newcomers to Node.js. Other mainstream options include:
- Sinatra-like: Express, koa.js, hapi, total.js, flatiron, locomotive, Flicker.js.
- Rails-like: Sails.js, Nodal, geddy, Adonis, Compound.js, Trails, RhapsodyJS.
- Full-stack: Meteor, Keystone.ls, Mean.io, Mean.js, Horizon, Feathers, Derby.
- Expertise in relational and/or noSQL databases is another fundamental competency. Again, there are several popular options used with Node.js:
- Relational: MySQL, PostgreSQL, MariaDB, SQLite.
- NoSQL: MongoDB, CouchDB, Orchestrate.
Given the mature age of Node, it’s perfectly sane to aim at hiring a Node.js developer who’s comfortable with, at least, a couple databases.
- Error-handling skills. First and foremost, this includes knowing when to crash and when to log an error and continue or retry.
- The nuts and bolts of asynchronous programming. Seasoned Node.js engineers will agree that Node.js is all about asynchronous programming and knowing its workarounds. So don’t forget to check for knowledge of these workarounds when conducting your Node.js interview.
- Scalability design principles. When hiring a senior Node.js developer or a team lead, it’s a must that you check their understanding of fundamental design principles behind scalable applications. In many cases, however, you’d want your middle-level candidates to be familiar with these principles.
- Solid experience with Git and Github. This one if another point from Captain Obvious, and the last must-have for every programmer that you’d want to consider as a prospective member of your production team :).
Nice-to-have skills for hirable Node.js developers
See the list below and you’ll notice that the “nice-to-have” section includes quite a few competencies that many would find essential.
Still, lack of some of these skills shouldn’t serve as a red flag for interviewers. Most of the skills listed below can be picked up by any hirable Node.js developer within weeks. As for those that take longer, they’re not that crucial.
- Expertise in other server-side technologies like .Net, Java, Ruby, and PHP. While Node is a mature technology, good specialists with 3+ years of enterprise background in Node are still hard to find. If that’s the challenge you’re facing, background in other server-side technologies can prove essential.
- Experience with npm, as well as task runners, such as Gulp, Grunt, Broccoli, Brunch, etc.
- Working knowledge of test-driven development. TDD is awesome, but let’s be honest, not every project out there is using it. Still, every good developer should be able to write basic unit tests.
- Experience with latest Node and ES6 features, as well as Babel. Sure, the release of Node v6.0.0 happened almost a year ago, and ES6 is so old it’s not even the latest finalized edition of ECMAScript. However, both a relatively easy to catch up with.
- Server-side templating languages/engines such as Jade, EJS, etc. Other options include Mustache, Underscore, and HandlebarsJS.
- Expertise in user authentication and authorization between multiple systems or servers.
- Ability to integrate multiple data sources and databases into one system.
- Knowledge of the Twelve-Factor application manifesto and experience of working in teams that follow it. According to one of our senior Node devs, this is a “+10 to the skillset of any software developer”:).
- Understanding of how Semantic Versioning works. Just like in case with the precious point, you should consider this one as a must when hiring a lead Node.js developer.
- Prior experience with the implementation of automated testing platforms, as well as continuous integration and continuous development (CI/CD).
- Working experience with server-side CSS preprocessors (Sass, LESS, and Stylus) and familiarity with React, AngularJS, PHP, jQuery, etc.
Bottom Line: anything else you’d like to add?
Have you ever had this nagging feeling as if you’re forgetting something? I guess, trying to make a comprehensive list of anything always leaves you with a feeling of this sort…
So is there anything else I should’ve included into this list? Maybe, there are other skills that you target when interviewing Node.js developers for hire? In case you’d like to see a particular skill added to this list, leave a comment!