Format
Like Platform Developer 2, this certification requires the completion of an exam and Trailhead badges. I took the beta exam - 150 questions over 3 hours and you don't get the section breakdown, just a pass or fail. An added challenge was I took my exam a few days before the UK went into complete lockdown, so I wasn't exactly at my most relaxed travelling to the testing centre. Luckily when I arrived at Stratford, instead of the usual huge crowds of commuters and shoppers at 9am, I pretty much had the place to myself!
The other downside to a beta is that nothing is known about the cert in advance - in this case I didn't know the exam would be pure JavaScript and not cover any Salesforce features. Once I received my beta results it was clear why this was the case - a new Lightning Web Components Specialist superbadge was now part of the certification requirements - a lovely surprise!
Preparation
Like a number of certs that I've taken in the past, a lot of the preparation had actually taken place in the previous months and years in my regular work and side projects. Aura Components, Lightning Web Components, Salesforce CLI plug-ins, node scripts to orchestrate operations and Electron apps all had an element of JavaScript and some, like Electron, were nothing but. So for me it wasn't so much learning JavaScript, but more about brushing up on the areas that I hadn't used for a while and making sure I was up on the latest best practice.
Useful sites for preparation:
- Mozilla Developer Network (MDN)
IMHO by far the best reference site for JavaScript - probably not the place to learn it. - javascript.info
A great site for learning the fundamentals of JavaScript - if you are relatively new to the language this is a must-read - Eloquent JavaScript
A good site for drilling in to the specifics - I particular like the asynchronous chapter, which is the link target here - SitePoint
A wealth of articles on many JavaScript topics - link goes to the page I found most useful - an overview of modules - Another good explanation of asynchronous techniques
- Lightning Web Components Reference
More important for the superbadge, but does cover a lot of key standard JavaScript techniques and best practice - Lightning Web Components Recipes
Again, more important for the superbadge and covers a lot of the areas you need to implement.
The most useful preparation was doing - building command line tools in node or GUI applications in Electron (node again) proved invaluable. I learned about modules to reuse code, asynchronous techniques to interact with the filesystem and other system commands, and context (aka this) because it is fundamental to the language and without understanding how it works you are in a world of pain!
My advice would be to read a book / take a course on Electron - it's a really enjoyable framework to develop against which makes it easy to stay focused.
Focus Areas
Looking back over my study notes, these are the areas that I focused on for the exam - as I took the beta exam and it was several months ago, your mileage may vary if you just cover these!
- Variable naming rules and differences in strict mode
- Data types - primitives, composites and specials
- Operators and the effect of null/undefined/NaN
- Scope, execution context, and the principal of least access - this is incredibly important in JavaScript, so spend time on it!
- Context (and the fact that execution context is different!)
- Explicit and implicit type conversion and what happens when the conversion fails
- Strings - worth spending some time on this as there are a number of methods that do similar things (and sometimes have similar names!) with subtle differences
- Functions - another area to spend time on - functions are first class citizens in JavaScript so can be used in different ways to a language like Apex. Make sure you understand higher order functions, function expressions and don't forget ES6 arrow functions!
- Objects, arrays, maps and how to iterate/enumerate properties and values
- DOM - worth spending a lot of time on this as it will stand you in good stead when writing LWC
- Modules - import and export, importing individual items or as an object, re-exporting from submodules and dynamic module loading
- Events - again, worth spending time on as you'll need this when developing JavaScript
- Error handling
- Asynchronous techniques - callbacks, Promises and async/await. Read up on Promises as they have more methods than .then() and .catch()!
- Debugging
- Testing JavaScript - I've done a lot of work with Jasmine and Mocha in the past, so my study here was around the limitations of testing in JavaScript and the boundaries between stubs/spies/mocks.
- Decorators, iterators, generators - I found generators the hardest to wrap my head around.
- Changing default context with apply/call/bind
- Double bang (!!) - something I hadn't come across before
- Array methods - map/reduce/filter/some/every/find
- Transpilers
- How a newline doesn't always equal a semi-colon
- Switch statements and equality
Other Tips
The usual tips for certs apply here - don't panic if you don't know the right answer - see if you can eliminate some wrong answers to narrow things down, and make sure to mark any that you are unsure about so you can check back later. You won't know everything, so don't get despondent if you get a few wrong in a row.
Related Posts