The long-awaited day fortnight has finally arrived: between now and August 29th you can pre-order JavaScript for Everyone for £149 (£100 off the full price of £249). That's about $130 off of the full $330 price in USD.
We're two days into the pre-order window and people really do seem psyched about it, which has been hugely heartening to see. I don't mind saying that I needed it: this thing has been a lot of work, and while the end is just barely coming into sight, there's still a lot left to do. I really appreciate all the support; I mean that.
Now that this thing has gone loud, I was thinking it might be a good time to do a quick Q&A newsletter. I bet folks have a few questions that I've completely blanked on answering, having been so deep in the Markdown Mines for so long that I've started taking on the pallor of those extreme deep-sea fish. You know, the really weird ones.
Is it also possible that I'm not confident in my ability to sit down and hammer out ~1,000 words of meaningful prose while I'm distracted by all the previously-mentioned support, and I thought this might help me do that? I'm not on trial here.
Anyway, hey — here are a couple questions people asked in the JavaScript for Everyone Discord channel and on the stream today:
What are the prerequisites for this course?
Familiarity is a big plus. I'd say the strike zone for this course is "junior developer" — someone who has spent some quality time with JavaScript already and is comfortable enough to get by on a small JavaScript project, make sense of a snippet of code in isolation, accomplish tasks using a framework, that kind of thing.
That said, while I don't spend a ton of time on them, I am starting with the basics as much as I can. If you're brand new to the language you'll find plenty in here to help you build a foundation, and once you've gained a little more experience, this course will be right here waiting to guide you into the weeds as deep as you're comfortable. That's how it was for me when I was learning; I must've read Eloquent JavaScript cover-to-cover four or five times before I actually finished it, and I got a little more out of it each time. I wanted to make sure this course could work the same way.
How does AI impact the course? How is JS knowledge going to remain useful in this AI world and how does this course play into that?
First and foremost: it isn't involved in the creation of the course, full stop.
I can't claim to know the future any more than anyone else, but I can tell you what I worry about; I'm great at that. I worry that increased reliance on these tools will eventually do away with the most frustrating part of the process of learning JavaScript: actually learning how JavaScript works.
We can pretty easily recognize the output of these tools as "minimally viable" — a convenience for producing prototypes, or a way of abstracting away some of the day-to-day repetition of our work. The results of those tools still need considerable oversight from someone with enough experience to recognize the potential failings of that output. By abstracting away the frustrating parts of our work, you might never gain the real-world experience you would need to provide that oversight, and without that, well — anyone can press a "generate some JavaScript" button. Why should it be you?
The ability to type fast has never been the mark of a strong developer, and that's certainly not our value. A developer's value, as a professional, is in their ability to solve problems in measured, performant, reliable, and forward-thinking ways. Experience is what makes a great JavaScript developer, not the volume of their output. I can't say where the field of JavaScript development is headed, but I know this much: there will always be value in skill and experience.
I don't do push-ups because I like to do them; I do them to get stronger. I wouldn't say I'm writing this course out of spite — not exactly — but I'll say this much without a moment's hesitation: I'm here to help you learn JavaScript, because I want to help you get stronger, more experienced, more knowledgeable, more skilled, more valued. That's what I want for you, and for us, as an industry.
It would help to see a more detailed breakdown of the course to know if it's going to be my jam
As far as a concrete outline, things are still in flux while we're working through the technical review and editing processes — modules and lessons are getting chopped up and moved around as we speak. Once the dust has started to settle a little, I'll devote an issue of the newsletter to it.
In hopefully-not-too-vague terms: the outline is anatomical, but the focus is on how you interact with JavaScript. For example: we cover each of the primitive data types — it would be irresponsible not to, given all the weight they carry. But we don't discuss Number
so we can run through a catalog of all the methods and properties it makes available to us — we have MDN for that. We will discuss things like how numbers are stored in memory in digestible terms — and thus why JavaScript struggles with basic math — and the practical difference between isNaN()
and Number.isNaN()
. It's one thing to say that a WeakSet is a collection of garbage-collectable values — that's true enough, but nobody is reading that sentence for the first time, nodding sagely, and then tucking it away in their toolbelt for later. We're going to take the time to pull that thing apart and see how it works. Same goes for classes, property descriptors, even our old friend Array.
Is that one thing on your IMDB page true?
Oh, yeah. Back in... 2006, I think? My roommate sto— wait. Andy, is that you? You have to tell me if this is you, or this is entrapment. I think that's the rule.