Choose an idea, preferably something personally useful to you (don't spend too much time on this part because ultimately it's the process itself that matters) then build it. You'll need to pick a language/framework and build something with it, so go with whatever you're most familiar with, or pick something you're interested in learning.
In the process of building something, not only will you learn the general foundations but you will inevitably create your own bugs and rabbit-holes you'll need to learn to fix anyway.
At that point I would say it's a good idea to start contributing to open source projects, fixing bugs, extending features, etc. But not before you've reached some low-hanging fruit and built some self-confidence in building new software.