Startups are my passion, managing an inspired group of developers is what I do. I do it at Strongloop, and I’ve done it in the past at a series of startups. Startups pose their own unique challenges for hiring – the budget is tight, the deadlines even tighter. Combine this with open source development, and a relatively young technology framework like Node.js, and all of a sudden hiring the right team presents a unique challenge.
- Node.js has an event-based programming paradigm
- The web is going to smaller sensor/message-based infrastructure
- In the end, the majority of the problems we are trying to solve still need to be powered by scalable backend architectures as opposed to UI.
Lets analyze each of these in turn and expose the challenges they present. That should shed light on what to look for in a candidate.
Event based programming
Some of the key differences between Node.js development and the traditional model are centered around the evented model as opposed to the traditional threaded model. In Event based programming, the framework is in control of the flow, as opposed to the traditional threaded model. In the traditional model the developer has to take care of the decision model in the flow, actively code the path of flow and returns, being completely aware of where things go when they are done. The Evented model however, being in full control of the Loop, will mysteriously return to where it will, leaving you crossing your fingers. The challenge then is in composing your logic, in switching from a procedural model to understanding the inputs and reaction models of your system. This is the key.
A good candidate would be able to discuss an evented approach to a traditional problem. Are they able to articulate the categories of applications more suited to Node’s approach? Such as, an application that is I/O bound versus CPU bound. The well-known chat server is a good example. Ask to elaborate on what changes in reasoning are required to put together the code using this paradigm. A good candidate should be able to explain the differences in concurrency models, EventLoop versus Multi-threading, and how they impact scalability.
So that gives us two keys skills to look for in a candidate, ability to compose the code, and test-driven design! Not much different than before I’d say, except a little more nuanced!
You may have noticed that the web paradigm is shifting: we are quickly going from traditional web page load and refreshes to smaller sensor-like messages, quick access to smaller pieces of real-time information. You’ll notice too that we are headed into a world of sensor connectivity, device connectivity and mobile access via open APIs. In the case of Node.js, the world is also open source and made up of smaller modular APIs providing access to a wealth of information. Plus there is an ever-growing module ecosystem out there, I’ve watched its amazing growth – about 30% since the time I’ve been at Strongloop, about 18 months. So, any Node.js developer you hire should be good at working in a development model that provides access to smaller chunks of real-time information.
In general I believe this means a developer who is good with iterative programming, coding to quickly test the waters, writing smaller reusable pieces of code and following API-based development.
Any experience with key modules such as Express, Connect, Async is a definite plus. Experience with github and open source contribution is a high plus. In fact collaborative peer-coding using GitHub, and following the active Node.js community on Google groups and StackOverflow is as important as the candidate’s ability to write code. With a plethora of modules in the module ecosystem, finding existing modules and fixing or patching someone else’s module ends up being a key skill. I’d check the trend of the candidate’s GitHub contributions as well as the quality and quantity. Are they good community members? Do they fix code and practice clean hygiene of feature branches, PRs, and commits?
And if you do find someone who actively contributes to Node core, well, hand over that corner office!
Security, Backend architectures, Training
Node.js is still new compared to other languages so finding the right candidate can be a challenge. There are local Meetups where you might find hackers, as well as experienced Java engineers wanting to make a move to Node.js. Or why not get started with your good old solid Java engineer, who is experienced with large-scale backend architectures, experienced with problems of scale and fault-tolerance, and send them to get some good training? Ready to get started? StrongLoop offers both training and certification for individuals, as well as groups.
- StrongLoop is hiring and always looking to talk to Node.js rockstars to join our team. Drop us a line!
- Need training and certification for Node? Learn more about both the private and open options StrongLoop offers.