> "if you don't have the first part of dedicated learning and wide exposure (without a motivating problem per se) you inevitably end up doing the lazily evaluated "stack overflow driven development" since you haven't been exposed to the breadth of the language, frameworks, etc systematically. in other words, you don't know what you don't know."
Totally agree. I'm doing exactly this. But instead of only read books and type the code, I'm also after each section of the resource (doc || book), practicing code challenges :)
I actually started the same way. In the article I focused more on step 4, but in step 2: "Familiarize with the syntax and semantic of the language" I watched a video course and built two mini projects.
To practice the language specifically though, coding challenges are pretty effective, funny and more focused IMO
The approach is actually learn enough about the language (through docs or a book) and practice such knowledge solving code challenges and writing your on tests first to get exposed for a more real environment.
But I believe that solving this kind of challenges forces one in a good way to know more about what the language has to offer, while keeping motivated to learn its constructs before being able to create real apps.
I did 3.5 years of Mechanical Engineering, but I realized that what I really love is programming...
So I changed to a CS course, but I did just 1 semester and dropped out... The educational model nowadays have countless problems.
For that reason, I created this list, for those (like me) that want to have the knowledge offered in a CS course, but without spending too much time/money.