Programmers need to communicate. And communicate a lot.
In a programmer’s life, there are periods when communication mainly occurs with the computer—more precisely, with the programs running on it. This communication is based on expressing ideas in a form understandable to the machine. The ability to turn ideas into reality through programs and with almost no use of physical matter still evokes delight.
A programmer must be fluent in machine language—real or virtual—and the abstractions that can be linked to this language using developer tools. It is important to know many different abstractions; otherwise, some ideas are very difficult to express. A good programmer should be able to go beyond everyday routines and recognize that there are other languages that are more expressive for other tasks. At some point, this knowledge will definitely pay off.
Programmers need to communicate not only with machines but also with their colleagues. A modern large project is more of a social enterprise than just an application of the art of programming. It requires understanding and expressing more than the available machine abstractions allow. The best programmers I know are usually very proficient in their native language and often in other languages as well. And this is important not only for communication: the ability to speak a language well means the ability to think clearly, without which it is impossible to abstract a task. And this is also part of programming.
You have to communicate not only with the machine, yourself, and colleagues, but also with many other project-related individuals who may not have technical training. They are involved in testing and quality control, application deployment, or marketing and sales. Sometimes, they are end users in an office (or in a store, or at home). It is necessary to understand them and know what problems they face, which is almost impossible if you cannot speak their language—the language of their world, their subject area. When you think a conversation with them went well, they might not think so.
If you are communicating with accountants, you need to have a rough idea of what “cost accounting by origin,” “invested capital,” “net assets,” etc. mean. If you are talking to marketing specialists or lawyers, their jargon and language (and thus their worldview) should be somewhat familiar to you as well. Someone on the project team should be proficient in all these domain-specific languages—ideally, the programmers. Ultimately, programmers are responsible for the practical implementation of ideas through computers.
And of course, life consists of more than just programming projects. As Charlemagne noted, knowing a second language means having a second soul. You will appreciate the benefits of knowing foreign languages when you have to communicate with acquaintances outside the field of software development. You will understand when it is better to listen than to speak. You will learn that most communication happens without words, as what cannot be spoken about should be passed over in silence.