As been said in the above posts, the most important way to improve your programming, is to
* Program datastructures
You just start with simple things, like binary search trees. It makes you way more consious about the quality if your code. It also points you strongly towards performance issues.
* Patch bugs
No doubt about it, this is the most useful way of improving your skills. You read lots of code written by other people. This means you'll read pretty crappy code
and you will automatically think of better ways to solve problems.
* Write small apps for yourself
If you feel something is missing somewhere, or you need a tool to do something simple, if you don't find something you like, just scratch your own itch and start creating it yourself. Often these small things, but that's exactly where to start!
good luck and see you around here on the forums,
Elluva