This blog post was written in English to reach more people. I’m making a French training to learn JavaScript from scratch so if you’re interested, check out my website JavaScript de Zéro.
I’m a software engineer that worked 10+ years in various industries, learned a lot of different languages in my career and here is my fully detailed and honest WatchAndCode Javascript Course review created by Gordon Zhu.
TL;DR: if you ask yourself if you should take the paid Premium Membership or not, here is my answer.
Premium Membership Review (paid course):
– Numbers
– The Good Parts
– About Gordon Zhu
– The Bad Parts
– Room For Improvement
– Should You Take This Course Or Not?
Practical Javascript Review (free course):
– Numbers
– The Good Parts
– The Bad Parts
– Room For Improvement
– Should You Take This Course Or Not?
If you want more information about the course content, I detailed every lesson for each course:
– Premium Membership course details
– Practical Javascript course details
Premium Membership Review (Paid Course)
You can take this course here: Premium Membership paid course.
Note: You should have done the Practical Javascript free course before taking this one.
Numbers
At the time of writing:
– Video course length: 30 hours 24 minutes
– Price: $39/month
– Slack community: 360 active users
The Good Parts
Course environment
WatchAndCode is provided to you by the Teachable platform. I like the simple focused design plus the top left progress bar is a huge motivation booster.
All videos have a good image and sound quality, you can watch them up to 2x speed, 1.5x was perfect for me. Subtitles are available in English in the first half. Font sizes are large enough to watch the course on small screen devices.
Below each video you can post questions and comments to have more explanations about the video. Gordon or students answer you quickly (depending on your timezone).
In this course you’ll use Google Chrome and Glitch to write your code. As Chrome is one of the most used browsers for web development, that’s a nice choice.
By purchasing the course you get access to the WatchAndCode Slack channel where hundreds of other students and Gordon are active. You always get answers fast to your questions, so you never get stuck very long!
Every day you can stay motivated and get answers to your questions via a live video chat called the daily accountability meeting. Moreover, every week, you get access to the live office hours: Gordon answers your question live via video chat! All the previous office hours are available on Gordon’s YouTube channel if you want to see what it is. Take a look it’s free!
Course content
The way Gordon teaches is really really good. You feel that he’s passionate about his work and put a lot of effort in each video.
He uses the console a lot to show what he’s talking about and to verify assumptions he does while coding. He explains things in place: he uses comments to tell in plain English first what he wants to achieve and then, write it in code. This brings clarity and helps you follow and code along with him. Sometimes he uses slides to make a point. That’s a good move for visual learners and to explain the same material in different ways: it helps a lot to understand the difficult concepts.
Gordon knows how to break down in very small pieces each step of the development process and thinking process behind the implementation of a new feature. You’ll get deep and thorough explanations to get your Javascript foundations right.
Also, he sprinkles lots of very good online resources in each lesson you can refer to later and keep with you during your programming apprenticeship.
Another important point I liked is that even if there are better ways to write the code, Gordon will first start where it works, and then improves it over time, keeping the code easily readable for students. That’s not the case of all the courses I’ve already seen. Indeed most of the time they jump right into the optimized/concise version that is far less readable for a beginner.
You’ll get some homework to do sometimes before watching the videos. Indeed, Gordon is not here to babysit you. He wants you to become more autonomous. That’s why he also teaches you how to find solutions to your problems and read the docs. He created a step-by-step process to break down any source code and own it easily by practicing little exercises on it.
Most of the course is dedicated to how to read code. That may frustrate you at first because you may want to build something from scratch but it’s the most important skill to acquire. Indeed if you apply for a dev job, 99% of the time, you’ll have to improve/fix bugs on an existing codebase. So you should train yourself to read and understand code fast. It’s the first time I see that skill taught in a Javascript course. This is brilliant and extremely helpful for learners that want to actually get a job at the end of the course.
Surprisingly, you’ll learn why and how to write unit tests for your software. I say surprisingly because that’s a skill that is not taught a lot in other courses. To be honest that’s the first time I see a Javascript course that touches that topic at all!
Gordon always wants you to apply best practices so he makes it clear to refactor the code every time to improve it. He also takes a design-centric approach to let you know that here, you can improve this particular code for this particular reason. That makes you more critic about the code you read and the code you write. Self-criticizing your own code will help you get better over time and write better code as a developer, that’s a good habit to keep.
You’ll learn how libraries work and how they’re made. How to read and understand the code of a library and the associated documentation. Gordon will demystify buzzwords like IIFE, closures, higher-order functions, callback functions, recursive functions and more.
He will also show you one of the most underrated skill ever: how to use the debugger in Chrome dev tools. Very important skill to acquire for any beginner so you can fix your own problems easily and move forward, no more frustration, no more wasted hours.
On a more general level, Gordon takes the time to explore all the common mistakes students do when learning Javascript these days. He explains what you should expect to learn and what to focus on. All these advice are really good, and I’ve been programming for more than a decade.
About Gordon Zhu
As a general note about Gordon, I must say he has strong opinions. And he designed his course specifically for you to get the most out of it. He is not here to babysit you though. It’s quite the opposite in fact, he acts as a guide, so you can find your own way to fix your bugs and move forward as a grown-up developer.
His strong opinions are spread all over his course:
Slack invitations that are not accepted within 7 days will be REVOKED. This harshness is by design. Our community is stronger when it’s made up of people that want to be here (people that want to be here generally don’t procrastinate on things like this).
(Extract from one video): You’ll never find the
!!(null)
in my code, it looks weird, beginners don’t know what it means […] I prefer theBoolean(null)
equivalent, I don’t need to think about it, you know what it does right away […] you’ll see this double exclamation point a lot unfortunately… that’s just how reality is, and I’d say that’s the unfortunate reality.
Moreover, it’s common to see him answering your questions by pointing out the part of the course you need to watch again to answer your own question by yourself. That may seem harsh, but it’s really a good way to teach and make you more independent and grow as a developer.
Providing the answer directly wouldn’t make you train your capacity to look for answers by yourself using the material at your disposal. That’s a huge skill to master when you develop as you do this all the time because technologies constantly evolve.
The Bad Parts
Nothing is perfect in this world, let me tell you what bothered me.
The course teaches you Javascript ES5 syntax, not ES6. I know that ES6 is not very well suited to teach Javascript. Indeed it has lots of ways to make the code more concise and smaller but that also reduce readability for a beginner (think about reading an arrow function when you don’t know what a function is!). That said, being able to read ES6 code is as important as producing good ES5 code. Knowing the new features will be necessary for the future to handle code written by other developers using ES6 features.
Another thing I was a little bit disappointed by was the gap between the free course and the premium course style. Indeed, you don’t build any app from scratch in the premium course. You’ll read and understand code most of the time and play with it. Adding a course on how to think and build an app from scratch would be great for students to help them create their portfolio and apply for a job.
Also, the course is very long, 30 hours! And some parts have videos that are more than 1 hour long. This kind of video is difficult to watch (even at 1.5x speed!) and being able to stay focused all that time may be a challenge for some people.
Let me finish with some small things: the biggest lessons 5 and 6 (AccountingJS and Underscore) don’t have English subtitles yet. Links that are mentioned in the videos are not always referenced in the comments/below the video so you have to manually type them in the browser (I’m picky I know).
Room For Improvement
Here are my advice for Gordon to improve the course based on my learning experience:
- Build an FAQ below each video. I read all the comments in all the videos and there are gold nuggets in them. But it’s very laborious to read everything each time. Instead, I would have enjoyed some sort of Q/A below each video plus a section with additional information that was not treated in the video.
- Break long videos into smaller ones. 15 min should be the max upper limit.
- Add a section to teach ES6 new features so students can read modern source code.
- Add a lesson to build from scratch an app so people can add something to their portfolio and show to some employer that they have skills.
- Add a lesson on how to prepare for a job interview.
Should You Take This Course Or Not?
Gordon made a video to answer this question. As you may have already guessed from the size of the good parts section against the bad one, I would answer: YES of course!
If you’re an absolute beginner in programming, this is the perfect course for you, and I really mean it. I’ve read lots of books and tutorials in my career for several different languages and none made me loved to learn how to program as in this course.
Gordon has a really good faculty to teach and break things down into small digestible steps. The community in the Slack channel will help you move forward and never get stuck, that’s a huge asset for a beginner to not lose your motivation and avoid frustration.
If you’re a professional software developer like me, I think this course is the fastest way to learn javascript from scratch with best practices in mind. I watched the whole course at 1.5x speed and I had no difficulties to understand every concept quickly.
You may want to know how long does it take to actually complete the course? I can’t answer that question because it depends on your available time per day, your skills, your abilities etc. but what I can tell you is that at $39/month this course is underpriced.
In fact you don’t purchase a course for this price, you purchase a good learning environment and that has unlimited value. This can make the difference between a frustrated alone student stuck on a problem for hours, that will finally lose his motivation and quit, and a student that will get support from his peers and fix quickly his problems.
Practical Javascript Review (Free Course)
You can take this course here: Practical Javascript free course.
Numbers
At the time of writing:
– Video course length: 8 hours 11 minutes.
– Price: Free
– Facebook group: 6680 members
The Good Parts
Course environment
WatchAndCode is provided to you by the Teachable platform.
All videos have a good image and sound quality, you can watch them up to 2x speed (1.5x was perfect for me). Subtitles are available in English for all videos. Font sizes are large enough to watch on small screen devices.
Below each video you can post questions and comments to have more explanations about the video. Gordon or other students answer you quickly (depending on your timezone).
In this course you’ll use the Google Chrome console and Plunker to write your code. As Chrome is one of the most used browsers for web development, that’s a nice choice.
By enrolling in this free course you get access to the WatchAndCode Facebook private group where thousands of other students and Gordon are active. Stay focus when you post though:
Since the purpose of this group is to help you focus and get the most out of Watch and Code, off-topic posts (anything not directly related the lessons) will be unceremoniously deleted.
Course content
I really enjoyed the format of this course: straight to the point short videos with 1 key concept and a quick recap at the end. Each video breaks down a concept into bit-sized pieces of information.
In this course you’ll start to code right away and I love that approach! You’ll start coding the first version of a todo app directly from the Chrome console. In this todo app, you’ll add one feature at a time: adding an item, removing an item, updating an item, marking an item completed or not, displaying the todo list etc.
Each lesson is built upon the previous one, this is extremely well designed as you always use what you already know in the next lesson. This helps you memorize the previous material and use it in a concrete program.
In the process of building the todo app, you’ll learn functions, parameters and arguments, you’ll review all primitives of Javascript, numbers, strings, booleans, null, undefined and more advanced values like objects and arrays.
Gordon will explain variables scopes thanks to a great visual analogy (with circle and arrows) that I’ve never seen elsewhere and that works very well. You’ll gradually use more complex concepts to reimplement and evolve the todo app until a point where you don’t need the console anymore. Indeed, you’ll slowly move from the console to a webpage with buttons and live interactions. What a pleasant journey!
To release that prowess you’ll learn the smallest amount of HTML (because you’re here to learn Javascript remember?) to build a simple interface for your app using Plunker online editor.
You’ll make your code smaller and efficient using for
loops and if
statements to display (x)
when items are completed and ( )
otherwise. You’ll loop over an array to display the todo list and then get totally rid of the loops thanks to the forEach()
built-in Javascript feature.
In this project you’ll see how Javascript handles comparisons between objects and primitives. Again, Gordon uses some nice analogies and diagrams to explain important concepts like memory addresses, mutability and immutability.
You’ll add dynamism to your web app thanks to event listeners, you’ll learn how to manipulate the DOM, how it’s structured and some of the useful methods that Javascript provides to access elements from it.
Along the way you’ll learn how to use the debugger, how it works and how to harvest the most from this great tool to help you go step-by-step in your program and debug it.
Each time you finish to upgrade the app, Gordon goes into a little refactoring session to show you how to improve the code so it’s more maintainable and extensible, and cut off the useless code. Keeping your code clean is a good practice!
You’ll see advanced concepts like higher-order functions through the use of setTimeout()
and forEach()
examples. You’ll even implement your own version of forEach()
!
At the end of the course, you move from the clunky Plunker tool to Glitch, add dynamically delete buttons along each item and learn how to delegate the events listener to the parent node of the list through event bubbling propagation.
To finish, Gordon gives you a great resource to understand what the this
keyword refers to in several situations. He also discusses why there is not a single best way to architecture your code.
He will share his own experience and story about how he learned how to program and how he struggled to focus on the right things. The mistakes he made, the time he lost. Then he gives you golden advice on how to ask great questions and become a better learner (article + video about how to debug your code).
Gordon explains in plain English and in place using comments in the code what he wants to achieve each time before coding which is perfect to learn how to think to code.
At almost every lesson you start to “get it” and can pause the next video and code before watching Gordon do the same: it feels great and keep you motivated!
The Bad Parts
The Plunker tool can be difficult to use sometimes, you need to start/pause the project and don’t forget to select the right target to access the Javascript code from the console. Very annoying.
Also, I think the debugger lesson comes too late in the course because it’s a great asset to have while learning how to code.
I think the todo app could have been made more functional and pretty by providing a CSS stylesheet to students.
I wish we would have hunt down a bug introduced on purpose by Gordon so he can show us how to find a bug and fix it. Indeed this could have been done for each lesson, so the students can train themselves using the debugger and fix bugs. When you think about it, at the end of the day, that’s the most time-consuming task students do as they’re rookie they introduce bugs everywhere in their code and waste hours fixing them!
There are lessons that use a repetitive process to do the refactoring of all the methods so it can be boring sometimes.
I would have loved to learn about the differences between using a for
loop and forEach()
method in term of performances and context on when to use one or the other.
Room For Improvement
Plunker feels clumsy, using Glitch from the start would have been better (but it would take a long time to record again the same videos using Glitch, I can understand that).
The part about the debugger is brilliant and extremely useful. It’s a major skill to acquire for a beginner. It should be moved almost at the beginning! I think it would save so much time for the students (and avoid a lot of frustration too).
A little bit of design should have been put inside the todo app by reordering the HTML elements and providing a boilerplate CSS stylesheet that students could simply link to. They wouldn’t have to touch any CSS at all, just use the source code from Glitch to start working and every HTML element would be automatically styled. Having to click on the buttons with the mouse + the fact that they’re at the left of the input box makes it a pain to use the whole tool.
Should You Take This Course Or Not?
YES. Absolutely!
You won’t waste your time and you’ll learn a ton in 8 hours with Gordon! Plus, it’s free, so what are you waiting for? Enroll in this course now :).
Premium Membership course details
If you want to learn more about the premium content before purchasing it, this section is for you.
Lesson 1 — Orientation
This is not a Javascript lesson. It’s just the description of all the add-ons you can get access to (and how to access them) after purchasing the Premium Membership course.
Slack community
Ask your questions on a dedicated Slack workspace. Get answers from other students and Gordon himself, who is very active. Very useful if you’re stuck!
Daily accountability meetings
Every day at 8AM PST you can join a video chat to tell others what you did yesterday and what you planned to do today. It’s followed by a Q&A session.
Again, very powerful if you’re stuck on something! This daily meeting is also great for not feeling alone and mix with other students coming from different countries and backgrounds.
You can even find accountability buddies from your country (so your timezone is the same) to stay motivated during your learning journey!
Live office hours every week
Every Monday at 6PM PST Gordon answers your question live via a video chat.
Lesson 2 — Reading (or how to methodically rip apart a codebase)
This lesson is about reading code. You’ll read and understand the entire Javascript code behind the TodoMVC app (vanilla JS + jQuery).
Content
- You’ll learn how to read the code of an app you don’t know, how to focus on what matters, when and why. So you can own the code at some point and completely understand it. Gordon breaks down the full process behind understanding an app from scratch and its related source code.
- jQuery: the project you’ll study uses the jQuery library, so you learn some of the jQuery basic methods along the way.
- Gordon will teach you how to use the console to call some parts of the code you want to understand, how to use the debugger to see what’s going on in real time step-by-step within the code.
- You’ll learn how JS method calls are bound to buttons and other HTML elements, some specific programming patterns and why they’re used.
- You’ll also learn what HTML templating is about, why it’s useful and how it’s used in this particular app (through Handlebars).
- Finally you’ll take a look at
localStorage
,JSON
format and routing (through Director). You’ll learn how to watch thelocalStorage
data from Chrome dev tools and how to modify them.
The Good Parts
You have some homework to do: to read on your own the source code and play with the app before watching the videos. That’s good because it makes you more autonomous.
Learning how to read code is an extremely valuable skill to learn for any software developer.
This project uses jQuery, as it’s a skill that is in high demand in lots of companies, this course kills two birds with one stone.
When you don’t know something you’ll learn the resources to use to find the answers to your questions. How to read documentation is a mandatory skill to acquire in our fast-paced industry.
To conclude, Gordon gives you a practical method with actionable steps to make the knowledge you learned sink in. These are exercises you can practice on any source code and that can be carried on with you for as long as you’re a developer. These are very good advice by the way (and I’ve been programming for more than a decade!).
The Bad Parts
Videos are really long, around 1h per video in this lesson. It’s a huge gap between the short videos from the free course part.
There is a little delay between sound and image in this video that can be annoying when you see people talking. But when seeing source code and hearing explanations, the delay doesn’t interfere with the lesson.
Lesson 3 — Testing (how to write code that makes sure your code works)
Content
- Introduction to why and how to test software in general.
- You’ll write tests of all the requirements from the Practical Javascript part (the free course).
- You’ll rewrite
forEach()
,filter()
,map()
andreduce()
with a TDD (Test Driven Development) approach! - You’ll read the doc from MDN, you’ll extract the specs from it and you’ll code the corresponding unit tests.
- You’ll implement your own versions of each function so they pass the tests.
The Good Parts
Gordon introduces an important part of programming professional software that is, unfortunately, most of the time neglected in a lot of companies. So you’ll be one step above the crowd if you want a job in software development by knowing unit testing. Rewriting these built-in functions is great to become familiar with them and understand how everything works under the hood.
The Bad Parts
Again, the overall length of this course is very long (5h47m) because Gordon goes through all the little details of the specifications, like managing optional arguments etc. It can be overwhelming at some point and a little bit redundant.
Lesson 4 — SimpleTest (extending and improving existing code)
Content
- How the unit testing framework used in the previous lesson works?
- How can we improve it? Let’s improve it!
- How does the Javascript event loop work? In which order the browser call your code, update the DOM and do extra tasks?
- What are constructors, classes and how do they work?
- How to format nicely console output by grouping, adding colors and some basic style?
The Good Parts
On this lesson you modify on the spot the current unit testing framework to make it better right away, that feels really good to see your changes on the webpage.
Gordon analyses why the current UI of the unit test can be improved and emphasizes the fact that as a developer you must think about people that use your software. That’s a good practice: to think about who will use your software while writing it.
He also shares some great links to videos that explain perfectly how the Javascript event loop works!
The Bad Parts
None.
Lesson 5 — AccountingJS (escape from tutorial land)
In this lesson, everything starts from a StackOverflow post where someone asks for help to format a number as money in Javascript.
Content
- Gordon talks about pros/cons of using a library instead of writing yourself the code to handle problems (example: jQuery, AccountingJS).
- How to read a library readme file on GitHub and the documentation in general?
- How to recognize and handle minified code while learning a new library?
- What are IIFEs (Immediately Invoked Functions Expressions)? Why are they useful and how to recognize/use them?
- How global functions are managed through the
window
object? - How to see variables scopes and global objects from the Chrome debugger (
Local
,Closure
, andGlobal
scopes)? - How libraries/modules are exported? You’ll see quickly the different systems in place to make Javascript modulable (
CommonJS
,AMD
, and global variables). - Javascript Prototypes and Constructors, what they are, what they’re used for. How to use prototypes to create new objects?
- How the double exclamation point
!!
works? - How Javascript handle methods calls under the hood on primitives like String and Number?
- How AccountingJS makes its code ES5 compatible so it can run on older browsers?
- How the main checkCurrencyFormat method works in AccountingJS?
- Why the built-in
toFixed()
method is kind of broken in Javascript (unexpected results while rounding)? - Low-level explanation of how computers store numbers and decimals.
- How to fix the
toFixed()
method with a better approach using scientific notation. - How recursion and recursive functions work? What’s the call stack and its limitations (stack overflow)? (Very thorough explanation)
- Regular expressions patterns (Very thorough explanation + great website resource to help you write regexp)!
- Unit testing analysis, how to fix a broken test the right way.
The Good Parts
This course teaches you how a simple and naive question can turn into a real programming nightmare when you want to implement a solution. Indeed, when you think about money formats worldwide there are huge differences and it’s not as easy as you thought it was in the beginning.
As in the previous lesson, you’ll have to read on your own the documentation and play with the library demo before watching the videos. Gordon goes quickly through the doc to show you how to play with the doc and code snippets to get a sense of how the library works.
Gordon will show you how to use the debugger to see the different variables scopes. That lets you really easily understand what’s going on when using functions and functions within functions.
He uses a visual explanation of Prototypes that is really good to understand this core concept of Javascript (and other languages that are object-oriented with classes).
Gordon goes through the entire code of AccountingJS library and goes in-depth each time it’s necessary to understand every trick used by the library authors. He also explains why and how he would rewrite some parts of the code to make it better.
Good news! The average length of each video in this lesson is quite short (30 min).
The Bad Parts
There are no English subtitles for this lesson. Also, managing currencies is not a very sexy subject, but the library has interesting code in it (plus it has unit tests!) that will teach you lots of tricks used by developers so it’s a perfect fit for the course.
Lesson 6 — Underscore (staying calm when there’s more code than you can read)
Content
- Quick recap of what has been done and your ability to learn new things and handle complexity over time.
- How the average person thinks about how to learn Javascript: this video shows the traps all the beginners fall into when learning Javascript nowadays.
- How to handle large code base easily.
- What is underscore? What are the differences between underscore and lodash?
- Dive into the code, try to understand what all these functions are about, what do they do, where are they used, use the debugger to try to figure things out.
- And more content is coming soon! This part is still under construction at the time of writing.
The Good Parts
Gordon starts with a video called how the average person thinks? This video is so important for people to actually move forward and not waste time learning buzzwords instead of learning Javascript. It’s a must watch.
At the end of this course, while waiting for new videos to be released, Gordon gives you some exercises to resolve to keep practicing your skills.
The Bad Parts
There are no English subtitles for this lesson and there is no direct link from the different websites mentioned in the video within the video description. This lesson is not finished though, there were 8 videos at the time of writing this blog post and it’s still under construction.
Practical Javascript course details
If you want to know the course content before investing 8 hours of your time: this part is for you.
Introduction, Support, Tools
Content
- Presentation of the course, quick review of why this course was made, what you’ll build (todo list app) and why Gordon chose a todo list app.
- You can get support via weekly live office hours, through the facebook group and comments below each video.
- How to use the Teachable platform to see your progress bar moving in the right direction.
- You’ll use Google Chrome and the online Plunker editor.
Version 1 — Array
Content
- Build a first version of the todo list that entirely runs within the console of Google Chrome!
- You’ll be able to store and display the content of a todo list, to add, remove, update and delete items from it.
The Good Part
No boring theory stuff, you jump right into the console to start coding! Gordon explains in plain English what he wants to achieve each time before coding it which is perfect to learn how to think to code.
The videos are very concise (3 min) and straight to the point, it’s really a great introduction to programming!
The Bad Part
None.
Version 2 — Functions
Content
- What are functions and why are they useful?
- How to define and call functions.
- What’s the difference between parameters and arguments.
- You’ll use and implement functions to display the todolist and add, remove, update and delete items from the todo list.
The Good Part
I particularly loved the analogy with recipes to explain how functions work.
The Bad Part
None.
Interlude — Functions and variables
Content
- Introduce scope of variables while using functions.
- Explain scopes and variables in a visual way thanks to a circle and arrow analogy.
The Good Parts
As always, very clear explanations and analogies, the circle and arrow analogy is absolutely great to understand what variable scopes work.
The Bad Parts
None.
Version 3 — Objects
Content
- Introduction to objects, properties and methods.
- Use of the online tool Plunker to avoid console limitations.
- Implements again all the feature of the todo app using objects.
The Good Parts
We finally escape the console to write some code in a more comfortable way. I like the approach of improving the full app each time using exactly the new concept just taught before.
It’s so good that at one point you start to “get it” and can pause the next video and code before watching Gordon do the same: feels really great and motivating!
The Bad Parts
When using the console to debug the code, you must never forget to run your code first and then chose the right target to debug your code and not something else. That can be a headache for students and a source of time wasted.
Interlude — Success is The Process
Content
- Great story about how Gordon learned how to program and how he struggled to focus on the right things, the mistakes he made etc.
- How to ask great questions and become a better learner (article + video about how to debug your code).
The Good Parts
In these videos, Gordon shares his story, it makes you feel less dumb because you’re not alone struggling! He teaches you what to focus on and what to leave aside to move forward and not waste your time uselessly. Also, he talks about how you can fix your own problems using the debugger.
The Bad Parts
I think that teaching the debugging process should come way earlier in the course because it’s so useful and would save so much time to the students (and avoid a lot of frustration too).
Version 4 — Booleans
Content
- Add a boolean to each item to make it completed or not.
- Add the new feature
toggleCompleted
to change that property on an item.
The Good Parts
This lesson increases slightly the complexity of the app in a very manageable way.
The Bad Parts
None.
Version 5 — Loops of Logic
Content
- Introduction to
for
loops andif
statement. - How to loop over arrays.
- Adapt the full app to use loops and manage the new boolean to check the completion of an item.
- Make the app display completed items prefixed by
(x)
or( )
when they’re still active when showing the todo list.
The Good Parts
Gordon starts again from plain English to code in baby steps, making the process easier to understand and to follow.
The Bad Parts
None.
Version 6 — Thinking In Code
Content
- Add a new method
toggleAll()
to mark all items (un)completed at once.
The Good Parts
Easy to follow lesson, use everything we’ve learned so far.
The Bad Parts
None.
Interlude – Data Types And Comparisons
Content
- Deep dive into the differences between primitives and objects.
- How comparisons operators work on primitives and objects.
- How variables content is stored into variables and objects (introduction to memory addresses).
The Good Parts
Gordon uses a nice analogy with house addresses to make clearer the way objects are compared in Javascript. He uses slides to explain the memory address concept that let him show in a visual way how things work under the hood which helps a lot to grasp the concept.
The Bad Parts
None.
Version 7 — HTML And The DOM
Content
- Improving the user experience by making a user interface the user can click on.
- Create buttons in an HTML page to display the todo list in the console and be able to toggle all items.
- HTML basics are explained: how to include the
<script>
tag in the body of your document and use our script. - How to add a listener on a button so we can run the method of our choice when the user clicks on it.
- How to use the dev tools to inspect elements of a web page.
- What is the DOM? How is it structured, how can we check it out through Chrome dev tools.
- Introduces several methods related to DOM manipulation:
getElementById()
andaddEventListener()
.
The Good Parts
The use of the Plunker tool makes it easy to manage all the files online and see your work in real time. The use of the debugger lets you see event listeners attached to elements. Gordon doesn’t go too deep in the use of HTML, it’s just enough to understand and not overcomplicate things!
The Bad Parts
The todo app could have been made more functional and pretty by providing a CSS stylesheet. Having to click on the buttons + the fact that they’re at the left of the input box makes it a pain to use the whole tool.
Interlude — Don’t Wonder About Things The Debugger Can Tell You
Content
- How the debugger works? How to do step-by-step debugging in our app to troubleshoot it
- Use the
debugger
statement to pause the program where we want - Gordon goes through all the methods we’ve built so far with the debugger and teach you how to look at the content of all variables and see how things work
- Advice about what to focus on: understanding not building from scratch
The Good Parts
Very interesting part about the debugger and how it helps you to literally see everything that’s going on in real time while using the app.
The Bad Parts
I wish we would have hunt down a bug introduced on purpose by Gordon so he can show us how to find a bug and fix it.
Version 8 — Getting Data From Inputs
Content
- First refactoring of the code to write less code and use an object to handle event listeners
- Discussion about why there is not a single best way to architecture your code
- Add more buttons and code to handle item addition, update, deletion and mark as completed features
- You’ll learn some methods of the
input
element to get and change the value from it from Javascript
The Good Parts
I like the fact that we have a little bit of software architecture in this course, that’s so rare in courses. Gordon makes a good point on the fact that you must adapt your architecture while your code is evolving and that there is no silver bullet architecture you can use everywhere. You must think and pick the right one every time.
As it’s a repetitive process you can pause the video at the beginning and do the work before checking what Gordon did, pretty amazing when you succeed!
The Bad Parts
It’s a repetitive process to do the refactoring of all methods so it can be boring sometimes, but you’ll learn how to write good code, so try to do it anyway.
Version 9 — Escape From The Console
Content
- We add enough HTML elements to display all todo list items within the web page instead of the console, that’s why it’s called escape from the console!
- Use an unordered list to display all items on the todo list on the web page
- Remove all the (now) useless code that managed to display the todo list in the console, everything is shown on the web page now.
The Good Parts
Having a full web app working without the console and built from scratch feels so good! Plus it’s entirely dynamic, it feels alive!
The Bad Parts
The visual aspect is not great (lacks some style) plus the position of the buttons is weird (at the left of the input instead of the right) so using the app feels very weird and not very practical.
Interlude — Functions Inside of Functions
Content
- Introduce higher-order functions with
setTimeout()
andforEach()
examples and callback functions concepts. - Create a simple
forEach()
implementation that works as the built-in function.
The Good Parts
Very clear explanations of higher-order functions and callback functions.
The Bad Parts
None.
Version 10 — Click to Delete
Content
- Introduce a new tool called Glitch to develop online, far better than Plunker.
- How to
return
a value from a function. - Create dynamically delete buttons for each item so we can click to delete any item easily instead of passing the position of the item to delete.
- Use the
id
attribute to store item position so the button delete can know which button to delete. - Use event bubbling to use only the parent (unordered list) as the event listener for all item (list items).
- Dynamically update (refresh) the full todo list after an item is deleted.
- Now that the button delete is not useful anymore, remove it and refactor some code.
The Good Parts
Glitch is far better than Plunker, no more play/stop button or choosing the target to debug your code with the console!
As always Gordon breaks down the full process into little steps that are easy to follow. The app starts to really look usable and useful, that’s a great feeling!
The Bad Parts
None.
Version 11 — Destroy All For Loops
Content
- Gordon uses the past
forEach()
built-in functions we saw to remove allfor
loops from the code.
The Good Parts
Lets you understand how to use forEach()
on a concrete example.
The Bad Parts
I would have loved to learn about the differences between using a for
loop and forEach()
in term of performances and context on when to use one or the other.
Interlude — Understand this
Content
- Gordon provides a nice cheat sheet to understand what the
this
keyword refers to in several situations
The Good Parts
Having a good resource to refer to is great while learning Javascript, this
keyword is really tricky sometimes!
The Bad Parts
None.
Thanks for reading until that point!
Hi,
I have read some sections of your review. Especially the parts that I was interested in. So when we purchase the course, do we get it to keep. I mean can we download the videos and keep as a reference.
Thank you for your long review. Really appreciate the effort.
I am currently doing the free course. Thinking of joining the premium.
Hi Gassan,
Thanks for your kind message! I’m glad you find my review useful.
I took the premium course for 1 month to go through it and then I canceled my subscription. Today, I still have access to all the videos (+ new updated videos) but can’t access the slack channel anymore.
I’m not sure if it’s a feature or not to still get access to the videos and updates after canceling the course but… for now, it works that way.
Good luck in your learning process! Feel free to reach out to me if you need help.
Hi Jeremy,
Thanks for writing your review. You mention that the lessons are very long, so it took you 1 month to finish all the videos?
Hi Vince, you’re welcome!
Yes, some lessons are 1 hour long! The entire premium course, at the time I did it, was 30 hours long.
I finished it in 1 month only because I watched it at 1.5-2x speed and because I’m an experienced developer so I knew a lot of concepts beforehand. Plus I was learning full time. So I could apply and understand several courses on the same day.
Depending on your level and available time you’ll spend, for sure, more than 1 month to go through it. A complete beginner could make it between 3 to 6 months I think, working full time on it. There is a lot to learn for a beginner.
Feel free to ask any other question!
Jérémy.
Hi just wanna ask, if i subscribe but did not finish the course in one month on premium membership, will i still get to see the premium videos? Thanks
Hi Kirito,
It’s a subscription model, which means that you pay a monthly fee to get (and keep) access to the course. You can take all the time you need to view the course as long as you’re subscribed to it.
So to answer your question, yes you’ll still have access to the course after one month, it’s not limited in time, but you pay a monthly fee to keep access to it.
Jérémy.
Hi Jeremy
I would like to ask you since you are professional software developer, do you think after I take the whole course ( the free and the paid course ), I will have the necessary skills to work as junior developer ? I have no experience as a programmer .
Thank you.
Hi Ade,
Thanks for your message and interesting question!
I don’t think you’ll have the necessary skills to work as a junior developer after taking the whole course (free and paid courses) but not for the reasons you may think about… Let me explain.
First, the developer hiring process is broken.
90% of the time you’re judged on conditions that are not the conditions you’ll work in. For example, you may be asked to solve algorithms problems on a whiteboard and no internet connection. This is hard. Plus, it has NOTHING to do with the real job you’ll achieve once you’re hired. This is nuts, I agree. But that’s how the hiring process still looks like in 2018. Some companies are trying to fix this (like triplebyte.com), but it’s pretty difficult to change decades of bad habits.
Secondly, you must practice your new developer skills to build code from scratch and solve problems with your own code. This problem-solving mindset is the most valuable one in a developer job. So you have to practice it, over and over. Just following online courses and understanding them is not enough. You have to practice. It takes time. Several months at least. Coding is a craft, you must practice it (did I mentioned you must practice it? :-D).
Let me be clear about Watch And Code course, you’ll learn a ton, and it’s a very good idea to enroll in this course. BUT. Gordon doesn’t teach you whiteboard interviews skills or anything related to being hired. That’s why I decided to develop my own course for that. I saw you already subscribed (thanks!) so you’ll learn more over time about it. I try to fix missing parts and mistakes from other online courses to take you from “never programmed before” to “getting hired by a company ASAP”.
What can you do about the hiring process and while waiting for my course to be finished? Here would be my plan:
1. Learn as much as you can about JavaScript for 3 months. Practice, practice, practice and don’t forget to practice.
2. Apply for any job related to JavaScript to see how a real interview works, you’ll be surprised of what you’ll be asked for!
3. Get back to your computer and search online how to master interviews to get hired (and not JavaScript, which kind of a completely different skill in fact!).
You can also try to master right now the skills needed to master the hiring interview process and get hired as fast as you can. But it will be harder if you don’t know JavaScript enough.
I hope I answered your question, this subject is really interesting to me so feel free to ask more questions about it, I’ll be glad to answer them.
Thanks so much.
Jérémy.
Hi, I’m thinking about this course but rather for month intensive learning, I’m not even sure how often I will use slack….more rely on these videos which will be available still after cancelling subscription. Eventually if I’ll discover it really does a difference or discussing with Gordon and other students then maybe apply for another month but it’s like that. It would be good after cancelling the subscription to have access to videos + new added in future + access to discussion archives or live without possibility to actively asking, etc, so the staff would be focused of those who have activated subscription.
My question is: I’ve finished js-react bootcamp, know the basics but struggling when composing my own apps, recently found Udemy courses and want to use the top front-end js/react-redux/some back-end also like node or mern stack…Do You have any comparison between these and Watchandcode premium? I understand that it’s focused on teaching how to read the code, read documentation, understand others work, etc….self learn to become independent, not depending on another tutorials…maybe some new courses on e.g Udemy include some of the stuff which is in Watchandcode? I did the free practical javascript and it made a difference surely, when I think of how I constructed previous todolist….by feeling but it was rather improvising, it worked but was definitelly harder to read compared to watchandcode’s MVC structured code. It was interesting to feel how the process of shaping the app evolves.
best regards!
Hi, thanks for your message.
Well, I checked again and I have access to the entire course + new videos too. I don’t know if it’s a bug or if it’s meant to be like that. I don’t have access to the slack channel though, or any archive there, just the video content.
I don’t know the js-react bootcamp or any other udemy course you mentioned so it’s pretty difficult for me to give you an answer but WatchAndCode is pure JavaScript only. You’ll never learn a framework in this course.
And you should NOT try to learn any framework before being able to know how to code a small app from scratch by yourself (like the todo list app).
That’s the most common mistake people do while learning programming. If you struggle to create your own app, don’t try to learn react/redux etc. it will add another layer of complexity on top of JavaScript you don’t need right now because you’re not ready to build complex apps yet.
You understood well what WaC premium content is: it’s focused on teaching how to read the code, read the documentation, understand others work, learn to become independent. That’s exactly what you should aim for. Practice pure JavaScript only to solve small problems to be confident with the language and then move forward and try to build a small app from scratch.
Do this over and over and learn by yourself the missing parts by reading the documentation. When you’re confident enough to build a small app from scratch you can start to learn frameworks like react etc. But for now, practice this for 3 months full time, every single day. You should not be thinking about syntax anymore at the end of this time frame, it should be a second nature.
You HAVE to practice by yourself WITHOUT following a tutorial or course to understand how to code. There is no other way around. You need to train your memory like a muscle before moving on the layer above (= using frameworks).
Hi Jeremy,
Thanks for the review, it’s very helpful since I just finished the free version, Practical Javascript. It was more helpful than all the other tutorials I have watched. I am considering subscribing but knowing my slow learning pace I’d like to know if you still have access to all the videos since 2018. I know I can’t finish everything in one month so it would be comforting to know I can take my time by subscribing 1 month and still get access to the video after cancelation. Thanks.
Hi Lisa, thanks for your message.
No I don’t have access anymore to the videos.
Anyway, that’s not very fair to Gordon if you use this hack to get more time!
Hi Jeremy,
Lovely review thanks for that
I have taken subscription for frontend masters and am yet to start that
I do have experience but on QA background, willing to change career and move to development.
Taking this course, would it help me to understand foundations of CS & data structures, algorithms which is basically common for all languages
Hi Vanam,
Thanks for your comment.
Frontend masters has a very good reputation.
About WatchAndCode, you won’t learn the foundations of CS or algorithms. You’ll see a bit of data structures but that’s it.
In fact you won’t find these things in programming language courses because they’re kind of separate.
You don’t need to learn the basics of CS or algorithms to learn how to program. What is important is your ability to think in a logical way.
You should take a look at some algorithm courses and data structures because that’s the kind of thing you can encounter during an job interview. But if you are not looking for a job, you can skip that part.
Good luck for your career move!
Thanks jeremy
Do you suggest any thing i can look for datastructures & algorithms
I don’t know any course to learn data structure or algorithms but you may find some online.
I think you should search something like “how to master developer job interview” in Google to find some exercises and stuff to learn about data structures and algorithms.
Hey Jeremy,
Just wanted to say thanks for providing such an in-depth review of Watch and Code.
Just finished Practical JavaScript, and your review on the Premium content was helpful both in deciding whether to continue with the course (which I did), and also just to help me get a better “lay of the land” in terms of what to expect from each of the main sections.
Main take-home point for me (from what I’ve read on your review and elsewhere) is how the Premium content is less about “here are some cool advanced coding tricks to learn” and more about “here are some core lifelong skills you need to really progress in coding [so that you can learn cool advanced coding tricks yourself]”. I think that’s a great approach to learning, and I’m very happy with the course.
Hey B.J,
Thanks a lot for your comment.
I’m glad my review helped you take your decision about whether continuing or not the course. That’s why I wrote it.
Indeed the approach of Gordon is to teach core programming skills so you can learn quickly by yourself later anything you want, including tricks about ES6 for example, or frameworks etc.
Currently, he is renewing its course (you’ll have access to new videos as soon as they’re released) and still uses ES5 in this new version (with the var keyword).
I asked him by email if he would teach ES6 in the future. He said no, because he wants to teach core programming skills first and then students can learn by themselves ES6 upgrade later.
For students, this is the best way to learn programming skills that will last in time. I’m sure you won’t be disappointed by the premium content!
Have a nice learning curve ;-).
Jeremy.
Hi Jérémy,
Thank you very much for the review! I finished Practical and absolutely loved it! I was on the fence about the Premium class, but am now convinced.
I only have one question pertaining to the premium: Does Gordon get into REST API calls at all during the premium courses?
Cheers,
Chris
Hi Chris,
Thanks for your message! I’m glad my review helped you chose whether or not to continue the course.
Unfortunately no, Gordon doesn’t go through a REST API, you can check out the entire course content here : https://watchandcode.com/p/premium.
Cheers and happy learning!
Jérémy.
Hello. Thank you for reviewing this! I just enrolled to the free course, and I’m thinking about enrolling to the premium one as well after I finish the free one. However, my country currency is seriously undervalued compared to the dollar (like 1:4 + hidden tax-like fees for all international purchases), making paying for a single month feel more like paying for 4-5 months at once… So, I was wondering if it’s still possible to have access to the videos after paying and cancelling the subscription (including any added videos). I know it was possible before, but would be nice to know if as of FEB 2019 that still works.
Thanks!
Hi, thanks for your message.
Unfortunately no (I think it was a bug), you can’t access the paid version of the course after cancellation anymore, sorry. You’ll have to save some money I suppose!
Good luck,
Jérémy.
Hi Jeremy,
Thanks for your kind review, I have question can we learn angular and react while learning JavaScript? there are tons of resources available of javascript online, But still its difficult to be motivated long while learning Javascript.
I am planning to take premium of Gordon’s watchandcode. can you please suggest steps for improvement on daily basis.
Thanks,
Vivek
Hi Vivek,
Thanks for your message.
You can learn Angular and React while learning JavaScript, but I don’t recommend it, especially if you’re new to programming. Indeed you need to understand how JavaScript works first before using any Framework like Angular or React. If you don’t, you’ll be quickly limited when trying to customize anything you need or use some advanced techniques for your website/app.
It’s difficult to stay motivated that’s true. I think the best way to improve every day is to build something from scratch, applying what you learned to a concrete project that you like. Building your portfolio is a good start. Start to create a static website with just HTML/CSS, then add some dynamic features with JavaScript.
Reading a ton of theory is useless if you don’t apply your knowledge on a project. You have to code to learn how to code, it’s mandatory. When you’re stuck, ask for help on forums or by talking to friends.
Good luck!
Jérémy.
Hi Jeremy,
Thanks for your kind review.
I just wondering how many hours you need to spend per week if you want to finish everything in 3 months.
Thanks
Hi Alxir,
Thanks for your message.
It’s difficult to say because it depends on your actual skills, the speed of your learning etc.
By the way you can “finish” the course but not retain much of the information. You’ll need to practice it a lot before being proficient. 3 months is a very short amount of time to grasp the programming concepts taught in this course.
Moreover, the content length may have changed from the last time I checked out so I can’t say.
I think you should ask your question to Gordon.
Good luck,
Jeremy.
Hello Jeremy,
Thank you very much for the ellaborate review. I have not read the whole review but most of. You covered a lot of aspect and did it with care and attention, thank you very much.
success and thrive
Itsik
Thanks! You’re welcome.
I found the video content to be very helpful and well explained, but overall I did not enjoy my experience with watchandcode.
Firstly, Gordon comes off as very scornful from the start. Even the wording of the rules for posting updates in the daily accountability meetings come off as extremely authoritarian and judgmental. This attitude rubs off on the students too, so everyone comes off as disciplinary and they try to make you feel stupid for things like asking questions, much more so than stackoverflow which is notorious for this kind of thing. If you give an update like “I watched the first 2 videos in the testing series” they will all jump in and tell you that you have to say you watched them in their entirety or provide timestamps to the exact second you stopped. It honestly felt like a cult.
Furthermore, Gordon is overly opinionated on what the best learning resources outside of watchandcode are. When you finish the course, you are directed to the angularJS tutorial, which in my opinion is very complicated documentation. But when I said that I started watching youtube videos to supplement my studying of the official docs, I was again scorned. I took a break from programming after that because it got to be too much, but when I came back I tried joining the watchandcode community again and it was more of the same.
The course is presented as a community learning experience but every experience I had with the website aside from the video lessons themselves left me feeling very alone and isolated in my journey. You need self mastery to be a good programmer and you’ll never achieve that if your mentors and fellow students are hellbent on making you feel like crap.
Agree 1000%. Even checking in with him to see if the program is still active earned me a ‘everything is available at watchandcode.com’ response. No thanks. Ill go elsewhere to spend my money this time around.
Hi thanks for posting your review. I have tried many courses online and might give this one a go. I recently tried the odin project but felt the layout was messy and easily got lost so I moved on. Javascript.info had the best layout and information but no guided “tour” of the content. This course stands out to me as having someone to lean on for advise or guidance when I get lost. Do you recall how many projects are made in the premium version? Can these projects be used as a starting portfolio ?
Hi Justin, thanks for your message.
I confirm javascript.info has very good content, the “tour” you talk about is just the way the chapters are done. Follow them from start to finish in the order and you’re good to go.
Anyway, I took the course a long time ago and I’m sure the projects changed since that time so I can’t tell you.
The best you can do is to ask Gordon directly! Good luck!