(Incidentally, I strongly recommend Udacity for learning programming. It's really good.)
I've been programming for over a decade, but after watching Peter Norvig deal with the problems in his Udacity course I came to see the (Level Above Mine](http://lesswrong.com/lw/ua/the_level_above_mine/). Highly recommended for even experienced programmers. The interesting thing about it that things end up being simper rather than more complicated (novices imagine masters writing difficult code, but while dealing with system complexities is an important skill, the ability to make things as simple as possible is a more important one in most cases).
I've just gotten to the end of Udacity's CS262 course in programming languages. It's been pretty good. Wes Weimer, the lecturer, seems to be a really cool guy. There's a quote from HPMOR in the final exam, which I thought was pretty cool.
In the last part of the last lecture, Weimer gives advice on what we should learn next. You can watch it here.
He advises that you learn the following (paraphrased):
I thought that was all really useful (except maybe the last two). I've learned up to his required level of philosophy, cognitive psychology, and religion and ethics. I'm working on the physics and gender studies.
(Incidentally, I strongly recommend Udacity for learning programming. It's really good.)