That's my same experience with programming. That's kind of what I was getting at in this article actually: that you get better by doing your best and making mistakes. Nothing beats hard-earned experience.
To that end, it is good to have exposure to a lot of things that have failed. Seeing how they succeeded isn't as instructive, interestingly.