My first programs where writ in BASIC copying code line by line from hobby magazines. Eventually I figured out what different things did by changing little bits and seeing what happens. Same technique applies today but on a way more interesting scale. Copying is significantly easier! And learning by doing is getting easier every day too.
A great technique for trying lots of different changes is by writing tests. I like to use tape with tap-spec to write my tests. Here's an example github.com/brianleroux/tiny-json-http/blob/master… …I make a small change, run the tests to see what happens, rinse and repeat.
I recommend getting familiar with deploying. All the time. The more you ship the closer you'll get to something novel or, at least, interesting.
glitch.com seems like a really great place to learn. There's the tooling to ship code built in, lots of examples and a friendly dev community to boot. Good luck and don't hesitate to ask more questions! 🚀