Hi there,
thats a tricky question. I believe that you need to learn from other people to get into programming, because you cannot (and should not) reinvent the wheel.
You should however be cautious about what practices you consider good or bad, and whos source you're reading. It's always nice to learn new techniques, but only because those techniques are new to you doesn't mean that they are new to the community or to the language itself.
Best example is C#, about which we're talking here. C# developed multiple asynchronous programming patterns over time, at least 2, if not even more. All of them have their right to exist, even though you, as a newbie, should attempt to use the latest one only in your projects (if not forced to use an older one), just because the new ones get the best support and have the best performance.
The thing is, programming is a tricky topic, there are always multiple ways to solve things, and there are elegant but stupid ways, as well as tricky but fast ways, and there are ways that look cool, but are just ugly. In the end, you don't have the knowledge yet to decide which way is right or wrong, so all I can say is:
TL;DR:
If you consider truely learning programming, it will take several years to become even considerably good in your favourite languages, because by learning from others, you will deffinitely encounter some pitfalls on your way, which will confuse and disrupt you, but you will overcome them and learn from your (and the others) mistakes and become better each day, little by little. Learning is good, but don't take everything you read as granted, think about it and if it will really improve your workflow or if you should prefer to dig deeper into the topic first before adapting it to your own needs.
And finally, ask questions if you are unsure, so advanced people can help you with the best possible solution.
Best Regards.
Hijacker