I find a great exercise for polishing code is to look at your code and try to explain/interpret what it does to somebody who doesn't know how to read it. Often you'll recognize things like the logical order things should be in, or better names for things based on how you verbalize it to another person that don't occur when you are writing it.
Another idea is to sit down and try to re-write the same code from scratch (without peeking at past solutions) 5+ times. By the time you've rewritten a piece of code many times you have a much better idea what's truly required, and what can be left out!