DEV Community


Posted on

Node.js Certification: first impressions

After a few years from the announcement, The OpenJS Foundation officially started the Node.js Certification Program.

The program consists of two certifications:

The beta version of the exams became available in September 2019. I had a chance to take part in it and passed the JSNAD. In this post, I would like to describe my impressions and give you some tips for the exam.

Disclaimer: You won’t find here any tasks, content, questions, answers, or code exercises from the exam. Due to the OpenJS Foundation Certification and Confidentiality Agreement, I am not allowed to share such information.

First, I’m surprised that the exam is not a quiz or a test, where all you need to do is to select the checkbox with the correct answer or type the function name. There are many certifications, where you need to memorize a lot of stuff, or they check if you find a typo in the code example. For such exams, there are many so-called braindumps on the internet; it’s possible to memorize them and pass such exams without any previous knowledge or experience. On the contrary, The Node.js exams are in the form of the practical lab, in which you need to solve tasks by writing real code.

Secondly, you don’t need to memorize the whole Node.js API. You can use the Node.js, the npm, and even the GitHub website, but you are not allowed to use StackOverflow and other similar forums. It doesn’t mean you don’t need to prepare for the exam, and you can simply copy/paste from these pages. You still should have a good knowledge of the whole Node.js ecosystem and concepts. For instance, if you don’t know how the Node.js streams work, you would probably waste too much time if you tried to learn it during the exam. Remember, you have only two hours to finish all the tasks, and in my opinion, it’s not very much for this exam.

As I mentioned before, the exam has a form of a lab. You get remote access to an environment with Linux, Node.js, VSCode, and a web browser. You also have access to the terminal. One drawback I noticed is that it is slower than working on a local machine; I lost some time because of occasional delays when I was opening a file or switching to the browser.

The advantage is that you can take the exam from your home or office. I find it much less stressful than making an appointment and taking an exam in a local testing center. Don’t forget that you will be observed during the exam (remember to clean your desk before the exam 😉)

The OpenJS Foundation states this exam has an intermediate level, and I agree with that. On the one hand, the coding tasks are rather simple; on the other hand, not all the tested topics are used daily (at least I don’t use them).

Here I collected some tips for you:

  • Read the exam scope here and learn all the listed concepts. Write a lot of code; try to create small real-world examples. The exam doesn't check your ability to remember all Node.js functions, but whether you can solve a coding exercise.
  • Go through the core Node.js API, focus on streams, buffers, the event system and child processes. As described in the exam details they are the most important topics.
  • Please go through the Node.js CLI commands and flags, but don't memorize all of them! When I was preparing for the exam, I came across some flags I've never used before, even in large commercial projects.
  • Learn package.json – fields, types of dependencies. It’s a practical exam, so you must know how to install a concrete version of a package. Don't forget to learn how the symantic versioning (semver) works.
  • It’s a Node.js certification, but your Javascript knowledge can also be tested. In the exam description, there is a point called "JavaScript Prerequisites". So, it’s a good idea to refresh basic Javascript concepts like scopes, prototypes, closures, etc.
  • Have you ever unit tested your code? Not great, not terrible 😉. Pick one of the popular frameworks like Mocha or Jest and learn basics, for example, basic assertions. Because of Node.js asynchronous nature, you have to know how to test asynchronous code, for example, a function that returns a promise or expects a callback.
  • Don’t forget to check if your code works! I know that it sounds obvious, but taking an exam is a stressful situation; the time is counting down, and we want to get all tasks done as quickly as possible. You have access to the terminal, and you can run your code.

Do you have any questions? Leave a comment below. If you liked this article, please tweet it.

Top comments (26)

terary profile image
Terary Chambers

Great tips.

I have only one additional recommendation.

Someone preparing for the test really should practice using a similar environment, virtual machine, CentOS, vscode. Make sure not to allocate too much resources (so that it runs slower, similar to network degradation).

Someone that can write code that uses setTimeout + promise + stream + test
via slow virtual box will be well prepared. Of course, this is in addition to all the other recommendations.

ouarrich profile image

Hi @kryz ! Thanks for sharing you knowledge. I am preparing for the JSNAD and I came through NodeSchool site which contains intersting workshops about some of the exam's topics.

If you don't mind I just wanna know if the exam's tasks are presented like these workshops tasks? (e.g stream-adventure workshop).

Thanks in advance.

afkhalid profile image
Ahmed Fathy Khalid

Thanks for sharing this info. What are the best materials I can use for the exam preparation?

kryz profile image

There a few good books, for example "Node.js Design Patterns".

I have started to prepare a list of free online articles/books/videos: The list should be complete by the end of December 2019.

oziniak profile image
Oleh Ziniak

Hey Kryz, Thanks for the great article! I know it's a rather silly question, but how would you estimate a time needed for preparation for passing this certification for a front end dev, who barely worked with a back end? Thanks!

kryz profile image

Hi Oleh,
let's go through the exam topics list:

  1. Buffer and Streams – 11%
  2. Control flow – 12%
  3. Child Processes – 8%
  4. Diagnostics – 6%
  5. Error Handling – 8%
  6. Node.js CLI – 4%
  7. Events – 11%
  8. File System – 8%
  9. JavaScript Prerequisites – 7%
  10. Module system – 7%
  11. Process/Operating System – 6%
  12. Package.json – 6%
  13. Unit Testing – 6%

I assume you have a good knowledge of Javascript, asynchronous flow, events. You also test your code. If I'm right, the topics: 2, 5, 9 and 13 shouldn't be a problem. If you work with modern technologies and use npm to install dependencies you should already know 12.

4, 6, 7 are quite easy. In my opinion the biggest challenge for a frontend dev are 1, 3 and 8.

Of course it's hard to say how much time you need, it depends on your experience...

oziniak profile image
Oleh Ziniak

Fair enough! Thanks for your answer.

inigogb profile image
BaronVonHex • Edited

Thank you for sharing your experience! I'm considering taking the JSNAD exam so your opinions are really helpful :)

kryz profile image

Hello Inigo,
if you need more information about the exam or help with Node.js, contact me. I am also planning to publish something like "Prepare for Node.js certificate" series.

mannyluvstacos profile image

Hi @kryz !

I am preparing for both the JSNAD and the JSNSD exams (taking the JSNAD first then JSNSD) and I was curious of any updates on the "Prepare for Node.js certificate" series?

Thank you for sharing your Github repo with all the Node.js resources, much appreciated :)

I saw that the LinuxFoundation has some training courses/materials for both exams, do you have any insight/opinion on those courses?

They're currently discounting Node.js courses/exams by 60% (till July 9th 2021, code: NODEJS60, sharing for others, like me, who could use the price reduction) and would be willing to spend the extra resources to take prep courses from LinuxFoundation, but if the material is easily compiled myself, I may just save myself the 200$USD.

I look forward to hearing back!


ocalde profile image
Oscar Calderon • Edited

Currently I'm getting prepared for taking the JSNSD in a month. I just have a couple of doubts regarding how things work during the exam:

  • What OS did you use? Did you have any issues when connecting to the remote environment? I've read several complaints about the plugin used by examslocal website, so just wondering to get the right OS (Mac or Windows) to take it
  • Were you able to full screen the remote environment? Currently I'm practicing with a VirtualBox VM at 1024x768 to get used to limitations, but if I will be able to get it full screen, that will be better
  • Is it possible using an external display as the main one, to have a laptop at one side for the webcam?
carltondickson profile image
Carlton • Edited

@Kyrz Is there a recommendation for which certification to tackle first in terms of difficulty.
Is there anything you've come across that explains the thinking behind 2 tests?
Thanks for this article by the way, really helpful.

kryz profile image

I find the level of difficulty similar. I would start with JSNAD.

ocalde profile image
Oscar Calderon

Hi @kryz , great article!! My employer just purchased JSNSD for me, so I'm starting to get prepared! I've been working mainly a little bit on ReactJS and JAVA, have worked with ExpressJS in the past on a basic level.

Not sure if you are allowed to say this (due to Confidentiality Agreement) but, for exposing REST APIs do you use a framework like ExpressJS? Or do they expect you to do everything in the vanilla way (checking the URL segment and request method to route the action to do)?
Thanks in advance.

darchanjo profile image
David Archanjo

Hey Kryz,

First off, great article!!

Could be an dumb question but I'd just wanna know how the tasks are presented and how we're expected to complete them. I owned some certifications and I never came across doing through a lab.

Thanks in advance

kryz profile image

you have a list of tasks with description and folders with task names, where you need to write your code.

ygorsk profile image

Hello All and thank you for your comments.

Has anyone taken the JSNAD exam in 2020? Now, they mention, that Webstorm is included as well. Is that true?

Also, how do you connect to the remote machine? Does it all happen in a browser? Or do you use dedicated software to connect to the machine. Do I understand it correctly, that I will connect to a remote graphical Linux desktop, where I can launch terminal, node CLI and Webstorm/Visual Studio Code ?

I have recently taken CKAD exam, but all I used was a remote terminal running in browser and I could write solutions in Vim only.
So I wonder, how much I can rely on having a graphical IDE available.

logeekal profile image
Jatin Kathuria

This is so helpful..

Thank you

kryz profile image

Thank you Jatin!

superyaz profile image

Kryz thanks for yours contributions 🧠

kryz profile image

Hello superyaz,
thank you!

ramakunuru profile image

Thanks a lot for this article, very helpful.

rcnespoli profile image
Renato Néspoli • Edited

Hi! Thanks to share your knowledge.
I saw that you are planning to publish something like "Prepare for Node.js certificate" and it's amazing! Waiting for this ;)

lakshayasood profile image
Lakshaya Sood

How to practice streams and buffer? What projects can I create that work with those topics?