![JSNAD badge JSNAD badge](/blog/2021-02-07/node-appdev.png)
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 example purchases only. As a little bonus, the exam itself comes with a free retake in case 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 a 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 IO, system properties
- Creating Child Processes - spawning child processes in different ways, child process IO
- Writing Unit Tests - creating unit tests with a test runner of choice
Labs cover materials from corresponding chapters and are design in a form of exercises.
Exam structure
Exam duration is 120 minutes consisting of tasks from following documentation chapters:
- Buffer and Streams 11% - Node.js Buffer API’s, 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 performance-base 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 web browser and only one tab to login 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 mins before the scheduled time. I used those 15 mins to get all the necessary setup ceremonies 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 cam from different sides/angles including the seeling 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 login to the remote environment. Upon login, 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 chose (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 per module from 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 hour from completion.
And this is how the real certificate looks like: certificate
Tips
Tips is probably the most important part here.
First and foremost, read carefully candidate handbook. Pay attention to the Exam preparation checklist.
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 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 now waste your time reading task descriptions form 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 suppose to let you know when there is only 20-30 mins 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 were possible via a real node executable. It is available in the command line. If the answer requirers 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 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 (nodejs tutorial).
During preparation go through all the 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
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 is it gives correct results. Take some workshops from nodeschool, especially around streams
and npm
.
Refresh you memory on npm semantic versioning rules. Test you knowledge with npm semver calculator
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 from the first time.
References
OpenJS Node.js Application Developer (JSNAD) certification
Node.js Application Development (LFW211) training
Allowed certification resources