I agree with the overall point here, but isn't this just the same as saying "practice" and/or "keep practicing, especially with those that are better than you"?
If you keep practicing the wrong way, you'll never improve.
I can't count the number of times that I've seen developers (or classmates) try really complex things without understanding what's going on underneath, and then not be able to understand why it doesn't work.
You have to know what you're doing wrong, so you can stop doing it.