Having done more than a dozen online courses, here are my thumb rules to separate good learning sources from the bad ones.
The most effective means to learn a difficult skill is to break down into drills. The method would then have us practice these drills in isolation and slowly combine them to finally make up the entire skill. In a programming course, for instance, these drills would start off with the simplest tasks, like teaching you how to output a bunch of characters (starting with ‘Hello World!’) on the screen in different ways. They would then work their way up to building a game on a website. In between, you would have lots of homework to do on your own.
The ineffective sources of learning always come in the guise of a ‘shortcut’. The book or the instructor would indicate how their approach would make the learning easy. They would jump towards building an advanced project real quickly. They then handhold you through its execution, step by step. At the end of the project, you have a euphoric feeling and an illusion that you have accomplished it on your own. However, minus the handholding or with the smallest change in what is required, you are unable to replicate your success.
In essence, look for sources that teach you the hard way, but help you embrace the struggle by breaking it down into manageable bits. Steer clear of sources that promise you ‘shortcuts’, ‘secrets’ or have you master a difficult project within days.