The most efficient sources of learning are compact like the seeds of a tree.
I once had the privilege to learn from a brilliant but impetuous developer. His breadth of knowledge was only exceeded by his impatience in imparting it. Training sessions with him moved at breakneck speed. He would hook his laptop to a projector, write the code to implement something and explain it along the way without giving us a chance to do it on our own computers. Later, he would email us the code he wrote in the session.
During those sessions with the developer, I could barely keep up with what he was doing. Afterwards, I sat with his code for several hours, replicating it line by line and breaking things along the way. For every hour of instruction with him, I had to invest 5-6 hours of practice on my own.
Initially, I thought his method was inefficient – he was simply too fast and impatient to be a good teacher. But on doing this repeatedly I realized how rapidly I was learning this way. Since most of the learning happened due to my own efforts, I was also able to retain it better. While his method seemed harsh on the surface, it was perhaps the most efficient means of instruction.
To accelerate learning, don’t pick the beginner’s courses. Those are usually too slow. Instead, pick a course you can barely keep up with, but follow each hour of the course with several hours of your own practice.