Programming and (human) languages

StackOverflow just announced that they’re opening up yet another foreign language version of SO, this one in Japanese.  They’ve already done this in Portuguese, and now it appears they’re continuing on the same path.  When people point out that the “convenience” that this provides would be counterproductive in the long run as it fragments the unified knowledge base that SO has worked for years to build, the standard response is that “learning English is difficult” and this makes it easier.

Color me skeptical.  I’m reminded of something I heard several years ago, from an old retiree. He spoke with a heavy but intelligible German accent about his childhood dream:

When I turned 11 we had to leave East Germany overnight because of the political orientation of my father. Now I was going to school in West Germany, which was American-occupied at that time. There in school all children were required to learn English and not Russian. To learn Russian had been difficult, but English was impossible for me. I thought my mouth was not made for speaking English! My teachers struggled. My parents suffered. And I knew English was definitely not my language.

But then something changed in my young life. Almost daily I rode my bicycle to the airport and watched airplanes take off and land. I read, studied, and learned everything I could find about aviation. It was my greatest desire to become a pilot. I could already picture myself in the cockpit of an airliner or in a military fighter plane. I felt deep in my heart this was my thing!

Then I learned that to become a pilot I needed to speak English. Overnight, to the total surprise of everybody, it appeared as if my mouth had changed. I was able to learn English. It still took a lot of work, persistence, and patience, but I was able to learn English!

Why? Because of … a strong motive!

The man who said this, Dieter Uchtdorf, went on to become a pilot in the German air force, and then later a commercial pilot for Lufthansa, who worked his way up the ranks and was Senior VP of Flight Operations by the time he retired.

Programming has two important things in common with aviation:

  1. You have to be fairly intelligent to be competent at it so you don’t end up causing crashes.
  2. The lingua franca of the whole ecosystem is English.

As Dieter Uchtdorf’s example shows, an intelligent person, even one who has trouble with the language, can learn it if they’re motivated.  And this benefits everyone, both the person, who is able to learn from the vast existing knowledge base, and then the rest of the programming community, who are able to learn from this person’s contributions to it down the road.

Niklaus Wirth is Swiss, and the official languages of Switzerland are German, French, Italian, and Romansh, with the former two comprising the lion’s share of the country’s speakers.  Just imagine if he had written Pascal in German or French!  Or what if Edsger Dijkstra wrote his highly influential papers, that contributed so much to our understanding of computer science, in Dutch?  Imagine they had both done so!  Where would the popular Ruby on Rails framework be if Matsumoto had produced it entirely in Japanese?  Not to mention Embarcadero’s latest database technology; how useful would FireDAC be if the whole thing was in Russian?

I’m not trying to make some silly ethnocentric claim that English is an inherently superior language for understanding programming.  I’m bilingual, and I know enough about linguistics to understand what a mess my native tongue really is!  But despite all that, it is the accepted standard for computer programming, and as the old saying goes, when you have more than one standard, you have no standard at all.

If Pascal had been created in German, or Rails in Japanese, they would probably still work just as well as they do on a fundamental level, (except perhaps for a few quirks of the German language causing strange corner cases related to case insensitivity,) but there would be a whole lot less people using them because they don’t adhere to the standard.  This, in turn, would mean less software gets created for them, which makes them less of a useful product because the community always has been what makes development products worth using, at the end of the day.  It bothers me a little to see StackOverflow not understand this important principle.  What they’re doing in the name of being helpful may be helpful indeed in the short term, but over the long term it will cause more harm than good to developers who use the site.


  1. Moritz Beutel says:

    Sure, English is the lingua franca of the tech world. Similarly, most scientific journals of today publish in English as well; this is a strong argument against publishing in a different language, or against using a different language as the basis for programming language syntax. Which almost nobody does as you correctly observe.

    But I don’t get how is that related to foreign-language support communities. Are you saying everyone has to debate their programming thoughts and questions in English? Language-specific scientific discussion forums should be eliminated because they hinder the progress of humanity?

    It is entirely natural for people to prefer communicating in their native tongue. Formal documentation, scientific publishing and language syntax is already de-facto standardized to English. In most German communities I have participated in, people readily switch to English if someone joins a discussion with an English reply. And rest assured nobody is taking away your English-language SO. So, why bother?

    • As you may know, I am Dutch, i.e. born and raised in the Netherlands. But I live in Germany and speak German all day (at home, at work), and I write English a lot. I do visit German Delphi newsgroups occasionally, but to me, they are not very attractive: you must internally translate all kinds of terms to German (if I program, I think in English: not Dutch, not German). And the expertise found there is pretty limited.

      ISTM that, because English is the default lingua franca of the trade, many experts will prefer English language groups, no matter which language they speak at home. I don’t think that local language groups will draw away a lot of expertise from the English groups/forums.

  2. HeartWare says:

    It’s really very simple.

    A site in English will have 3+ Billion possible participants. One in Japanese will potentially have less than a quarter of a billion potential participants. That means that any golden nuggets discovered in a Japanese-language Q&A site will only benefit around one twelfth of the possible participants (numbers may be different, but I guess you catch my drift).

    For certain, I am not one of the participants of a Japanese-language sites, and I guess you won’t be either. That’s at least 2 people that won’t give or receive any gold nuggets on that site, whereas if it were in a common language that we both understood (English in this case), we would (possibly) both attend.

  3. David M says:

    The best argument against this I heard is that it goes against the original purpose of Stack Overflow. That is, it dilutes knowledge. SO was created to be a single place for programming questions and answers.

    If you have other copies of SO in other languages, problems and their solutions located on those other sites are not going to be accessible to everyone else (by either being on the same site, or being in the same language.)

  4. Christopher Burke says:

    Whilst I agree that diluting the solution base is a problem, I also know that even people who know English and can write up answers in English may still think better in their native tongue, it seems worse to me to inhibit the thought process of millions of people and possibly end up with no resolution, than it does to ever so slightly inconvenience the majority by having a discussion in non-English.

    Maybe a solution is to enable an English only ‘answered’ policy – that is, an Answer must exist in English to be deemed an ‘answer’, but still allow the discussion to follow in a native tongue?

    Either way – open the floodgates for thinking in any language, if the solution is that awesome it will find its way into English.

    PS: English is my native and only tongue.

  5. Lex Li says:

    Remind me of CnPack, good Delphi IDE addon, but is less popular outside of Chinese developer community.

  6. wouter says:

    I’ve been working together with development teams in India for more than a decade now.
    There’s a clear correlation between the effectiveness of programmer and how fluent his or her(!) English is. (it’s amazing how many female developers there are in India.. way more than in the “emancipated” western society that i live in)

    – The ones with a better education learn proper English at school;
    – The ones that have been eager to learn English are usually also eager to learn other things, like programming techniques;
    – The ones that are fluent at English can understand designs faster, and provide proper feedback faster and better;
    – The ones that can read English better, can easily find help and documentation on the internet.

    The UI of an IDE can be translated, but the important programming languages, libraries, frameworks and documentation are all English. If you don’t directly understand the names of classes, enumerations, methods or documentation, it’s going to be nearly impossible to use them.

    A part of development work is reading and writing documentation. While nobody in any of our teams (spread over two continents) is a native English speaker, we write all of our technical documentation in English. It would be unhandy if everything would be written in Hindi, Malayalam or Dutch.

    If you’re about to hire a developer that doesn’t read or write English at a basic level at least: it’s a red flag.

  7. wouter says:

    This is what a German version of a famous Delphi class would look like:

    TWortlautList = Klasse(TWortlauts)
         Konstruktor Erstellen; Überlast;
         Konstruktor Erstellen (BesitztObjekte: boolsch); Überlast;
         Zerstörer Zerstören; schreiben;
         Funktion Hinzufügen (Konst S: Wortlaut): Integer; schreiben;
         Funktion HinzufügenObjekt (Konst S: Wortlaut; AObjekt: TObjekt): Integer; schreiben;
         Prozedur zuweisen (Quelle: TPersistent); schreiben;
         Prozedur Klar; schreiben;
         Prozedur Löschen (Index: Integer); schreiben;
         Prozedur Wechseln (Index1, Index2: Integer); schreiben;
         Funktion Suche (Konst S: Wortlaut; var Index: Integer): boolsch; virtuelle;
         Funktion IndexVon (Konst S: Wortlaut): Integer; schreiben;
         Prozedur Einfügen (Index: Integer; Konst S: Wortlaut); schreiben;
         Prozedur Einfügen (Index: Integer; Konst S: Wortlaut; AObjekt: TObjekt); schreiben;
         Prozedur Sortieren; virtuelle;
         Prozedur MaßgeschneidertSort (Vergleichen Sie: TWortlautListSortCompare); virtuelle;
         Eigenschaft Duplikate: TDuplicates lesen FDuplikate schreiben FDuplikate;
         Immobilien Sortiert: boolsch lesen FSortiert schreiben SetSortiert;
         Eigenschaft GroßundKleinschreibung: boolsch lesen FGroßundKleinschreibung schreiben SetGroßundKleinschreibung;
         Immobilien AufVeränderungVeränderung: TbenachrichtigenEreignis lesen FAufVeränderungVeränderung schreiben FAufVeränderungVeränderung;
         Immobilien BesitztObjekte: boolsch lesen FBesitztObjekte schreiben FBesitztObjekte;

    Well, sortof. 🙂

    This is how people who don’t speak English see the TStringList class.

    • Well, “sortof”, indeed. I have seen classes like that. But the keywords were still English, of course, which, to me, made it even weirder. I don’t think I could easily write such a class in Dutch or German (I’m Dutch but have lived in Germany for more than half my life now). I once wrote a class using German words, because it had to read XML data written in German, but that was a weird thing to do. Perhaps for those who have to process lots of German language data, it makes more sense.

    • EMB says:

      Rewrite that class in bengali and we start to talk again. 😉

  8. Jim McKeeth says:

    While most developers may know enough English to understand code, debating the complexities related is often another matter completely.

    I only speak English, and have a lot of respect for people who know more than one language. However I’ve traveled enough to know that some countries speak more English than others. I remember during the early days of Stack Overflow when Joel brought up the idea of localizing it because there are some countries where English is less prevelant than others.

    I think a better solution would have been to add multilingual support to the site they have. So anyone could create a translation of any question or answer. They could build in an automatic translation for the rough idea, but then they take the wiki concept to heart and let individuals translate it. It seems like they would have a large enough community to make this happen. That way all the questions stay in one place, and if you are multilingual you don’t have to check multiple sites.

  9. Oliver says:

    I agree that language-localizing SO is a mistake. I’ve lost count of the number of times I’ve been stuck on a coding problem, and a single answer (sometimes a few answers down) solved it. If that answer had been written in Japanese or French, I’d have been stuck.

    We should encourage programmers all over the world to contribute in English. It’s easy for me to say that as English is my native language, and I’m pretty bad at picking up new human languages (for some bizarre reason I find computer languages much easier!). But we need all contributions to programming to be in a single human language or the total sum of knowledge won’t be available to us all.

Leave a Reply