Programming specific I think is easier in English.
I speak 3 languages and understand 4. Talking about programming, computer science and technology in non-Engish is awkward. It either is necessary to just use English terms anyway for every other noun or struggle with awkward translation of them.
Things like kernel, doubly linked list, hash table, binary tree, greedy algorithm, they are all invented in English and when translating them to other languages, they have a translation but it just sounds very awkward.
So you can have 2 people talking and one uses all translated terminology one uses the "native" equivalent. And yeah if both happen to speak English they'll understand what they mean, but if they don't then they might as well speak different languages. But if they already speak English and it is a public forum, might as well try to speak English.
Perhaps the point isn't so much the translation of technical jargon, but the ability to discuss meaning and explain nuances. If you work in say, a Japanese environment, you might well pepper your Japanese conversation with terms like "kernel", "hash table", but the sense of your conversation is mostly contained within the Japanese portion of the vocabulary used.
I wonder how corporate programmers in non-english speaking countries communicate about programming. I would imagine that they use their local language for docs, commit descriptions, email lists, etc.
I think most of the source code people can look at is for open source projects and they always go with english as the default even when there are mostly non-english speaking programmers.
But what does it look inside private corporations?
Language is English. English docs, English presentations.
Meetings are done in German unless a non-German sits in. Then, it is done in English.
I can't even begin to explain how awkward it is to see source code once in a great while where the dev used German words as variable names. Good luck trying to get a colleague to understand what'S going on if he doesn't speak German.
In short, you write in English so the lion share of the world can read it. And if people really have a question, they should be able to express that in English. What good does it to post that question in a language that can only be read by a fraction of the developer community?
And with that in mind, I also expect others, like Chinese devs to hand over source code with English variable and class names. Otherwise, again, who do they expect would be able to work with the code if the naming of things don't make sense?
I went to a Czech computers science college for a year (on Saturdays only), and people here usually use the English terms. Oftentimes there's both a Czech term and an English one and people will just use the English one because everyone saw it like that in the documentation. Sometimes they would pronounce things in a very funny way--like one of my professors would always say `eunich` instead of `unique`, or `byten` instead of `python`. It took some additional mental energy on my part to process that. (I'm actually Czech, but I'm used to native English much more than I am to Czech English).
> But what does it look inside private corporations?
In my experience (technical companies in countries where German is the main language) most of them use either English straight away or their native language mixed with a lot of english nouns. I never ever saw someone translating "commit" for example.
Yeah in Indonesia at least we just use them straight away. It's because not only it sometime hard to find synonymous meaning in our native vocabularies it also not sound as natural when you translate them. Everybody understand them anyway if you said them in English.
I have worked solely in small development shops and startups in Sweden. I none of them was the usage of swedish in commits, documentation or code acceptable and in most it was outright forbidden. Very rarely have there been developers who did not speak swedish, still english was the de facto language for everything. Where I currently work the policy is that only fleeting conversations may be conducted in another language than english.
In my opinion this is they way it should work everywhere, code in any other language than english is not acceptable.
There is a book http://www.coding places.net/ about among other things language and software in Brazil. It depends on the audience with open source being more English. But it does vary by country, China seems much less English in usage.
I've worked for a Taiwan-based company for years. It's a somewhat multilingual society, but the default in workplaces is, of course, Mandarin, and English proficiency of the overall population is lower than you might expect (and than many would like; there's been a push for better English education in public schools lately).
In this company, at least, you would imagine somewhat inaccurately.
I speak English and three or four words of Mandarin. Their English proficiency ranges from equal to my Mandarin to almost idiomatic American English (a few having spent between a couple years and half or more of their lives working and/or studying in the US).
For live conversations, "English" technical terms are just a given, even for those who I can't even hold an minimal English conversation with. There are "translations" of things like "pointer", "file", "hard drive", etc.. They don't use them. Those most fluent in English engage in more significant code switching, with entire sentences or large sentence fragments in English.
I can sometimes extract significant meaning from conversations that are not otherwise in English because of this. They are frequently surprised by this, because they don't even think about it. These parts of English have simply been incorporated into a sort of programmer's dialect, it is part of their "native" language now.
Those who are most fluent in English, however, have told me they sometimes find it easier to have technical conversations entirely in English. I've heard two different reasons given for this, sometimes by the same person. One is the most obvious: This industry basically originated in English-speaking countries, so it's built on the assumption of English. The second is probably more locale-specific: Mandarin is apparently less precise and/or concise than English. One person described it as more "flowing" or "stream-of-consciousness", another as "based on feeling". Maybe not ideal for a field where precision is critical.
Documentation follows a similar pattern. The more comfortable they are in English, the more likely they are to use English, at least in part, in documentation. Commit messages, interestingly, are much more likely to be in English than Chinese.
Within code, APIs, and file formats, identifiers are almost invariably in English. Sometimes strange English, but English nonetheless. I imagine this would be less the case if we'd had UTF-8 source code 30 years ago, but it's where we are now. Filenames are also usually in English.
Comments are another mixed bag. Some developers whose English is very poor nonetheless comment exclusively in English, others use primarily Chinese. Again, the more fluent are likely to comment entirely in English. (This assumes the existence of comments at all, of course.)
Obviously when they specifically intend for me to read or deal with something, or are modifying code I wrote, everything is in English, but that's a fraction of what goes on in R&D.
Personal experience: weird jargon is a good thing. I've read a book on Hadoop once and it didn't use weird jargon - everything was in my native language. It was super hard to read - basically I needed to translate the book from my native language into English in my mind.
I think that's hugely dependent on the country. For languages with relatively few speakers translating (technical) texts into English is relatively more expensive, so people have to read more English to read e.g. books on programming. That makes them more proficient in reading English, thus decreasing the market for more expensive translations, leading to fewer translations, etc.
Learning programming from English texts will affect choice of variable names, function names, etc.
Dijkstra is a counterexample (http://en.wikipedia.org/wiki/Semaphore_(programming)#Functio...), but that was in 1965, when there weren't hours of subtitled English-language television each day, or thousands of programming texts that were only available in English.
Exactly. My native language is not English (it's Lithuanian) but when I talk about some rather hard-core topics (such as embedded systems), I just say that I will switch to English and continue talking in English. Because a mix of 70% English and 30% Non-English words is just annoying. When talking about general programming, nothing too deep, I am fine with my native language. You might think I am an arrogant ass hole, but...
If I am talking with another person that speaks my mother tongue I'd rather keep just the nouns awkward instead of making the whole conversation sound awkward. TBH, keeping jargon untranslated is not that big of a deal. Jargon is its own separate vocabulary - its not as if a non-techie english speaker will know what you are talking about if you mention a kernels or a data bus.
I speak 3 languages and understand 4. Talking about programming, computer science and technology in non-Engish is awkward. It either is necessary to just use English terms anyway for every other noun or struggle with awkward translation of them.
Things like kernel, doubly linked list, hash table, binary tree, greedy algorithm, they are all invented in English and when translating them to other languages, they have a translation but it just sounds very awkward.
So you can have 2 people talking and one uses all translated terminology one uses the "native" equivalent. And yeah if both happen to speak English they'll understand what they mean, but if they don't then they might as well speak different languages. But if they already speak English and it is a public forum, might as well try to speak English.
Anyway that is just my perspective.