A couple of points related to programming.
Learning it in high school was a deeply humbling experience for me, given how my repeated sureness of what my program was doing mismatched that of a computer actually running it. It basically taught me the importance of doubting, double checking and testing even the stuff unrelated to programming.
When I was tutoring physics years later, I would often tell the students: "if you think you understand a concept, you should be able to explain it to a computer in a programming language of your choice." This works better for simple kinematics than for solving Maxwell equations (too many tiny but essential details to take care of in the latter case), but the idea is the same: if you are simply guessing the teacher's password, you will get stuck pretty quickly.
On a different note, a short workshop on one of the variants of TRIZ was quite helpful (the classic TRIZ wasn't).
Did computer programming make you a clearer, more precise thinker? How about mathematics? If so, what kind? Set theory? Probability theory?
Microeconomics? Poker? English? Civil Engineering? Underwater Basket Weaving? (For adding... depth.)
Anything I missed?
Context: I have a palette of courses to dab onto my university schedule, and I don't know which ones to chose. This much is for certain: I want to come out of university as a problem solving beast. If there are fields of inquiry whose methods easily transfer to other fields, it is those fields that I want to learn in, at least initially.
Rip apart, Less Wrong!