I started programming when I was 18 years old, but I did it just because it was required in school, I just did what was required, that's it. I didn't retain any information, nothing at all.
When I started university, I began to take things a bit more seriously. A lot of my curriculum was focused on Object Oriented programming, which was cool, but wasn't what I wanted to learn.
Horrendous, I had been too busy following guides and just copy pasta coding. When it came time to trying to build something from scratch, I had no idea what I was doing because I wasn't actually learning, I was given everything.
In reality, coding is about reading documentation, applying techniques given by other developers and problem solving (stack overflow is a good friend). That is how you learn to code. The biggest problem with following guides to build projects is that you're given everything. A large part of software developing is problem solving, by following guides that aspect is eliminated.
The greatest advice I could give is simply just start something. Whatever you want to build, whether it be a web application or a mobile app, etc. Open the docs, read the "getting started" section, and voila. You're on your way to creating and finishing your first real project.
Also a nice side tip that helped me learn: Try and code for at least 1 hour per day. This really helps retain things that you've learned on previous days and keeps your mind fresh. Nothing sucks more than returning to a 3 week old poorly documented code base :P