A couple of weeks I did my first certification exam ever and I passed! Wihoo! I thought that you who are planning on taking this or any other certification exam could maybe find my experience of value and thus here we are. :)
I approached the whole exam thing mainly as an excuse to learn and refresh my knowledge in web development, starting from the very basics to the more advanced APIs that I hadn’t had the chance to look into, trying to fill in all the gaps that I felt I have had in my web dev knowledge in the past. So this is not going to be an article on how to pass the exam with the least amount of effort possible, no tricks or shortcuts, it is just going to be an article about how I went about preparing for the exam, just plain old studying, practicing, coding, learning and writing a freaking exam XD.
- Implement and manipulate document structures and objects (24%)
- Implement program flow (25%)
- Access and secure data (26%)
- Use CSS3 in applications (25%
which basically means:
- HTML5 web apis: DOM, web workers, web sockets, geolocation, app cache, local storage, session storage, canvas, svg
- XMLHttpRequest and Ajax
- Basic CSS Layout, Flexbox, Grid, CSS Regions
- Transitions, Transforms and Animations
These are some excellent resources I used to learn about the different topics within the exam:
After getting the whole picture and a pretty good idea of what would go into the exam I started getting into specifics, testing stuff, taking notes on my wiki, experimenting with jsFiddle and writing a couple of “more advanced” examples.
Here are some of the resources that I used, and some of the live examples that I wrote in no particular order:
LocalStorage and SessionStorage are two new web apis that allow you to store information for your web applications locally in your user’s browser.
The new geolocation api lets you to tap into a user’s location from the browser and even get updates whenever a user moves from one place to another.
The Application Cache api gives you all the tools you need to create pure offline experiences for your web applications.
- A Beginner’s Guide to the Application Cache
- Using the Application Cache at MDN
- Offline Web Applications at Dive Into HTML5
Scalable Vector Graphics support for the browser. Great for the many-devices-reality we live in today.
A sockets API for the web. We are no longer limited to using HTTP in our web applications.
- Barbarian Meets Coding Wiki: Web Sockets
- Web Sockets Example on JsFiddle
- Introducing Web Sockets: Bringing Sockets to the Web
- WebSockets at MDN
Multithreading in the browser, perform computing or I/O expensive tasks in the browser without affecting the UI thread and the User Experience of your web applications.
Play Audio and Video natively in the web.
- Barbarian Meets Coding Wiki: Media Controls
- Example on JsFiddle
- Using HTML5 Audio and Video
- Dive Into HTML5: Video on the Web
Improved semantic elements for modern web applications.
Better forms for modern web applications.
- Basic flow structures
- Prototypical inheritance and OOP
- Exception Handling
- Regular Expressions
- Asynchronous programming, callbacks and promises
The most traditional API used to perform HTTP requests from the browser to the server.
- Barbarian Meets Coding Wiki: XMLHttpRequest and Ajax
- XHR example on JsFiddle
- [WHATWG XMLHttpRequest Spec](WHATWG XMLHttpRequest Specification Standard)
- Using XHR at MDN
- [XHR API at MDN](XMLHttpRequest API at MDN)
- Also focus on the JSON API and parsing and serializing XML (yes, for real xD)
The basics of CSS Layout, the box model,
A great API for creating flexible layouts that adapt to multiple devices.
- Barbaric Basics: Building Flexible Layouts With Flexbox
- Flexbox Playground
- A Complete Guide to Flexbox at CSS-Tricks
- Using CSS Flexbox at MDN
- W3C Flexbox Spec
- Solved By Flexbox
The most foundational api to do responsive web design.
A native grid layout for the web.
Native multicolumn layout for the web.
An interesting API to separate semantic HTML from structural HTML.
APIs for animating the web.
- CSS Wiki at Barbarian Meets Coding
- Example of Transitions in JsFiddle
- Example of Transforms in JsFiddle
- Using CSS Transitions at MDN
- Using CSS Transforms at MDN
- Using CSS Animations at MDN
If you haven’t been in contact with jQuery before, you can get a nice overview at the Microsoft Virtual Academy with the Introduction to jQuery course. Otherwise, you can get a quick refresher from the jQuery learning portal and focus on:
- DOM traversing and manipulation
- Handling DOM events
- Ajax and Forms
Once you grok these topics you can, optionally, get a feeling for how the exam experience will be like by doing some practice exams. There a series of companies that specialize in offering this kind of service for different certifications and, in my case, I used MeasureUp which I found recommended at the certification page. For around 60 Euro you get a month to make as many practice exams as you want and get comfy with the environment in which you’ll do the exam. It is not strictly necessary but it is nice if you like to be prepared XD.
I signed up for the exam at a local exam provider but you can also do it via the certification page, just click on Schedule The Exam and follow the instructions. When the time comes, relax, breathe, trust yourself and kick ass.
Before I went for the local test center option I tried the online proctored exam, which is to say, the possibility to do the exam from the comfort of my home. It didn’t work at all for me even though I tried with two different web cams on two different PCs. My recommendation is that, if you want to do it this way, be very thorough with the test software that they will provide to test your system, and if you have any doubts don’t even bother since they are very strict during the admission to the exam.
Once you pass the exam, you’ll get an email from Microsoft with how you can make the most out of your certification. Enjoy your Victory! XD
And that’s all! If you are planning to take the exam soon, good luck and godspeed! :)
Written by Jaime González García , dad, husband, software engineer, ux designer, amateur pixel artist, tinkerer and master of the arcane arts. You can also find him on Twitter jabbering about random stuff.