One huge mistake I think a lot (but not all of) the bootcamps are making is taking the easy route of simply using JavaScript to teach both frontend and backend. JavaScript is a TERRIBLE first programming language. I usually have to spend 2-3 sessions per mentee explaining the idiosyncrasies of JavaScript, where some of the OOP concepts actually come from, and how things work in other languages to put into context the really terrible implementation of these features in js. Main reason being, I tell them, things that run in the browser are different from almost every other runtime environment because on the web it is extraordinarily difficult to deprecate/change things, because if you do then X% of the web breaks. This is why we still to this day have things like "quirks mode" etc. Once a behavior is out there in the wild, you basically have to support it as a browser, and you can drop support for it virtually never. This process has led to the JavaScript we have today -- mountains of functionality dumped on top of a backwards compatible core riddled with idiosyncrasies and poor design decisions that didn't become poor until they were left unchanged for ~20 years.
Anyway, my point is, it's very important to make sure students understand that their confusion surrounding how things are structured in JavaScript is natural, and that they can (and should, on their own preferably) look forward to learning more stable/sensical languages in the near future. It's a shame I have to do this for my students instead of the course just doing it for me, however.
Anyway, my point is, it's very important to make sure students understand that their confusion surrounding how things are structured in JavaScript is natural, and that they can (and should, on their own preferably) look forward to learning more stable/sensical languages in the near future. It's a shame I have to do this for my students instead of the course just doing it for me, however.