I guess it depends what level you are as to what you need to focus on, but these should be good overall goals for anyone:
Learn lots of languages, but learn one really well. Learning lots of languages goes without saying, but getting to the nitty gritty of a language and understanding how it works at a lower level than the code you write and learning to take advantage of it to solve different problems and becoming comfortable enough with a platform that it feels natural to you will teach you an awful lot about programming in general, and having a "go to" tool that you can whip out and solve a problem without thinking about it will only add to the cycle, giving you more problems to solve in ever different ways.
Learn to identify and replicate patterns. The usual buzzwords do apply, such as MVC and Observer/Observable, Inversion of Control, Separation of Concerns, but don't focus too hard on being too "correct" and applying patterns too rigidly (a common mistake). The most important thing is to learn to identify parts of your own programs that are in themselves patterns and the problems that they solve, and learn to apply them in new and existing projects. You'll soon build up a toolbox of paradigms and patterns in your head that allow you to approach problems with a much more top level point of view, which means you can spend more time and effort designing the parts of your programs that need the most attention and not have to think too hard about the plumbing.
Be a good house keeper. Comments are so important, as is neat and tidy code. Everything is nice and fresh in your mind when you're working on it and many things seem obvious, but 6-12+ months later you'll have a fresh pair of eyes and you'll have to re-read and comprehend your own code from scratch. Reading other people's code (including your own later!) is a constant source of education - don't make it harder for yourself ;-)