Learn Foreign Languages

From WikiContent

(Difference between revisions)
Jump to: navigation, search
Current revision (12:46, 24 July 2009) (edit) (undo)
 
(4 intermediate revisions not shown.)
Line 1: Line 1:
-
Believe it or not: programmers need to communicate. A lot, actually.
+
Programmers need to communicate. A lot.
-
There are phases in a programmer's life when the main communication is with the computer. More precisely: with the programs running on that computer. 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.
+
There are periods in a programmer's life when most communication seems to be with the computer. More precisely, with the programs running on that computer. This communication is about expressing ideas in a machine-readable way. This remains an exhilarating prospect: 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.
+
Programmers need to be fluent in the language of the machine, whether real or virtual, 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 incredibly hard to express. Good programmers need to be able to stand outside their daily routine, to be aware of other languages that are expressive for other purposes. The time always comes 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.
+
Beyond communication with machines, programmers need to communicate with their peers. Today's large projects are more social endeavors than simply the applied art of programming. It is important to understand and express more than the machine-readable abstractions can. Most of the best programmers I know are also very fluent in their mother tongue, and typically in other languages as well. This is not just about communication with others: Speaking a language well also leads to a clarity of thought that is indispensable when abstracting a problem. And this is what programming is also about.
-
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.
+
Beyond communication with machine, self, and peers, a project has many stakeholders, most with a different or no technical background. They live in testing, quality and deployment, in marketing and sales, they are end users in some office (or store or home). You need to understand them and their concerns. This is almost impossible if you cannot speak their language — the language of their world, their domain. While you might think a conversation with them went well, they probably didn'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, [http://en.wikipedia.org/wiki/AIDA Aida] should be familiar to you. All these domain specific languages need to be mastered by someone in the project. Ideally by the programmer, since s/he is at the point when ideas come into life using a computer.
+
If you talk to accountants, you need a basic knowledge of cost-center accounting, of tied capital, capital employed, et al. If you talk to marketing or lawyers, some of their jargon and language (and thus, their minds) should be familiar to you. All these domain-specific languages need to be mastered by someone in the project - ideally the programmers. Programmers are ultimately responsible for bringing the ideas to life via a computer.
-
And then, life is more projects. If you want to relate to people beyond the software industry, it may even be useful to know what is harder than passing a camel through the eye of a needle. To know when to listen rather than talk. To know that most language is without words. To be.
+
And, of course, life is more than software projects. To know another language is to have another soul [1]. For your contacts beyond the software industry, you will appreciate to know many languages. To know when to listen rather than talk. To know that most language is without words.
-
Whereof one cannot speak, thereof one must be silent. (Wittgenstein)
+
 
 +
: ''Whereof one cannot speak, thereof one must be silent.''
 +
: Ludwig Wittgenstein
 +
 
 +
 
 +
By [[Klaus Marquardt]]
 +
 
 +
This work is licensed under a [http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3]
 +
 
 +
 
 +
 
 +
Back to [[97 Things Every Programmer Should Know]] home page
 +
 
 +
[1] attributed to Carolus Magnus, http://en.wikipedia.org/wiki/Charlemagne

Current revision

Programmers need to communicate. A lot.

There are periods in a programmer's life when most communication seems to be with the computer. More precisely, with the programs running on that computer. This communication is about expressing ideas in a machine-readable way. This remains an exhilarating prospect: Programs are ideas turned into reality, with virtually no physical substance involved.

Programmers need to be fluent in the language of the machine, whether real or virtual, 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 incredibly hard to express. Good programmers need to be able to stand outside their daily routine, to be aware of other languages that are expressive for other purposes. The time always comes when this pays off.

Beyond communication with machines, programmers need to communicate with their peers. Today's large projects are more social endeavors than simply the applied art of programming. It is important to understand and express more than the machine-readable abstractions can. Most of the best programmers I know are also very fluent in their mother tongue, and typically in other languages as well. This is not just about communication with others: Speaking a language well also leads to a clarity of thought that is indispensable when abstracting a problem. And this is what programming is also about.

Beyond communication with machine, self, and peers, a project has many stakeholders, most with a different or no technical background. They live in testing, quality and deployment, in marketing and sales, they are end users in some office (or store or home). You need to understand them and their concerns. This is almost impossible if you cannot speak their language — the language of their world, their domain. While you might think a conversation with them went well, they probably didn't.

If you talk to accountants, you need a basic knowledge of cost-center accounting, of tied capital, capital employed, et al. If you talk to marketing or lawyers, some of their jargon and language (and thus, their minds) should be familiar to you. All these domain-specific languages need to be mastered by someone in the project - ideally the programmers. Programmers are ultimately responsible for bringing the ideas to life via a computer.

And, of course, life is more than software projects. To know another language is to have another soul [1]. For your contacts beyond the software industry, you will appreciate to know many languages. To know when to listen rather than talk. To know that most language is without words.


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein


By Klaus Marquardt

This work is licensed under a Creative Commons Attribution 3


Back to 97 Things Every Programmer Should Know home page

[1] attributed to Carolus Magnus, http://en.wikipedia.org/wiki/Charlemagne

Personal tools