Passing JSNAD certification in one go

As somebody who recently passed JSNAD certification exam, I wanted to share some thoughts about the exam process and preparation tips. It should be useful for those seeking to pass the certification. It is not that difficult. But, as usual, it's all about details.
On January 28th 2021 I was issued a JSNAD certificate of completion. Here is how I got there.
Purchase #
About a year ago I got a promotional email with a discount for the JSNAD certification exam and preparation training (LFW211) bundle. Since the price was discounted, I decided to take advantage of the opportunity and purchased the whole bundle.
The agreement included 12 months eligibility period to finish both the training and the exam. Same applies to exam-only purchases. As a little bonus, the exam itself comes with a free retake in case the first attempt was not successful. 12 months should be enough to prepare. It was more than enough in my case, but it really depends on a person and their schedule.
Training structure #
The training is online, self-paced materials only. You get the material itself in text form and hands-on labs. How to read the material and when to read it is totally up to you. But after a year it's all gone and you won't have access to it anymore. Same for the labs.
The reading itself is much aligned with Node.js documentation and covers following chapters:
- Debugging & Diagnostics - setting up debug mode, breakpoints, inspector
- Key JavaScript Concepts - modern JavaScript syntax
- Packages & Dependencies - npm, versioning
- Node’s Module System - create Node module, import - export
- Asynchronous Control Flow - promises, promise composition
- Node’s Event System - event emitter
- Handling Errors - sync - async errors, uncaught errors
- Using Buffers - buffers manipulation, encoding, decoding
- Working with Streams - streaming data in Node
- Interacting with the File System - files manipulation
- Process & Operating System - process properties and I/O, system properties
- Creating Child Processes - spawning child processes in different ways, child process I/O
- Writing Unit Tests - creating unit tests with a test runner of choice
Labs cover materials from corresponding chapters and are designed in a form of exercises.
Exam structure #
Exam duration is 120 minutes consisting of tasks from following documentation chapters:
- Buffers and Streams 11% - Node.js Buffer APIs, Incremental Processing, Transforming Data, Connecting Streams
- Control flow 12% - Managing asynchronous operations, Control flow abstractions
- Child Processes 8% - Spawning or Executing child processes, Child process configuration
- Diagnostics 6% - Debugging Node.js, Basic performance analysis
- Error Handling 8% - Common patterns, Handling errors in various scenarios
- Node.js CLI 4% - Node executable command-line flags
- Events 11% - The event system, Building event emitters, Consuming event emitters
- File System 8%, Input/output, Watching
- JavaScript Prerequisites 7% - Language fundamentals
- Module system 7% - CommonJS Module System only
- Process/Operating System 6% - Controlling the process, Getting system data
- Package.json 6% - Package configuration, Dependency management
- Unit Testing 6% - Using assertions, Testing synchronous code, Testing asynchronous code
It is a performance-based test exam. That means, implementing solutions to real-world problems within the time given.
This exam is an online, proctored, performance-based test that requires implementing multiple solutions ... The exam includes tasks simulating on-the-job scenarios, and Candidates have 2 hours to complete the tasks.
Experience / expectations #
As the description presents, the exam is online with the proctor monitoring the activity through the webcam. Online means you are going to be using only the web browser. The rest of the applications should be closed. The proctor will inspect your environment via system monitor or top or whatever tool your OS has to show running processes activity. The inspection is performed only once before the exam starts, so make sure you run only the web browser and only one tab to log in to the exam page. The browser control is performed via an extension that you have to have installed beforehand.
You can start the exam 15 minutes before the scheduled time. I used those 15 minutes to get all the necessary setup steps out of the way. Basically, the proctor needs to make sure that your room meets all criteria. So you'll be showing the room via the camera from different sides/angles including the ceiling and under the desk area. The desk should only contain the electronics you need for the exam (PC, laptop, monitor) and nothing else. If the second monitor is present, it could be used to read tasks via the browser page. Nobody else is allowed in the room during the exam and the room itself should be quiet. You are not allowed to cover your mouth with anything including your hands. Also, you are not allowed to read task descriptions with the higher tone voice.
When the exam starts, you are given instructions about how to log in to the remote environment. Upon logging in, you have an option to choose the text editor. It could be VSCode, Vim or WebStorm.
Visual Studio Code, Vim and WebStorm are included as editors in this environment.
With VSCode as my choice (it's my go-to editor on a daily basis), I was presented with a folder of different tasks. Every task represents a folder with the description and answer files. You can read the description in the browser or directly in the editor. Number of tasks varies by module from the exam description, but expect to have at least one task from every module. So you complete the tasks by writing code implementations in the answer file. And that goes like that pretty much for the duration of the exam. The proctor might interrupt you and even give you a warning if you are doing something against the rules. Once you are done, you are logged off from the environment and presented with the optional feedback survey. Exam results are sent to you via an email within 36 hours of completion.
And this is how the real certificate looks like: certificate
Tips #
Tips are probably the most important part here.
First and foremost, read carefully the candidate handbook[3]. Pay attention to the exam preparation checklist[4].
You can use Node.js documentation during the exam, but your proctor might not know that. Ask the proctor for the ability to use the docs and show them this page[5] in case they say "No".
During the exam Candidates may only use the browser within the VM to access Node.js or JavaScript documentation and the documentation of any Node.js ecosystem modules used.
If you do decide to use the docs, make sure you know what you are looking for very well, because time is ticking.
Do not waste your time reading task descriptions from the browser, just use your editor. Switching between browser and editor takes time, and time is ticking.
The environment does not have a stopwatch or anything like that. The proctor is supposed to let you know when there are only 20–30 minutes left. Keep that number in mind. That would be the indication for double checking previous answers and some last-minute quick implementations for those unanswered tasks.
Try running the answer where possible via a real node executable. It is available in the command line. If the answer requires some input you cannot provide, at least run the code with the check option to verify the syntax correctness.
node -c answer.js
Practice using the command-line navigating through different folders and running node executable within them.
Practice implementing solutions using the same editor that you'll be using during the exam. Try not to rely too much on documentation during implementations. Just use your memory and the editor itself. For example, VSCode has autocompletion and comes with declaration files (node.d.ts) installed to provide metadata about Node.js and JavaScript itself (Node.js tutorial[6]).
During preparation, go through all 13 exam modules and find corresponding documentation chapters. Try to memorize examples accomplishing those chapters.
Use external preparation sources. Here is the one that helped me a lot: Node.js Certification Study Guide[7]
Stay focused on practice, not theory, because that's what the exam is testing. It does not really matter how the solution is implemented, as long as it gives correct results. Take some workshops from nodeschool[8], especially around streams and npm.
Refresh your memory on npm semantic versioning[9] rules. Test your knowledge with the npm semver calculator[10]
For node CLI options use man pages. You can use them during the exam as well, but mostly to refresh what you already know in case of hesitation. Time is ticking, remember?
man node
Source code #
Here is a separate GitHub repo for all the practical preparations that helped me
Conclusion #
With the right preparation and enough preparation time, exam becomes more of a practical test of being able to implement solutions within the time interval. Some docs browsing helps, assuming it's a quick one for some specific details, otherwise it drains time. And it is definitely possible to pass on the first attempt.
References
- OpenJS Node.js Application Developer (JSNAD) certification (opens in a new tab)
- Node.js Application Development (LFW211) training (opens in a new tab)
- JSNAD candidate handbook (opens in a new tab) · Back
- Exam preparation checklist (opens in a new tab) · Back
- Allowed certification resources (opens in a new tab) · Back
- VSCode Node.js tutorial (opens in a new tab) · Back
- Node.js Certification Study Guide (opens in a new tab) · Back
- nodeschool.io (opens in a new tab) · Back
- Semantic versioning (opens in a new tab) · Back
- npm semver calculator (opens in a new tab) · Back