For me it works like this (not just programming, but car tuning, guitar playing, house building... all random stuff i like to do, often not for profit):
1) get excited about something
2) forget about rules, advises from experts/"experts" and do it how you feel you should do it. less constraints in the beginning - more chance you will never notice these artificial walls.
3) get stuck many/many times in some basic stuff, because of #2 =))
4) start to read/learn/ask knowledge from expert sources.
In short - try and then learn right way.
Again, it works for me, but I believe - this way of thinking is true hackerish way.
For me it works like this (not just programming, but car tuning, guitar playing, house building... all random stuff i like to do, often not for profit): 1) get excited about something 2) forget about rules, advises from experts/"experts" and do it how you feel you should do it. less constraints in the beginning - more chance you will never notice these artificial walls. 3) get stuck many/many times in some basic stuff, because of #2 =)) 4) start to read/learn/ask knowledge from expert sources.
In short - try and then learn right way.
Again, it works for me, but I believe - this way of thinking is true hackerish way.