A friend forwarded me a pretty unconventional article called 5 principles for programming. It starts with a very rare disclaimer: "I didn’t invent any of them, and I don’t always follow them. But since nobody seems to know very much about making good software, it makes sense to try to distill a little wisdom when possible."
The five principles mentioned there are:
1. Fail Fast
2. Write Less Code (and Don’t Repeat Yourself)
3. Computer Programs Are For People
4. Do The Right Thing
5. Reduce State
And finally, the author gives a piece of advice that I think is very valid, especially if you don't have a comp-sci educational background (even for the comp-sci folk, good list to revisit outside the exam-cram-season):
1. Learn a functional programming language
2. Learn how operating systems work
3. Learn how databases work
4. Learn how to read a computer science paper
5. Learn as much math as you can (but which math…)
Go read it.