Best way to learn: from scratch?
From my previous and ongoing experiences I would say that the quickiest way to learn a new programming language actually isn't to dive deep into the complex code. If you start with something too complex and try to figure *that* out you'll soon be overwhealmed and frsutrated. It is just too much to start with.
Maybe the best is to just search for snippets of code that do simple things or small programs that again do simple things or do some powerful things, but with a cleverly simple code.
And then drawn from ideas you've encountered there you start building your own snippets and pieces until you learn enough to be, at some point, ready to dive deeper into complex projects.
I will admit, again, that I am not a programmer. I am considered a "webmaster", but I do not actually know all that much about php, a language that I seem to feel the need for more and more. It is indeed a limitation, especially with drupal that really requires php knowledge to make the most of it, but there's an example. Trying to figure out drupal inside out with my php knowledge would probably require a week or few of dedication which would mean leaving these web projects behind for that long, something I can't afford at all. So I am doing what I can. I'm sure that gradually I will be able to grasp enough to make more and more of drupal and therefore more and more out of this site, which is one of the reasons I chose to switch Nuxified.org to drupal. It forces the need to learn which in turn allows for potential that would otherwise not exist for this site.
But, I'll still have to start somewhere else with something simpler to reach a point where I will really comfortably be able to read and understand complex code such is drupals and, of course, other systems.
OK, all this must be pretty obvious, but then again maybe you have had a bit different experiences. I'd be glad to hear them. Learning is fun, but I think only if done right.