I had a couple friends who wanted to learn JavaScript and went to CodeAcademy's course[1] only to find it was more like Programming 101. Not a single mention of what is a closure, how you can modularize your code, how prototypes actually work, etc.
You simply can't cater for every ability level in a single course.
Modules and closures are needed in any serious JS development out there. Believe me. I worked in a codebase where they thought they "still need not know a single thing about those things" and boy was that a mess.
No wonder JS devs are considered crappy coders with that kind of mindset.
You misinterpret my personal skill level, I don't believe you as I've worked on more than one codebase of both kinds. Most javascript today is still employed as the scripting language it was originally introduced for. It does very little apart from open a lightbox or get something via ajax or something trivial like that.
There is a tiny % of javascript coders like us that use it to write programs and an even tinier percentage that use coffeescript. It is worth keeping that in mind at all times when discussing coding.
You don't have to be an architect in order to make a wall.
I also spent time running courses for non-coders in basic coding in a previous job to allow them to slightly customize their own product. Going in with advanced and abstract concepts like closures is a sure fire way to frustrate a student, not enlighten them.
What made you think that? My point is not that you suck as a developer.
Even when building tiny apps global variables are EVIL and they will eventually make you shoot yourself in the foot. Closures and modules are basic concepts in JavaScript because, well, the language is inherently flawed and you have to work around it.
> You don't have to be an architect in order to make a wall.
But you shouldn't bind bricks with gum either. If you do and the wall collapses, who's to blame? Would you teach bricklayers to bind with gum because using cement is hard for beginners?
This is not an architectural issue. This is about basic skills.
> Going in with advanced and abstract concepts like closures is a sure fire way to frustrate a student, not enlighten them.
I agree there, but my simile about the bricklayers and the gum stands. Sure, you'll frustrate beginners, but what about a last chapter about advanced techniques or at least mentioning it? Specially since closures are a core concept in JS.
Avoiding the issue will never turn beginners into advanced beginners/competent coders. Lack of information in key areas does more damage than excessive information because it creates a false sense of security that eventually leads to sore feet :)
I think some of these sites can do a much better job when it comes learning how to create projects, but I don't necessarily think that is what they were targeting originally.