A 10x developer doesn’t have to be very good to be 10x better than average. They just have to be competent enough to avoid leaving heaping piles of technical debt in every part of the code they touch, and (if you’re really lucky) competent enough to clean up other people’s technical debt when they find it.

Of course, everybody has to start somewhere, and every developer is going to pass through average developer territory before they become good, productive developers.

Here’s the problem: Most of the developers I interview have at least 1–3 years of experience, and 99 out of 100 lack a basic understanding of the fundamentals: the two pillars of JavaScript.

If you’re one of the 99, it’s time to level up. I’ve seen newbies progress past this stage in less than a year, and go on to be much more productive assets than those who don’t bother to learn this stuff. You want to be better than 99% of other developers at your job? First, assess yourself:

The Interview

Lots of JavaScript interviews will ask questions about basic JavaScript idioms, syntax, and quirks. Questions like “Do you know what hoisting means?”

I used to do that. I used to also include questions about things like event delegation, `this` context binding, the effects of `setTimeout()`, etc…

I don’t ask any of those questions anymore. I start (and frequently end) every interview with two questions that every JavaScript developer should have ready answers to:

Can you show me an example of prototypal inheritance?

When I ask this question, I’m looking for a basic understanding of the essence of prototypal OO. What is it? How is it different from classical inheritance? What are the advantages?

An entire section of my book, “Programming JavaScript Applications” (O’Reilly) is dedicated to this topic. Understanding the pros and cons of various forms of inheritance is vitally important to scalable application development and the usable life of the code you write.