I went through a lot of MOOCs early on when learning development (still am). Some courses don't really stick that well to me partially because the author gleams over important steps quickly (skips over the core logic / behind the scenes work). Or there's no comments on videos (lynda.com) so sometimes there's some critical information missing that the author didn't forsee. On things like youtube playlists, its sometimes hard to gleam "why" the author is thinking a certain way when making an implementation to an app, or what context they are thinking of when writing their code. Some comp science courses (CS50) are great for learning the core concepts, but it would be nice to have a course to teach you how to "think" like a programmer

The course that really changed my perspective on development in general was this one https://watchandcode.com/. Its a javascript based course that looks at one simple CRUD (todomvc) app in both vanilla js and jquery.

It assumes you know nothing about programming. To give a crash course overview of what the contents look like

First,

- It doesn't waste time making you setup a dev environment

- First step it asks you to do is play with the todomvc app, to get familiar with the end product

Iteratively,

- The author asks you to write the requirements of the next steps, e.g. "It should have a way to a place to store todos"

- Next, the author teaches you just enough things to meet those requirements in the console

- You implement those simple things per your requirements

- Repeat

- Throw in some computer science concepts only when its needed in context of next problem

What sets it apart from other courses is it teaches you how to "think" like a programmer regardless of what programming language you use. I would say its a modern day video implementation of something similar to books like "Clean Code" or "Pragmatic Programmer" where it discusses why things are done in certain order.

At the end of it you have a nice implementation of the todoMVC app in a prototype pattern / MVC format, and you understand why it was written this way. Next video series he goes into how this implementation is different than the jQuery implementation of todoMVC. But first you would have to understand how to read someone elses code, so he covers how to methodically break down a codebase (what to read, what not to read, how to determine starting points to understand what the code is doing).

Then he introduces you the tools to do so (debugger). Then how to write your own native javascript reduce function and break down the MDN docs. Then how to write TDD (test driven development) based on things discussed earlier on the course. What the `this` object is, what `apply` is, what routing and templating are used for, in context to singular project made above

I haven't finished the 2nd series he's made (26% finished), but it goes into much more detail later about regex, clojures, etc. I think by the end of it you can largely ignore what YDKJS has to offer since its all covered in this course, in a slow methodically well planned out manner. To give you a perspective of how long the series is

- Series 1 is short and to the point (4-5 hours)

- Series 2 is ongoing and about 30-40 worth of video content. On one video he talks about writing a native javascript reduce implementation for 2 hours.

Watching this series makes me realize how my lackof knowledge of discrete math / core math / data structures would ideally make a lot of programming concepts much easier