Learn Foreign Languages
Believe it or not: programmers need to communicate. A lot, actually.
There are phases in a programmer's life when the main communication is with the computer. With the programs running on that computer, actually. This communication is about expressing ideas in a machine readable way. A very exciting thought: programs are ideas turned into reality, with virtually no physical substance involved.
Programmers need to be fluent in the machine's language, and in the abstractions that can be related to that language via development tools. It is important to learn many different abstractions. Otherwise, some ideas become incredible hard to express. Good programmers need to be a few side steps away from their daily routine, and be aware of other languages that are expressive for other purposes. The time will come when this pays off.
Beyond communication with machines, programmers need to communicate with their peers. Today's larger projects are social endeavors rather than applied art of programming. It is important to understand and express more than the machine readable abstractions can. Most excellent programmers I know are also very fluent in their mother's tongue, and typically in other lagnuages as well. This is not just about communication: speaking a language well also leads to a clarity of thought that is indispensible when abstracting a problem. An this is what programming is also about, see above.
Beyond communication with peers, a project has many stakeholders, most of which have little or no technical background. They are living in marketing and sales, they are end users in some office (or store, or at home) - and you need to understand them and their concerns. This turns out impossible if you cannot speak their language. You might think the talk with them is quite OK; they probably don't.
If you talk to accountants, you need a basic knowledge of cost centre accounting, of tied capital, capital employed, et al. If you talk to marketing, AIDA should be familiar to you. All these domain specific languages need to be mastered by someone in the project. Ideally, by the programmer.