Something I've been thinking about:
When coding, especially if someone else is going to be coding after you, keep your solutions as simple as possible. Experiment with all the cool, complex features in your free time, but on actual projects, keep it simple. Your goal isn't to show how 'clever' you are by demonstrating your 'programmer's vocabulary.' Your goal is to get things done in a fashion that works, for one, and in a fashion that will make alteration/refactoring down the line simple. The less mental processing someone has to do to understand your code, the better. In fact, it'll be helpful to YOU as well, if you have to revisit your code. You might understand what's going on while you're coding it, but 5 months down the line, that clever solution can be extremely tough to decipher.
Take time to actually learn the language you're utilizing and focus on the fundamentals of programming. A lot of guys want to rush out, learn the bare minimum and attempt to create this 'awesome app.' They want to be cheap in their education and use nothing but online tutorials and start slapping together solutions together by smashing code together until things work, and when things stop working, they go hit a place like stackoverflow up and then plug in someone else's solution without really understanding what is going on. Focus on the programming skills first and the apps will come.
Learn to use libraries, but never be dependent on them. In the web design/development world, you have a lot of people who know how to use jQuery, but never really bothered learning Javascript. When jQuery doesn't have a solution to their problem, they're stuck. Those who actually know Javascript can pick up jQuery rather simply, and in situations where some particular library doesn't offer you a solution, it will be no problem to create your own.