Software developers have to repeatedly and continually learn massive number of new concepts, procedures and techniques related to the latest languages, frameworks and technologies up and down the stack.
The best way to learn would of course be to continuously read books in the spare time one isn't solving problems on the job and apply that knowledge.
I personally find reading books too time consuming for me. Books are presented in a depth first fashion, delving into multiple areas in depth one by one. This is not ideal for becoming productive quickly. There is no explicit ordering of how necessary / frequent a particular concept / technique is either.
What other sources of information / classes of sources are highest yield for picking up new technologies quickly [In the sense of getting productive fast].
An example of a high yield resources are well made slide decks. As an example, a slide deck on a language(e.g. javascript) made for experienced developers new to the language is much faster to process than a book. I can absorb the major features of the language, the syntax etc from a good slide deck in a fraction of the time it would take to read the introductory chapter of a book.
Any general comments (or specific sources) on how one would go about learning a new tech stack quickly would help too.
My current stack is linux, apache, python, django, dynamo, js, backbone
The only things that have ever worked for me to learn new technologies and techniques are
1) Taking on a major project in the language/technology
2) Classes
and I've learned a lot more from projects than classes. I've never found textbooks, slides, web pages, and the like, to be useful absent a concrete project to anchor my learning to. That said, if I do have a concrete project, then written materials such as books are hugely useful in accomplishing that project.
In brief, I advocate a sink or swim approach. For instance, if you want to learn Android programming start building a real Android app. Read the first couple chapters of a good Android book at the get go, and some of the official tutorial on the web, and then start coding. Refer back to the book, the tutorial, and the API documentation as needed during development.
After you've completed 2-3 projects in the new technology you'll have the basics down and start to see mistakes and flaws in your early understanding. At this point it's good to attend talks and read books and articles about best practices in the technology. E.g. if you're building PHP web apps, this is when you'll start learning about REST instead of just hacking together whatever seems to work. If you're programming in Java, this is when you read Effective Java. But first you need to have a basic familiarity with your tools and know how to use them, before you can start learning how to use them as a master craftsman.
Of course I have a sample size of one here. Different people learn in different ways, and you may learn differently than I do. But this is what has consistently worked to keep me at the forefront of every technological wave I've chosen to surf for about 20 years now.