Build that. Or build a small piece of it. Or build a prototype of a small piece of it.
In other words, build something, anything, that makes you want to get up in the morning and skip school to work on it all day. (But don't skip school.)
Make sure to have some kind of online portfolio (github is fine), a place to write about your experiences (a simple blog), and make sure to talk about the difficulties you had (plus how you solved them).
Good luck.
I think the critical thing is to document your experiences for your own use. It doesn't have to be in any particular form.
Online portfolios, open source, blogs, etc. can work very well - but they're just modes of expression. Some people take to them very well and use them very effectively, and that's great. But not everyone needs to have a coding blog. It's just one arrow in the quiver, and you should focus your time and attention wherever it will give optimal results for you.
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.