Building is the most effective way to learn new skills
Learn by building, not by listening.

The best way to learn skills is to build. However, building is antithetical to the way we are taught in our education system. Under the traditional ‘sage on the stage’ model, particularly prevalent at university, a teacher explains a topic, and at a later date, the knowledge is recalled.
The lecture model makes sense when teaching is viewed as information dissemination. In this model, all we need is a central node to transmit information to as many as possible. Lectures are born out of necessity due to there being fewer teachers than students. One-to-many teaching enables information transfer at scale.
This model dominates at universities. Massive open online courses (MOOCs, e.g. Coursera, Udemy, etc.) take this to the extreme, with student-to-teacher ratios in the millions. A problem arises when students try to apply skills taught through lectures. They tend to fall short. To understand why, we need to understand the difference between knowledge and skills.
Knowledge and skills
The distinction between knowledge and skills is blurry, but for our purposes here it’s important. Many definitions of knowledge include skills within them. They tend to refer to skills as ‘procedural knowledge’ - that is, knowledge about how to perform procedures. To highlight this distinction, from here on when I refer to knowledge I’m referring to non-procedural knowledge - that is, facts about events, laws and theories, and understanding thereof.
Skills should be taught in a different way to these other forms of knowledge. Skills include know-how and intuition - which we learn through direct experience. Skills are procedural, so if you don’t actually do them, they are difficult if not impossible to learn. That may sound obvious, but it’s not how skills are taught at most universities - if skills are taught at all. Universities are built for the sage-on-the-stage. Historically, skills were taught through models like apprenticeships, where people learned under direct supervision from an experienced practitioner. This does happen at universities, but mainly for research purposes rather than directed towards work.
It’s perfectly reasonable for universities to operate without directing teaching towards a career. However, for skills like software engineering that combine deep theoretical and procedural knowledge, there isn’t a good fit to learn it in any existing institution. This is because the lecture model - the dominant model of theoretical instruction - suffers a fundamental flaw. Lectures can work for imparting knowledge but are ineffective for learning skills. This is because lectures lack a crucial component of skill-building: feedback.
Feedback
When you try to do something and fail, you notice the point at which you fail, and seek the knowledge required or practice that skill gap. Feedback is essential to noticing when you fail. Without taking actions, by definition feedback is impossible. Building forces you to self-diagnose faults in your understanding
Useful feedback happens when the intended outcome of your actions is clear. Feedback can either come directly from interacting with a system or from an expert, or ideally both. The best feedback comes when an expert gives input on something that you’ve built.
In some cases, feedback doesn’t work well. This is most obvious when there is no ‘right’ answer. It’s also not always possible to build something like a physical object or code (though it is possible more often than we realise). These tend to be subjects whose purpose is understanding, rather than creation - like history, literature, and philosophy. In these cases, feedback is still possible, but it tends to be discursive with experts or based on a written essay. You also don’t get feedback directly from a system you interact with, but rather from peers and experts.
To learn skills, feedback is integral, and it’s best if gained by interacting with the system you aim to learn to control by building it. In comparison, learning through lectures is dangerous. After a lecture, you feel that you understand the subject matter. But more often than not, you probably couldn’t perform a task using that knowledge. This gap occurs because you do not interact with anything when watching. When you are in control of the outcome, it’s much harder to fool yourself about your progress.
Feeling like you know can be a trap
"Beware of unearned wisdom" - Carl Jung
You should also beware of unearned knowledge. With lectures, you feel like you’ve learned something without actually applying it. The feeling like you know something can be a problem because it leads to self-deceit. If asked an hour later, you could probably explain it quite coherently. Asked a week later, you’d struggle. Moreover, a gap between knowledge and the ability to build something using the knowledge remains. However, you may still recall studying it, which substitutes for knowledge as you may report knowing the topic.
However, it’s also obvious that theory is necessary. Without it, you may not know what to do at all. That both knowledge and skills are necessary for building makes the combination of exceptional explanation and taking actions particularly powerful for learning. You attempt to achieve a goal, discover the theory you need, and find the best explanations to let you make progress.
To learn a new subject, it’s almost always best to dive directly into a problem. By getting your hands dirty and getting feedback, and then plugging the gaps you identify with explanations of theory, you make much more progress.