Suppose you want to learn a new language, framework, or technology. Using primarily online resources, how do you measure your progress? How do you know you've learned enough to call yourself proficient? (That's probably my biggest problem: not knowing what I don't know, that someone who competently uses a technology should.)
Here are a few things that don't work for me, that are popular recommendations:
"Read the API/language spec." Some autodidactic genius could do this, but not me.
"Just write a project that scratches an itch." My itches never cover more than about 12% of any given language, library, or framework.
"Read code." That's a great way to see what idioms work in a language that you can already read, but a lousy way to learn it. Also, I have no way of knowing what isn't represented by the code I read.
"Do a tutorial/read a book." Most tutorials are crap, and if I don't know anything about a topic, I can't separate the wheat from the chaff. Likewise with books, which also carry with them a 30-50 dollar investment if I can't find them elsewhere.
What other strategies are out there? Am I doing the above ones wrong? (And if so, what's the right way?)
Here are a few things that don't work for me, that are popular recommendations:
"Read the API/language spec." Some autodidactic genius could do this, but not me.
"Just write a project that scratches an itch." My itches never cover more than about 12% of any given language, library, or framework.
"Read code." That's a great way to see what idioms work in a language that you can already read, but a lousy way to learn it. Also, I have no way of knowing what isn't represented by the code I read.
"Do a tutorial/read a book." Most tutorials are crap, and if I don't know anything about a topic, I can't separate the wheat from the chaff. Likewise with books, which also carry with them a 30-50 dollar investment if I can't find them elsewhere.
What other strategies are out there? Am I doing the above ones wrong? (And if so, what's the right way?)