Learning JavaScript with Gordon Zhu, Founder of Watch and Code

These days, JavaScript learn-to-code resources are legion in number — but also depressingly similar. Wanna-be software developers who have never before seen a line of raw code, much less written one (and who cringe in terror if ever they accidentally pop open the terminal window on their laptop) are led by the hand through a series of simple programming exercises designed to boost their self-confidence. These are essentially participation trophies in tutorial form. Despite shiny “Yay! You did it!” badges coaxing them along, many drop out. Those who actually do manage to finish emerge with a grasp of basic JS syntax… and no idea what to do with it.

And then there is Watch and Code, founded by Gordon Zhu. A very different, no-b.s. approach to learning JavaScript programming, for those who dare.

Zhu used to work for Google, developing AngularJS applications for the company’s engineering education team. The job was a natural intersection of his tech skills and a lifelong love of teaching. (Case in point: while in high school, Zhu used to go to the local library, walk up to families, and offer to tutor the kids for free.) After four years, however, Zhu left to launch his own educational offerings for programmers.

He started Watch and Code in 2014. Zhu’s first offering was a course on AngularJS, which was popular at the time and also something Zhu knew well. After two years, however, he shut that down to launch a new project aimed at teaching JavaScript to beginning programmers. His first course in the series, Practical JavaScript, launched in March 2016.

So you saw a specific need for a better or different way for self-taught coders to tackle JavaScript?

What led me to start Watch and Code was that I saw my AngularJS students were missing a lot of fundamental skills. Over and over again, they’d ask me Angular questions that really, at the core, were JavaScript questions, or even basic programming questions. So I decided to make a fundamentals course to address the gaps I kept seeing.

These gaps exist because it’s possible to get a lot of experience with a framework without ever first getting solid on the fundamentals. If you look at how all these developers who were taking my Angular course got to where they are, no one learned JavaScript formally (myself included). Even students straight out of the best university computer science programs are learning JS for the first time by themselves.

How is Watch and Code different from the bazillion other JavaScript courses littering the internet?

Watch and Code is about the core skills that all great developers possess. These skills are incredibly important but sound boring and forgettable. They’re things like reading code, consistency and style, debugging, refactoring, and test-driven development.

If I could distill Watch and Code to one skill, it would be the ability to take any codebase and rip it apart. And the most important component of that ability is being able to read code. You can’t contribute to any existing project unless you can read the code. In contrast, most other courses ignore reading completely and focus completely on building from scratch. That just seemed totally backward and unrealistic to me.

How does the program work?

Watch and Code is a linear path for serious students who want to become professional software developers. The heart of the curriculum is a series of in-depth video tutorials that you do one after another. Each video emphasizes the core skills that I mentioned earlier: reading code, consistency and style, debugging, refactoring, and test-driven development.

Step one is a free course, Practical JavaScript, that introduces and integrates basic concepts in the context of building a simple but functional app. After that, students can continue to the Premium Membership, which works the same way — work at your own pace through a series of projects covering progressively more difficult topics.

Watch and Code is aimed at intense beginners, which is more a personality type than anything else.

In addition to the videos, there are a bunch of ways to get help from me and other students. Every Monday, I do live office hours where students can ask me questions over video chat. You can also get help in our Facebook group, and paying members have access to a private Slack channel.

Since staying motivated can be difficult when learning online, there are also daily accountability meetings and study sessions to help students stay focused. Like office hours, all of this is done over video chat too since there are students from all over the world.

Who is Watch and Code aimed toward — absolute beginners? Working professional devs?

Watch and Code is aimed at intense beginners, which is more a personality type than anything else. These students have already learned how to work hard from previous life experiences. For example, musicians and competitive runners tend to do very well. I think it’s because things like music and running have similar discomfort/satisfaction ratios to programming. You’re mostly working hard and are totally frustrated with just a few moments of joy sprinkled throughout. You go to that performance or race, and then you go back to grinding. Or you just love the grind, which is even better. Of all the people learning to code, this group of students is very very small, but everything at Watch and Code is built with them in mind.

So Watch and Code is built for intense beginners, but most people learning to program don’t fit this profile at all. Instead, most people want to get a feel for programming, but don’t really want to work to be good at it. These students enjoy what I jokingly call The Ab Belt approach to learning programming, which includes things like in-browser challenges and badges. Just like ab belts allow you to not really work out yet feel good about yourself, these sites allow you to not really code but feel like you’re doing something useful.

Another group which is not a good fit for Watch and Code (at least initially) is what I call the Crossfit crowd. These students want to be good but might not have the confidence or motivation to do things on their own. They want to go to a physical place and get more personal instruction. Oh — also they don’t mind spending a lot of money. These students usually end up at boot camps initially, but will often come to Watch and Code after graduating.

So what does a Watch and Code student look like, then?

It breaks down into roughly three groups. The largest is students who are new to programming but have already gone through a bunch of other resources. This happens so regularly because they just didn’t know about Watch and Code when they first started; as an unknown company, that is simply reality. So they end up doing all the popular sites first. And this is actually great, because having gone through so many other resources, once they get here, they can finally focus since there’s nothing else left for them to try.

The second group is boot camp graduates. Boot camps have to expose their students to a lot of topics very quickly, which leads to very shallow knowledge in many areas. Watch and Code is the exact opposite. We focus on depth, which is what boot camp graduates are starving for after their hectic three-month programs.

The third is students who are already professional developers. They tend to be early in their career, working with JavaScript for one to three years. These professional developers are looking for the same thing — depth — because they’ve learned in a hodgepodge way and feel like they still don’t get it.

One thing all these students have in common is that they’ve finally realized that great developers are amazing at the boring stuff. This is a simple but hard lesson to learn when every company in our industry is trying to convince students that they need to be “full stack” and learn all the latest nonsense.

Can you kind of predict whether someone is going to be successful — i.e., are there any traits that mark a student as someone who will go the distance?

One thing that has been an accurate indicator is the quality of questions that students ask. There are a lot of details that make one question better than another, but at the core, what’s behind a good question is effort. Not intelligence or experience or natural talent — but real, honest, effort.

Speaking of experience… how did you learn programming?

I have a video called “How not to learn” that explains how I learned programming. It’s called that because I did everything wrong. I lacked focus and jumped from language to language and framework to framework. I spent more time on tools and trendy things than fundamentals. I wasted months doing things that would get me nowhere, like reading encyclopedic books that go over every feature of the JavaScript language.

My own experience is really a list of things to avoid. So the curriculum at Watch and Code is designed to protect you from all the time-wasting, frustratingly stupid things I did. What I teach students today is what I wish I’d done.

Finally: Someone who completes Watch and Code, what do they get from it?

It comes back to the “boring” skills: reading code, consistency and style, debugging, refactoring, and test-driven development. You’ll be able to pick up new things quickly because you can read the code, and you’ll be able to write better code because you’ll be able to borrow techniques from all the code you’ve read.

With this foundation, you’ll have the confidence and ability to look at any code base and rip it apart. It’s a different way of looking at things, one that is extremely empowering. Right now there’s a whole class of programmers that are dependent. They’re dependent on Stackoverflow, they’re dependent on tutorials, dependent on other developers, and they’re sick of it. They want nothing more than to be able to stand on their own strength. Watch and Code helps you get that sense of control.