Learning Programming is a Long Journey

For me I prefer to follow the (70%, 20%, 10%) rule. Here it is.

70% of your learning experience should come from doing the code yourself. Code, code and code, never stop coding. Every time you code you get new errors, go dig for the reasons and solve the issues. With time you will have a wide circle of experience and knowledge in your mind that can never be forgotten. This is the most important part. I am not joking, you need to do much hard work and remember, no pain, no gain.

20% of your learning experience should come from an expert. You need to find an expert in the programming language that you strive to learn from (in the area that you need to learn). My own advice is to have more than one expert.

The first one should be one whose experience is closer to you but still has more experience than you, this dude should be able to know how to bring you from what you are now to what he is now in simple ways. Since was previously in your place not so long ago and knows all the current paths, options and area's that you can develop. And you can learn from him by just looking at how he works.

The second one should be one with much more experience than you (say by 10, 15 or 20 years if you can find one). This guru should be able to energize your passion towards programming and be able to show you the bigger picture of the story. And he will be the best one to influence your journey and provide you the best advise. Don't forget that this guru knows programming history or at least since you were born.

The Third one should be one with experience in another programming language than the one that you are learning. This man will show you the other side of the world that you should know. You should not put all your focus on one programming language only. It might be a great one but you should know that other technologies sometimes are better in specific systems and scenarios. And you need to know what those specific times are.

Don't forget all the 3 gentlemen above should not provide you more than 20% of your learning knowledge.

10% of your learning experience should come from reading. Read books, read the language specifications. I advise you to start with the official books. You can also read articles and of course experts discussions in the online communities.

I hope that will provide you a glance.