# Do countries with predominantly non-English speakers produce worse computer programmers?

**URL:** https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615
**Category:** Factual Questions
**Created:** [April 8, 2014, 3:05am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615 "2014-04-08T03:05:15Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Reply](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/reply/32/15952_2.png) [@Reply](https://boards.straightdope.com/u/Reply)
#### Post date: [April 8, 2014, 3:05am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/1 "2014-04-08T03:05:15Z")

</div>

Seems like the most popular computer languages, from Assembly to XML, are all English-derived.

Do programmers from non-English speaking countries have a significantly harder time because of the language gap, or are English-based keywords simple enough to rote memorize that it’s not a big deal?

I understand that the logic behind code is what’s difficult, and pseudocode can be in any human language, but how much does it slow down work to have to try to remember what the words “case” vs “while” mean? Or maybe having to refer to a dictionary in addition to any reference doc to try to figure out what the words “System.TimeZoneInfo.ConvertTimeFromUTC” mean? Seems even if an [IDE](https://www.google.com/search?q=Visual+Studio+Chinese&es_sm=93&source=lnms&tbm=isch&sa=X&ei=_WdDU5CEAsjh2QX5loGgCg&ved=0CAgQ_AUoAQ&biw=2560&bih=1315#facrc=_&imgdii=_&imgrc=8Q89m3NafK_CYM%253A%3BbSc8gLZbSUavuM%3Bhttp%253A%252F%252Fwww.ningzhang.org%252Fwp-content%252Fuploads%252F2009%252F04%252Fvschs.jpg%3Bhttp%253A%252F%252Fwww.ningzhang.org%252F2009%252F04%252F22%252Fadd-rich-intellisense-for-your-silverlight-controls%252F%3B951%3B718) is in another language, the code itself remains English – at most they get a tooltip, but the function names and sorting are still unlocalized.

I know there are [non-English programming languages](http://en.wikipedia.org/wiki/Non-English-based_programming_languages); are those actually used much or do those countries just force their programmers to learn rudimentary English?

---

<div class="post-metadata">

### Author: ![Telemark](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/telemark/32/372_2.png) [@Telemark](https://boards.straightdope.com/u/Telemark)
#### Post date: [April 8, 2014, 3:11am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/2 "2014-04-08T03:11:57Z")

</div>

> [@Reply](#):
>
> Do programmers from non-English speaking countries have a significantly harder time because of the language gap, or are English-based keywords simple enough to rote memorize that it’s not a big deal?

Not a big deal. I’ve worked with lots of coders from India and China (both here and outsourced) and English keywords in coding languages isn’t an issue. They’re really not very complex compared to the concepts of programming.

---

<div class="post-metadata">

### Author: ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)
#### Post date: [April 8, 2014, 3:19am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/3 "2014-04-08T03:19:10Z")

</div>

In fact, the people who win international coding challenges are frequently Indian and Chinese, IME disproportionately so. (Though I was under the impression that in India many people have a dialect of English as their first language; in fact, isn’t it one of India’s official languages?)

---

<div class="post-metadata">

### Author: ![njtt](https://avatars.discourse-cdn.com/v4/letter/n/ecd19e/32.png) [@njtt](https://boards.straightdope.com/u/njtt)
#### Post date: [April 8, 2014, 6:26am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/4 "2014-04-08T06:26:29Z")

</div>

I am not a computer scientist, so perhaps I am wrong about this, but it seems to me that it ought to be fairly trivial to modify the compilers or interpreters used with programming languages so that you could write your programs using the foreign language equivalents of the quasi-English words used in a programming language (so where an English speaking programmer might use a **Do…While** loop, a French speaker could use a **Faire…Pendant** one, for instance). Is this not done? If not, why not?

---

<div class="post-metadata">

### Author: ![Jragon](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@Jragon](https://boards.straightdope.com/u/Jragon)
#### Post date: [April 8, 2014, 7:01am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/5 "2014-04-08T07:01:51Z")

</div>

> [@njtt](#):
>
> I am not a computer scientist, so perhaps I am wrong about this, but it seems to me that it ought to be fairly trivial to modify the compilers or interpreters used with programming languages so that you could write your programs using the foreign language equivalents of the quasi-English words used in a programming language (so where an English speaking programmer might use a **Do…While** loop, a French speaker could use a **Faire…Pendant** one, for instance). Is this not done? If not, why not?

It could be done fairly easily. Compilers are generally made of two parts: a lexer and a parser. A lexer converts strings of characters into symbols, and then the parser interprets those symbols and converts it into the program. So a lexer would convert the literal string “for” into the symbol FOR (which in reality is probably a unique numeric ID); it would be trivial to make the lexer interpret any other word, be it “cat” “sheep” or “asdlkfjlckb” and pass the symbol FOR to the parser. (With caveats that you have to avoid a certain amount of overlap between keywords).

Why is this not done? Largely portability. If you write your code with French variable names I may have difficulty reading it, but I absolutely can download your code, compile it, and run it, and it will do what it’s supposed to. To make it international you’d have to introduce a bunch of undesireable things.

The problem comes in with large programs that include external libraries. You could make a compiler flag like -locale=“fr\_FR” or -locale=“us\_EN”, but what if your library is in French and mine is in English? Hell, what if my English one happens to use the word **faire** as a variable name? Suddenly you get into conflicts where code suddenly doesn’t work when it’s compiled against code written in different locale settings. At this point the only solutions are to introduce very complex conditional compilation or settings to combat this (obnoxious and needless) or make it so the compiler reserves all possible keywords in all possible locales to prevent this sort of conflict (introduces a ridiculous level of complexity and minefields in writing a program where you have to play “guess whether or not this string of letters is secretly reserved”).

In the end, it’s simply easier to expect foreign speakers to learn the like 20 words needed to program. Hell, it’s not like it’s immediately obvious what a “float” or “double” is to an English speaker either.

---

<div class="post-metadata">

### Author: ![Mops](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mops/32/16494_2.png) [@Mops](https://boards.straightdope.com/u/Mops)
#### Post date: [April 8, 2014, 7:05am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/6 "2014-04-08T07:05:38Z")

</div>

I believe Microsoft once used to have localized versions of MS Word’s scripting language (pre-VBA) - I seem to recollect it was a PITA, and did _not_ convert automatically between different-language versions of Word.

One major drawback about translating programming language keywords is that with a translated version you are limited to a much smaller domain of information on the Web.

Frankly I hate translations not only in the development world but also in the user interface - if I want to search online for a solution for a software problem and don’t find it using the German user interface terms, I have to guess what the terms used in the English-language user interface would be - often there are several ways I could think of how to word a menu item, a button or a setting name in English.

Overall, if you are too dumb to learn the basics of a foreign language you are too dumb to use a computer.

---

<div class="post-metadata">

### Author: ![Francis\_Vaughan](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/francis_vaughan/32/3093_2.png) [@Francis\_Vaughan](https://boards.straightdope.com/u/Francis_Vaughan)
#### Post date: [April 8, 2014, 7:42am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/7 "2014-04-08T07:42:29Z")

</div>

There are so few reserved words in most languages that should be trivial to remember them. About as hard as learning what the various Italian dishes are in your local restaurant. More to this, the meanings are never **quite** the same as general language use, and it might even help if they were unfamiliar words. Then you can look at a language like [APL](http://www.microapl.com/apl/introduction_chapter2.html) and shudder.

I have had to work though large scale code written in French. Luckily not debugging it, but we were using the system. All the comments and variable names were in French. That was hard going initially. But it wasn’t impossible, and you got used to it.

---

<div class="post-metadata">

### Author: ![Senegoid](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/senegoid/32/6606_2.png) [@Senegoid](https://boards.straightdope.com/u/Senegoid)
#### Post date: [April 8, 2014, 9:02am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/8 "2014-04-08T09:02:17Z")

</div>

> [@Francis\_Vaughan](#):
>
> There are so few reserved words in most languages that should be trivial to remember them.

Unless you’re doing International COBOL 😃

The Wiki link in the OP mentions that a few of the internationalized languages did, in fact, have multiple front ends (“lexers”) to map keywords from various languages, and a few even had some scheme for mapping library function names from various languages.

---

<div class="post-metadata">

### Author: ![Mijin](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mijin/32/9369_2.png) [@Mijin](https://boards.straightdope.com/u/Mijin)
#### Post date: [April 8, 2014, 9:23am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/9 "2014-04-08T09:23:42Z")

</div>

It should also be noted that source code is not really English even if it contains many recognizable words. Many keywords have a more specific, or just plain different, definition to their everyday spoken meaning.  
Sure, “if” and “else” fit their everyday use very well, but what about “float”, “switch”, “void” etc?

Then you have all the OO and design pattern terms that would be virtually meaningless to someone that knows English but hasn’t studied these concepts. So it’s largely a foreign language to us all.

In terms of reading all source code (so including comments and variable names), yeah I’d say it’s an advantage being fluent in English as most code out there is in English. But it shows how big the field of programming is, and how much there is to learn, that it’s only a small advantage in the grand scheme of things.

ETA: Or, what **Francis Vaughan** said.

---

<div class="post-metadata">

### Author: ![Dervorin](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dervorin](https://boards.straightdope.com/u/Dervorin)
#### Post date: [April 8, 2014, 9:59am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/10 "2014-04-08T09:59:40Z")

</div>

I give you a (supposedly real-life) example of the problems associated with this:

> **[Translate Everything!](https://thedailywtf.com/articles/Translate-Everything!)**
>
> "Pourriez-vous s'il vous plaît répéter la question?" said Andre, head developer. His voice was garbled over a VoIP connection. "My English ... not great."
> Yvonne sighed. She was the project manager of MetaPortal, the creatively named flagship product...

---

<div class="post-metadata">

### Author: ![Mijin](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mijin/32/9369_2.png) [@Mijin](https://boards.straightdope.com/u/Mijin)
#### Post date: [April 8, 2014, 10:27am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/11 "2014-04-08T10:27:52Z")

</div>

> [@Dervorin](#):
>
> I give you a (supposedly real-life) example of the problems associated with this:
> 
> [Translate Everything! - The Daily WTF](http://thedailywtf.com/Articles/Translate-Everything!.aspx)

It’s an entertaining story, but it should be noted that the cause of this bug was nothing to do with the fact that the development team’s first language wasn’t English.  
An all-English team that program over tea and scones could’ve made the same programming / inadequate localization testing error.

---

<div class="post-metadata">

### Author: ![Monty](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/monty/32/47_2.png) [@Monty](https://boards.straightdope.com/u/Monty)
#### Post date: [April 8, 2014, 11:06am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/12 "2014-04-08T11:06:10Z")

</div>

> [@njtt](#):
>
> I am not a computer scientist, so perhaps I am wrong about this, but it seems to me that it ought to be fairly trivial to modify the compilers or interpreters used with programming languages so that you could write your programs using the foreign language equivalents of the quasi-English words used in a programming language (so where an English speaking programmer might use a **Do…While** loop, a French speaker could use a **Faire…Pendant** one, for instance). Is this not done? If not, why not?

I used such a program for my CoCo3. It was kind of cool to be programming in Vietnamese just for fun.

Why isn’t it done? Well, the programming language isn’t English. The user interface may use English words, but that’s not really English. The programming language has its own definitions for the words used and its own syntax and grammar.

---

<div class="post-metadata">

### Author: ![Dervorin](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dervorin](https://boards.straightdope.com/u/Dervorin)
#### Post date: [April 8, 2014, 11:07am UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/13 "2014-04-08T11:07:18Z")

</div>

> [@Mijin](#):
>
> It’s an entertaining story, but it should be noted that the cause of this bug was nothing to do with the fact that the development team’s first language wasn’t English.  
> An all-English team that program over tea and scones could’ve made the same programming / inadequate localization testing error.

True, but the actual bug was related to the fact that most languages are written in English-based syntax, and that’s been part of the discussion in this thread.

---

<div class="post-metadata">

### Author: ![TokyoBayer](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tokyobayer/32/13989_2.png) [@TokyoBayer](https://boards.straightdope.com/u/TokyoBayer)
#### Post date: [April 8, 2014, 2:05pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/14 "2014-04-08T14:05:13Z")

</div>

Based on my experience with working with programers in Japan, then no. I’d take a non-English speaking good programer over a native speaker who is only an average programer any day.

---

<div class="post-metadata">

### Author: ![Celidin](https://avatars.discourse-cdn.com/v4/letter/c/cc9497/32.png) [@Celidin](https://boards.straightdope.com/u/Celidin)
#### Post date: [April 8, 2014, 2:33pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/15 "2014-04-08T14:33:11Z")

</div>

One of the more interesting problems I’ve occasionally run into isn’t around the languages themselves - as noted, most non-English programmers can learn/memorize the needed keywords - but is instead what the non-US programmers choose as variable names. Those are often in the programmer’s native language\* which can cause issues sometimes if the code then goes over to an English speaker and he/she misses some subtle variations or misspellings.

- \*I’ve worked with programmers in India, Eastern Europe and Central America and it seems mostly the latter two who do this the most. Not editorializing, just making an observation. \*

---

<div class="post-metadata">

### Author: ![Mijin](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mijin/32/9369_2.png) [@Mijin](https://boards.straightdope.com/u/Mijin)
#### Post date: [April 8, 2014, 2:48pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/16 "2014-04-08T14:48:20Z")

</div>

> [@Dervorin](#):
>
> True, but the actual bug was related to the fact that most languages are written in English-based syntax, and that’s been part of the discussion in this thread.

I’m not complaining about you posting the story, it’s relevant enough, I’m trying to head off any conclusions of “that’s why we use one language” or whatever.  
The scenario in the story is no more or less likely to happen in an alternate world where programming languages / APIs are routinely localized. And no more or less likely to have happened with an entirely english-speaking team.

---

<div class="post-metadata">

### Author: ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)
#### Post date: [April 8, 2014, 3:25pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/17 "2014-04-08T15:25:32Z")

</div>

> [@](#):
>
> One of the more interesting problems I’ve occasionally run into isn’t around the languages themselves - as noted, most non-English programmers can learn/memorize the needed keywords - but is instead what the non-US programmers choose as variable names. Those are often in the programmer’s native language\* which can cause issues sometimes if the code then goes over to an English speaker and he/she misses some subtle variations or misspellings.

I once had a similar issue with a physics problem I was grading, with no programming involved. One student decided to simplify his answer by introducing some auxiliary variables, which is fine. The student was from Russia, and decided to use Cyrillic letters for those variables: Also fine (in fact, probably good, overall, since it reduced the chance of confusion with preexisting variables). But the two Cyrillic letters he happened to choose (ш and щ, or sha and shcha) looked very similar, so similar that I, not being familiar with Cyrillic, thought that they were the same letter.

---

<div class="post-metadata">

### Author: ![am77494](https://avatars.discourse-cdn.com/v4/letter/a/d2c977/32.png) [@am77494](https://boards.straightdope.com/u/am77494)
#### Post date: [April 8, 2014, 4:24pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/18 "2014-04-08T16:24:31Z")

</div>

If we make the assumption that many of the Execs and Professionals immigrating to the US are IT professionals (and many start out as programmers) and also that the want to immigrate to the US for IT Professionals in India and China is comparable, then the following statistics maybe useful here :

The table here is the Year — total immigrants / % in Execs & Prof category (taken from DHS Website)

**China**

```auto

2006 ---- 87,345 / 9%
2008 ---- 80,271 / 13%
2010 ---- 70,863 / 14%
2012 ---- 81,784 / 15%

```

**India**

```auto

2006 ---- 61,369 / 19%
2008 ---- 63,352 / 25%
2010 ---- 69,172 / 25%
2012 ---- 66,434 / 28%

```

At one time it was said that the Indians had an advantage because English was a common language of instruction / academics in India. I interpret the above table as: if there was any gap China is catching up.

---

<div class="post-metadata">

### Author: ![md2000](https://avatars.discourse-cdn.com/v4/letter/m/73ab20/32.png) [@md2000](https://boards.straightdope.com/u/md2000)
#### Post date: [April 8, 2014, 5:14pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/19 "2014-04-08T17:14:23Z")

</div>

I would think the problem is more likely to come in learning opportunities - things like examples and textbooks. Fewer will be available in the native language and if the student tries to learn from English source material, may miss some of the language subtleties. Thus, you might have more problems with a Czech or Bulgarian programmer than, say Russian or Chinese, where the market size means more native language materials are available (as well as more tools for learning English).

Beyond that, my impression after decades of programming is that it’s like mechanics. Almost anyone can learn the basics, but extremely talented people are rare and seem to learn instinctively regardless of the barriers.

---

<div class="post-metadata">

### Author: ![Blakeyrat](https://avatars.discourse-cdn.com/v4/letter/b/ecd19e/32.png) [@Blakeyrat](https://boards.straightdope.com/u/Blakeyrat)
#### Post date: [April 8, 2014, 9:00pm UTC](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615/20 "2014-04-08T21:00:37Z")

</div>

> [@Celidin](#):
>
> One of the more interesting problems I’ve occasionally run into isn’t around the languages themselves - as noted, most non-English programmers can learn/memorize the needed keywords - but is instead what the non-US programmers choose as variable names. Those are often in the programmer’s native language\* which can cause issues sometimes if the code then goes over to an English speaker and he/she misses some subtle variations or misspellings.

One of the nice features of (good) editors and IDEs is if you select one occurrence of a variable, it’ll highlight other occurrences of the same variable in the document. Super-handy for finding those two variables that look alike but are completely different as far as the compiler is concerned.

[Next page](https://boards.straightdope.com/t/do-countries-with-predominantly-non-english-speakers-produce-worse-computer-programmers/685615.md?page=2)
