Posted in:

One of the most effective ways of learning any new technology is to use it a little bit each day. This way you take in far more than if you simply read tutorials or watch training videos. As an example, by attempting to solve the daily “Advent of Code” challenges in F# in December 2015 and 2016 I made huge strides forwards in my understanding of F#.

So when I came across Wes Bos’ 30 Day JavaScript Challenge, a free 30 day course where you build something in vanilla JavaScript each day, I though it was worth a go. And it proved to be a great decision.

Each day you get a short video to watch, and the associated Git repository contains both final solutions for each day, and a starting point, usually with the HTML and CSS already completed, and the JavaScript waiting for you to fill in.

What impressed me about this course was not only what a great teacher Wes is, but how fun the examples were. From making a drum kit on day one, through to doing cool stuff with the webcam and speech synthesis, he’s managed to make it a really engaging learning experience from start to finish.

Some of the new techniques I picked up were using some of the newer ES6 language features like const and let keywords and arrow functions (which work just fine in modern browsers), as well as how to interact with the DOM using things like document.querySelectorAll and addEventListener without having to fall back to JQuery for everything. There was also some good coverage of the various Array processing methods and helpful tips on debugging in the console.

But actually I probably learned most of all in this course from examining the CSS and HTML, which included techniques like flexbox, transitions and the use of data- attributes. Wes has clearly got a flair for the design side of web development, and the demo apps have got a polished look to them. I certainly picked up a lot of useful techniques.

In summary, I’m really glad I attempted this 30 day challenge. Most days only required 20-30 minutes. And whether or not it’s JavaScript that you want to learn, I’d encourage you to find a learning resource that has you writing code yourself as you progress through. That could be one of Wes’ courses, or a Pluralsight course like my [More Effective LINQ course] which includes programming challenges, or simply attempting problems like Project Euler or Advent of Code in a language of your choice. The amount of great learning resources out there is truly incredible and there’s sure to be something appropriate whatever you want to learn.

Next month I’m hoping to run through some of the Docker exercises at katacoda to help reinforce my knowledge of the Docker command line. Let me know in the comments below what you’re going to do.