Learning isn't linear.
When starting to learn a skill, (like CS, playing piano, or making music), the first school-mindset-fueled instinct was to have heavy prerequisite knowledge and experience. On the surface, it sounds commonsense. Like obviously you need to know music theory or how computers work before you can play piano or can code (and not explode).
But there is an alternative, harder, bombastic-time-saving way to gain skill. Forget all that.
Just articulate what you want to do or your end goal (will take music as an example). So you might want to make cool EDM songs of your own or make minimalistic songs as EDEN makes. In the first case, you decide to remix some of those songs by illegally downloading acapella (isolated elements of a song, example), but now you need to find a way to assemble them in your style.
Congrats, you have just discovered a need for Digital Audio Workspace, you picked one (the open-source ones probably), and boom! You exported and made your first song (it took me 2 weeks to do all that). But here is a problem, the party song that you wanted to go to feels more sad and angry, but it feels comedic (true story, happened to me).
Congratulations, you have again organically discovered the need for understanding music theory.
This is the best part.
Now while you were studying it, you have your own first-hand experience of the music creation process, you can immediately put anything you learn into practice. Compares to that person who started with music theory, that guy will take 10 times more time to understand and will have to weld the theory in his mind into the practical skill application. The learning transfer for you is very easy.
Go direct, forget prerequisites, and learn them on just-in-time basis.
An essay inspired by Ultralearning by Scott Young