Taking the OpenJS Node.js Services Developer Certification Exam
Tags: javascript, node, certification
Published: 2021-05-03 16:33:22

> My review on taking the JSNSD (OpenJS Node.js Services Developer) exam, its preparation course, and some useful tips that helped me pass the exam.

![JSNSD Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hlff8t08akm060xlongp.png)

Earlier this week, I set up an isolated corner in my living room and took the 2-hour online exam for the OpenJS Node.js Services Developer (JSNSD) certification.

In this post, I would like to talk about the exam itself, my experience and preparation for it, and discuss if it's worth it for you too.

I won't be sharing information about the exam questions as this is against the exam's confidentiality agreement. However, I will talk more about the experience and the preparation course for this exam offered by the Linux Foundation.

#### Who offers this certificate?

This certification is offered by the [OpenJS](https://openjsf.org/) Foundation, a leading foundation that supports the growth and governance of many NodeJS open source projects such as Node.js, Electron, jQuery, and Webpack.

The exam is delivered through [The Linux Foundation](https://linuxfoundation.org/), which is also known for delivering other popular certificates such as the Certified Kubernetes Administrator (CKA) and the Linux Foundation Certified Engineer (LFCE) as well as other types of certificates. So, this is probably the most legitimate Node.js certification in the industry nowadays.

There are two types of [Node.js certificates](https://openjsf.org/certification/) offered:
 - OpenJS Node.js Services Developer (JSNSD) (**I took this one**)
     - Focuses on creating REST API services and security of your services against malicious user input.
 - OpenJS Node.js Application Developer (JSNAD)
   - Focuses on the core modules of Node.js such as the file system, buffers, streams, child processes.

I'll be talking more in-depth about the JSNSD, but some of the tips would also apply if you take the JSNAD.


#### Exam Format and style

The exam is a performance-based exam (like a practical lab), which means you will take your test on a VM online to write some code and create Node.js applications.

Each task will require you to build a simple Node.js app that implements a specific requirement only (for example, an HTTP method that should return a particular HTTP response and status).

For the JSNSD, you can implement your solution in any way you like. You won't be assessed on how you implement the solution, but on how your application responds to their various HTTP requests.

The exam is 2 hours long, and you will solve it by connecting to a remote desktop Linux environment virtual machine. The VM for the JSNSD is currently using CentOS with a GUI. The VM comes already pre-installed with node, npm, Postman, Visual Studio Code, and even WebStorm IDE. So, you don't need to install anything on the virtual machine you will be testing on.

You are allowed to search on Google and browse any Node.js documentation through the chrome browser of the remote desktop. You can access any documentation, npm modules docs, and even GitHub. However, StackOverFlow and other Stack Exchange websites are blocked during the exam.

#### Motivation for the exam and its value

I've been using Node.js for over four years, both at work and on my side projects.

I first heard about this certification from Twitter early in 2020, and what greatly interested me was the style of the exam. I thought it would be an exciting challenge to try out, so I decided to take the JSNSD because it's more in line with what I work with more often.

I've read online about some people who have taken one or both certificates to improve their Node.js skills or because their employers asked them (for whatever reason). At the moment, I haven't found any information if this certificate brings a lot of value to the employer as there is no organizational benefit (partner benefits) to the company if their engineers held this certificate.

I usually think that coding skills are better validated by building a challenging project instead of doing a certification in some scenarios.  However, I don't want to ignite the debate of whether coding languages certifications are worth it. I would compare these Node.js certifications to the Java associate certifications from Oracle. Some people have found great value by being Java certified in helping them at least get their foot in the door for an interview. The Node.js certifications are barely two years old, so they are not as well known in the industry as the Java certifications, but they might still be a good conversation starter in an interview.


#### Exam and companion study course cost ($$$)

So, the reason I talked about motivation and value above is because the cost of this certification is an eye-watering USD 300, which is quite expensive for someone who will pay for it from their pocket (like me). If you decide to buy the preparation companion course, you can buy the [bundle](https://training.linuxfoundation.org/training/node-js-application-development-lfs211-jsnad-exam-bundle/) which costs USD 499 in total at the moment of writing this blog post. This price is for one of the certificates (either the JSNSD or JSNAD).

Thankfully, I bought this exam (and course) at a massive discount during a sale season run by The Linux Foundation. The last discount they had in early April 2021 was offering the exam for $99. They also offered both the exam and preparation course bundle for $149. So, I strongly suggest subscribing to The Linux Foundation email updates and wait for their next sale season, or [convince your boss](https://training.linuxfoundation.org/training/convince-your-boss/?id=bundle-12583) to pay for it.

When you purchase the exam, you get a voucher that is valid for one year. You can schedule your exam anytime during this year. You also get a free retake if you fail your first attempt at the exam.

If you also purchase the course, you will get 1-year access to the course.

Before you buy the exam, make sure you read the [list of faqs](https://docs.linuxfoundation.org/tc-docs/certification/faq-openjs) for Id and system requirements and whether you are not currently living in a sanctioned country.

#### Preparing for the exam

Initially, when I bought the exam, there was no companion preparation course, so I referred to their list of [suggested references](https://docs.linuxfoundation.org/tc-docs/certification/faq-openjs#is-there-training-to-prepare-for-the-certification-exam), which included:

- [Node Cookbook](https://www.packtpub.com/product/node-cookbook-fourth-edition/9781838558758)
- [https://nodeschool.io/]( https://nodeschool.io/)
- Node.js documentation
- Any Node.js web framework documentation

However, while I read some chapters and sections from the above resources, I procrastinated on reading more. I didn't feel confident enough whether I knew everything they were going to test me, and information was scarce. A few months later, The Linux Foundation launched a couple of training courses for these exams, so I bought the [Node.js Services Development (LFW212) course](https://training.linuxfoundation.org/training/node-js-services-development-lfw212/) and studied it.

The course was sufficient for me as the only study material I needed for the exam. In total, it took me a couple of weekends to finish the whole course. The list of chapters is listed on the course page [here](https://training.linuxfoundation.org/training/node-js-services-development-lfw212/). The course is targeted to intermediate-level Node.js developers, so if you are a total beginner to backend and Node.js, it might take you a bit longer.

#### Course review

The course is a written format course (so no video or recordings to watch). It was split into ten chapters with 1 or 2 labs for each chapter. Each lab is a written task (which is similar to the exam task), and you need to download a few JS files that contain some required code for each lab. One of the JS files is a unit testing suite that you can run at the end of your lab to validate if you've implemented the lab requirements correctly.

Here are the pros and cons of the course based on my own opinion:

###### Pros

- I enjoyed the course and mainly because the course [author](https://twitter.com/davidmarkclem) focused on two web frameworks ([Express](https://expressjs.com/) and [Fastify](https://www.fastify.io/)) and implemented most examples in each framework to compare the implementation to each other.

- The author also did an excellent job explaining the memory leak issues that can arise when using the Express framework with async-await (without a try-catch), so he provided the express examples using callback-style functions.

- You have access to the [forum](https://forum.linuxfoundation.org/categories/lfw212-class-forum) to ask questions if you are stuck.

- The course is sufficient for the exam but is still well-rounded enough to cover some basics of REST API design in Node.js.

###### Cons

- For an expensive course, I was hoping that the labs can be solved and validated online rather than downloading all files and setting up my local environment.

- The topics covered in the Web Security chapters are disappointingly basic and limited. Here's what was covered in the course:
    - Preventing HTTP Parameter Pollution
    - Validating API requests and response body and structure
    - Blocking a specific IP from your application on the code level.

- I found the sidebar navigation menu quite annoying as a lot of the sublinks had the same title, so finding a specific part you've read earlier is tricky.

I wish the course had covered more advanced security topics, and the certificate is evolved (or have an advanced level) to test for a broader range of security threats that can affect any Node.js application.

#### Scheduling the exam

Scheduling the exam was straightforward through the Linux Foundation Portal. I just selected a date and time 2 days in advance. The date and time selection dropdown is super slow, but you can see different daily availabilities on different hours once you get it loaded. The test itself is proctored by [PSI](https://www.psionline.com/en-gb/).

You will also be asked to download a specific chrome extension so that the proctor can monitor your screen.

#### Taking the exam

For the exam, I set up an isolated, comfortable free-of-clutter desk in my living room. I logged in 15 minutes before my exam starts and waited for the proctor to show up. The proctor asked me to show my primary ID using the webcam and do a 360 tour of the room with my webcam. After going through some extra screen-sharing checks, I was allowed to start the exam right away.

The remote desktop is accessed through my laptop's Chrome browser tab. The VM's desktop size is viewed full screen on my browser tab. Inside the VM, there is a Chrome browser (which belongs to the VM) that is already open with the list of tasks you have to do. I opened the WebStorm IDE, which immediately opened the list of folders for all of the tasks. I just jumped between each folder in the IDE terminal. I also opened some documentation references via the chrome browser of the VM (not my machine).

The exam went smoothly with no latency issues, and I managed to complete all the tasks in an hour and a half, and I spent the remaining half an hour testing my code again and make sure there were no hiccups.

The results were emailed to me after 24 hours, and I successfully passed the test with a score of 94%. Unfortunately, there is no feedback on the scoring, so I don't know which part I might have implemented wrong.

You also get a digital badge via Credly and a link to a certificate validation tool. The certificate is valid for three years.

![My Desk Setup](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irsq0ns5qw0skjppp8rm.jpeg)


#### Final thoughts

If you are a total beginner to the backend or Node.js, I think the course or exam will be challenging to tackle. If you've already worked with Node.js before, this is an easy exam.

The exam can be an interesting personal learning milestone and help you showcase something to get a first programming job in a Node.js company.

The companion training course is a time saver to help you study faster instead of referring to multiple references. Still, if you want to budget your money and already have some Node.js experience, you can take the exam first as you have a free retake. You can then decide if you want to purchase the course or not.

Nevertheless, I learned a lot from this course. I've worked with Express a lot before, so I primarily learned about Fastify through this course, and I liked it, so now I'll mainly be using Fastify in my future Node.js projects.


#### Tips summary

- Don't forget to cover your Javascript and Node.js basics (e.g., async-await, promises, set timeout, callbacks, package.json, dependencies, npm)
- Learn a framework (e.g., Express or Fastify). Implementing the exam tasks with a [vanilla](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Node_server_without_framework) Node.js server will take you longer.
- Make sure all of your tasks can start running with `npm start` command.
- Don't memorize the code. It's an open book exam, so you can refer to references. However, you will need to study the concepts before. The exam time is not sufficient for you to learn how to implement a GET method if you've never implemented one before.
- If you plan to take both certificates, I would recommend starting with the JSNAD if you want to cover most of the Node.js core modules in your learning.
- **Bonus tip**: The Linux Foundation is currently offering a limited-time offer for you to preview the Node.js Certification Testing Environment. You can get a good feel of how the VM test looks like, and you can do a few sample questions. No proctor, and it's not assessed. You can apply for it [here](https://training.linuxfoundation.org/announcements/apply-here-for-the-node-js-certification-environment-preview-beta/).

I also found a few extra tips in this [post](https://dev.to/kryz/node-js-certification-first-impressions-21a1) helpful.

---

**Thank you so much** for taking the time to read through my article.

If you enjoyed it or have a question, please let me know in a comment below or reach me on [Twitter](https://twitter.com/abbadev).