H. S. Teoh:
The way to improve your coding skills is just to write lots and lots of code. The more you write, the better you'll get at it.
Doing lot of exercise is not nearly enough. You also must do them "smartly". And it's far from obvious what that means. And most schools, movies, TV and most friends don't give you an idea of what that "smartly" means.
I believe that a lot of what tells apart the common people from the people that have mastered their field is that (future or present) masters have found good ways to train themselves. One example of such "smarts" is that you have to keep pushing yourself forward, working mostly on the parts that you find less easy to do.
There so many wrong ways to teach to ourselves, it's hard to do, and it's very easy to get struck in local maxima. And what's worse, often such local maxima are hard to tell from the true maxima, that is the mastering of a field :-)
Bye, bearophile
