I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

March 29, 2009

The Ugly American Programmer

On the internet, you can pretend the world is flat. Whatever country you live in, whatever language you speak, you have the same access to the accumulated knowledge of the world as every other citizen of the planet Earth. And a growing percentage of that knowledge can and should be available in your native language.

But I believe the rules are different for programmers. So much so that I'm going to ask the unthinkable: shouldn't every software developer understand English?

ugly american ale

A wildly disproportionate amount of programming information is available in English. The overwhelming majority of programming languages use English keywords. By any metric you can possibly measure, English is the lingua franca of programming.

Now, In terms of cultural literacy and travel, presuming that everyone should speak English is a totally unacceptable attitude, the epitome of the ugly american.

around the world with cat and girl

But those rules don't apply to us.

We're not talking about normal everyday people. We're talking about programmers. Citizens of the internet. People who swear allegiance not to a country, but a compiler. Hackers have their own culture, their own norms and standards for literacy. Eric Raymond notes that functional English is required for true hackers:

As an American and native English-speaker myself, I have previously been reluctant to suggest this, lest it be taken as a sort of cultural imperialism. But several native speakers of other languages have urged me to point out that English is the working language of the hacker culture and the Internet, and that you will need to know it to function in the hacker community.

Back around 1991 I learned that many hackers who have English as a second language use it in technical discussions even when they share a birth tongue; it was reported to me at the time that English has a richer technical vocabulary than any other language and is therefore simply a better tool for the job. For similar reasons, translations of technical books written in English are often unsatisfactory (when they get done at all).

Linus Torvalds, a Finn, comments his code in English (it apparently never occurred to him to do otherwise). His fluency in English has been an important factor in his ability to recruit a worldwide community of developers for Linux. It's an example worth following.

Being a native English-speaker does not guarantee that you have language skills good enough to function as a hacker. If your writing is semi-literate, ungrammatical, and riddled with misspellings, many hackers (including myself) will tend to ignore you. While sloppy writing does not invariably mean sloppy thinking, we've generally found the correlation to be strong -- and we have no use for sloppy thinkers. If you can't yet write competently, learn to.

It's difficult to communicate this idea without feeling like an ugly American programmer. But it doesn't come from a nationality, or a desire to dominate the world. It's nothing more than great hackers collectively realizing that sticking to English for technical discussion makes it easier to get stuff done. It's a meritocracy of code, not language, and nobody (or at least nobody who is sane, anyway) localizes programming languages.

I received this email from Slawomir, a Polish programmer, a few months ago. He confirmed what I've always suspected and secretly believed -- but have been hesitant to say:

I just listened to Stack Overflow podcast episode 29 where you discuss localization of developer tools.

In my opinion there is no reason to translate developer tools and documentation.

I know many developers in Poland who prefer (as Joel mentioned) to get English documentation rather than Polish translation and the reason for that is that translations were not always accurate. Even Microsoft developer documentation was translated partially or with errors, so reading original English document was easier than English-Polish soup.

If everybody blogs and develops in English - our global repository of solutions and blog posts is much bigger and you have better chances of finding an answer to your problem.

Consciously choosing to switch from Polish to English reminds me why I gave up Visual Basic for C#, as painful as that was. These languages do exactly the same things -- and the friction of choosing the minority language was severe. I found reams of code and answers in C# whenever I searched, and almost nothing at all in VB.NET. I spent so much time converting code into VB.NET and introducing new bugs and errors in the process, along with countless language-only forks. This eventually stopped making sense to me -- as it would to any good programmer.

Advocating the adoption of English as the de-facto standard language of software development is simple pragmatism, the most virtuous of all hacker traits. If that makes me an ugly American programmer, so be it.

Posted by Jeff Atwood    View blog reactions
« Don't Like It? Code it Yourself!
Should Competent Programmers be "Mathematically Inclined"? »
Comments

I'm from Sweden, where most or all hackers are pretty good at English. I was really surprised when I was an exchange student in Berlin, and learned how many German people don't understand English have to rely on translated or native books. Of course it's a large language and a lot is translated... but still?

Johan on March 30, 2009 6:04 AM

Now if only we could make those damned Americans use the Queens English we might just be able to change the colour of this web page.

David on March 30, 2009 6:07 AM

Great post! I actually just asked a question about this very issue on stack overflow a couple weeks ago. Seems the majority of people there would agree.

http://stackoverflow.com/questions/667720/truly-multi-lingual-programming-languages

Eric P on March 30, 2009 6:08 AM

Fellow programmers in Japan (at least, the ones who could use English, which wasn't all that many) told me that they preferred English documentation because the Japanese language tends to be oblique and implicit, whereas the English manuals and references were clear and straightforward.

Graham on March 30, 2009 6:10 AM

There's a very good reason why the problem-solving code samples and answers are usually in C# and not VB.NET.

Mark on March 30, 2009 6:10 AM

Ideally we would all use Esperanto - that's the future! Ah well.

baxter on March 30, 2009 6:12 AM

> There's a very good reason why the problem-solving code samples and answers are usually in C# and not VB.NET.

There are certainly *reasons* for more than one programming language to exist, but they should have to do with how well those languages fit the problem domain -- instead of the meaningless choice between coke and pepsi..

http://www.codinghorror.com/blog/archives/000519.html

Jeff Atwood on March 30, 2009 6:12 AM

It's true. There is nothing imperialistic about it. I am german and if my English wouldn't be as good as it is, my live would be a lot harder. Of all the developers I know, exactly one doesn't speak English but she can read English documentations and technical discussions good enough to find her way around.

While lots of programming related books are translated to German, I always buy the English version. I'm so used to it that when I read a German one I translate it to English in my head (yeah, seriously).

It doesn't help that most technical books are translated in a horrible way. I mean, when you read it you can basically see the English structure of every paragraph through the German words, if that makes any sense. It's just irritating to read.

Maximilian on March 30, 2009 6:15 AM

Screw that. I advocate the use of Chinese. I mean, &#20013;&#25991;&#65281;

Luís on March 30, 2009 6:16 AM

I live in France, speak French as my native language, and to me English is necessary in my everyday job as a programmer. I always change language to en-us in MSDN to get the most complete and up-to-date information.
At work we don't speak English, but use the technical English term, more precise, rather than an approximate French translation, when we need it.
Reminds me I learned some written English words as a kid (before I started courses in school) playing games on my parents' Macintosh SE... "Beginner", "Advanced", "Begin" and a few others were part of my initial English vocabulary.


Stéphane on March 30, 2009 6:16 AM

I think most will concur with this post.

Even on the simply basis that most languages' keywords are English, full comprehension of the code is lost -or at least impaired- by someone who isn't comfortable with the language.

I'm a college student, and thus I have some colleagues who really struggle through programming, even getting absolutely lost without native documentation.

Ricardo on March 30, 2009 6:17 AM

>One of the most wonderful things about the internet is that you can
>pretend the world is flat. Whatever country you live in, whatever
>language you speak, you have the same access to the accumulated
>knowledge of the world as every other citizen of the planet Earth.

Unfortunately this is not true.

Rene on March 30, 2009 6:17 AM

Catch ex As Exception
log(ex.ToString)

...gets translated into whatever language the client runs in. Try google an exception type translated into swedish!

Slim B on March 30, 2009 6:17 AM

Most programming languages are subsets of English so... It is only natural that the de facto language should be English.

I'm Romanian and learning English for my programming hobby proved to be one of the smartest moves I made. It opened the door to a body of knowledge otherwise not accessible.

Peter on March 30, 2009 6:17 AM

There are also other issues with commenting in your own language, for example when trying out Python for the first time, the interpreter threw me out for having strange characters in my comments.

Ólafur Waage on March 30, 2009 6:17 AM

I would even go so far as to claim that english and other non-case languages hold an advantage for those who speak it, since it allows for more flexible though patterns. This, of course, is an advantage to any hacker. You might event claim that english is an hack-like language in it self, scavaging word and sentence-structures from other languages to create a flexible framework with a large vocabulary base.

Jens on March 30, 2009 6:18 AM

If English is the standard then why does this ( http://www.cnprog.com/ ) exist?

Sean on March 30, 2009 6:18 AM

P.S. There aren't many things as frustrating as poorly translated software :P Whenever possible I have the English version (usually the original language), be it OS or any application.

Ricardo on March 30, 2009 6:21 AM

I'm American myself, but I have several friends who live across Europe who are not native-English speakers who tell me that it is easier to program in English, for some of the exact reasons that were previously iterated (documentation, universality, translation errors), and I'm glad that the feeling seems to be fairly mutual already amongst a lot of the programming community. I can think of several examples from the CakePHP mailing list where someone who does not speak English natively, will still try their hardest to get their point across in English, so that they will be able to reach out to the largest proportion of the other receivers of the mailing list, and their issues are answered in a clear and concise manner.

Siebren on March 30, 2009 6:24 AM

Hm. Is it really English we're speaking ?

Think of the terms we currently use to describe a situation to fellow coders: "linked list, hash map, set, file, log, database, connection..."

How many of those do you use when talking (in English) to grandma ? Such words are so disconnected from the non-computer world. We don't speak English, we speak "Codish", or "Computish".

Grandma speaks English, but she ain't able to follow your blog.

My USD 0.02


Leonel on March 30, 2009 6:31 AM

I have worked in Japan for 8 years and although I know many very excellent programmers here, and most of them do NOT speak English. They generally do not look through English documentation even though they can read it fairly effectively, and funnily enough, they get by...
I disagree that English is a prerequisite to competent programming

James on March 30, 2009 6:32 AM

Yeah, what Maximilian said... same here :-)

ingmar on March 30, 2009 6:35 AM

>I think most will concur with this post.

Absolutely. Stating the obvious here. I think the emergence of an international, internet-borne version of English (not US or UK or any other national variant) is a far more interesting development.

Thomas Christensen on March 30, 2009 6:37 AM

While you ugly Americans couldn't get your oar in fast enough to get the world speaking "your" language, You still managed to make the de-facto standard your bastardised [sic] "American English"

;)

Gareth on March 30, 2009 6:37 AM

I remember VBA had been localized. That wasn't MS greatest success...

doekman on March 30, 2009 6:37 AM

@Sean, I suspect Jeff's train of thought for this post started somewhere around there :)

I am native English, work in French-speaking country with French-speaking colleagues. We all code in English, variable and class names always in English, most comments in English. Invariably use English words for technical terms (albeit with French pronociation).

Ben on March 30, 2009 6:40 AM

You strike a good argument...

Timothy on March 30, 2009 6:43 AM

What about all those Chinese coders? ;-)

Richard on March 30, 2009 6:44 AM

I'd agree with Leonel. You might think programmers are speaking English, but are they?

I've come across a very similar situation from a relative who works for the European Union (EU). English is used at the watercooler for a huge proportion of the conversations. However, the English (as in from England) found themselves at a disadvantage. Nearly all those who learnt English as a second (or third or ...) language would choose the same word for the same idea. The British would vary between synonyms, and so as a result actually spoke Eurenglish worse than their contemporaries from other countries - worse from the measure communicating effectively. Complaining doesn't help, you are there to communicate so they had to relearn English.

I'd argue that to be an effective programmer you need to communicate effectively in an English based dialect, but like the normalisation of tags in Stack Overflow, the restriction might find native speakers disadvantaged.

Already as a British English speaker when talking about programming I have to remember to type Color instead of Colour, and Americans with a rich grasp of the language might find this actually hinders them.


Nick Fortescue on March 30, 2009 6:44 AM

As a non-native English speaker, I would have to agree with you. I am from Nepal and we were lucky to have an education system that understood the importance of learning English (or it could have been the influence of the British or the fact that Nepali does not have a substantial global presence like Japanese or French or Spanish). As a result, we learned English along with Nepali since kindergarten. Technical terms in Nepali were very tough and having gone to an English medium school, we were taught everything in English. I am not sure if this is true for other countries but you can see how having a programming language and documentation localized would create problems for someone like me. Having a rule that English should be the De Facto language is similar to being in a situation where having a global variable in your program is the easier way. It's dirty and you feel horrible but the other option makes the problem unnecessarily complicated.

Ashish Dixit on March 30, 2009 6:45 AM

I live in a non-English speaking country myself and I totally agree that every developer should speak English. That doesn't mean that we should also write (and comment) code in English. Sometimes it's better to write the code in the terms the customer uses.

Paco on March 30, 2009 6:45 AM

It would seem, on the surface, that since everyone has their own native language and most likely prefers it that this would be a controversial subject.

However, it really isn't. This is because programmers tend to think based on logic, not emotion. The question is not "Which language is better?", nor is it "Which language do I like?". The question is "Which language will ultimately help me reach my goals?". As it happens, that language is English. It has nothing to do with the merits of English as a language. It's just the current state of affairs.

brad dunbar on March 30, 2009 6:46 AM

I have to agree with Gareth etc, everytime I write color or center I get a horrible urge to go and stab the compiler until it corrects itself and uses English. I think the most frustrating chore is changing s to z as in serialize etc, it's tiny but having been brought up to speak proper English it drives me nuts to have to bastardise my own language and have it called English.

Luke L on March 30, 2009 6:46 AM

I'm a portuguese speaking student, most my professors recommend using the english books instead of the ones translated into our language. The terms like recursion, instruction, busy waiting, scheduling, etc most of the times don't translate right. Some translated books don't even translate such terms, those books work as good for me than the english ones, but the other books are almost always crap.

For example, the operating system book I use translate scheduling into "escalonamento" when the right word should be "agendamento". "escalonamento" means a completely different thing in English.

As for commenting code in english, I do that too and it almost cost me a 0 on one of my code projects. My professor assumed that I copied/pasted the work from the internet since I commented everything in english. I still do it though, comments in portuguese suffer from the same problem as translated books.

Hoffmann on March 30, 2009 6:50 AM

I agree. It's not terribly different from air travel, which long ago concluded that it was worthwhile to have a single standard for radio communication between aircraft and ground controllers (also in this case English). The globalization of developer workforces also makes it financially worthwhile for developers hoping to widen their pool of potential employers/contracts to be fluent in English, as well.

Steve Smith on March 30, 2009 6:52 AM

Slim B: "Catch ex As Exception
log(ex.ToString)

...gets translated into whatever language the client runs in. Try google an exception type translated into swedish!"

@Slim B, this is why every developer I know uses english OS and software on their development machines / images.

Plus it spares you translations like "Projektmappen-Explorer" (Solution Explorer) ...

Hinek on March 30, 2009 6:52 AM

I'm a Portuguese programmer, living in Germany.
I've started learning English at 9 because I wanted to download Civ I from a BBS and then went about hacking it, which lead me to english.
However here in Munich I found it appalling that most of the programmers and developers I've come across don't speak english, don't comment in english, and don't even use the web in english.
On the note that german is a big language, world wise is really not relevant (http://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers) and even if it was, english is the de-facto language for the internet.
That said, i really agree with your post, and would only add that programmers should take their knowledge of their native language and english when localizing software and improve its translation.

my 2 euro cents ;)

Pedro on March 30, 2009 6:53 AM

I seem to recall hearing somewhere (probably from something with Stephen Fry in it) that the most spoken language is panglish, a phonetic variant of English that most native English speakers would have difficulty with.

It is unfortunate in a way that modern UK English has deviated from US English because US English seems to be the main driving force and that probably means that at some point us Brits will have to give on color, center, etc.

Andrew on March 30, 2009 6:57 AM

It's funny, because I've often run into a brick wall of Swedish or German while trying to read about the CCC or the Swedish Pirate Party ;)

Tom Ritter on March 30, 2009 7:02 AM

I wonder how the Domain Driven Design guys cope with localisation issues? Having the code model match the ubiquitous language of the business domain is the fundamental tenet of that approach to design. That is plainly not going to be possible if there's a translation step.

Some purer languages than English are probably not even suitable for translation into object models.. does you service change gender if its operating over am different objects? Somebody slightly less monolingual than I might be able to say if that is the case.

Ryan Roberts on March 30, 2009 7:03 AM

Learning another human language is much more difficult than learning to code in a programming language that has keywords based on a language you don't know. This is why people put plenty of effort into translating API documentation and creating stuff like your Chinese bastard child (http://www.cnprog.com/).

Most Chinese programmers want to learn English, it's just easier, cheaper, better and quicker to ask and get an answer in Chinese.

Sindri on March 30, 2009 7:04 AM

I think it's fair to say that most people who could read this blog post in English would agree with you, so in a sense, you are preaching to the choir. Anyone who can get by with the English will. Technical translation is just not good enough, and by necessity, it's always going to be several months out of date.

That said, I think there's a fascinating trend of non-traditional developers emerging on the Internet: people who weren't formally trained in school who picked up stuff on their own because they were excited about projects they wanted to work on. Of course it's easier for anyone who speaks English, but there are plenty of people writing code based on other people's code, working from poor quality translations, and making their own translations to share with others.

Ultimately, I think we'll see more and more of this happening, and I hope we'll also see the quality of translations improve for locales where English literacy isn't common (or is limited to the very wealthy).

But I work in technical translation, so I could be expected to say something like that... My hope is that in five years, we'll be seeing a much richer developer ecosystem, and the translation quality and locally-sourced documents to support it.

naomib on March 30, 2009 7:07 AM

I absolutely agree. I'm from Finland and work in a small web/mobile startup. We have ~10 people from Finland, Germany, France, and Albania. Even the native Finns often talk English to each other. That just feels natural in the technological context.

At school we often return the assignments in English (even though they could be written in Finnish) so that we don't have to translate the terminology and make up terms that people don't really understand since most of the material is in English anyway. I was very frustrated since we had to write the Bachelor's Thesis in Finnish and I had to translate even the most basic terminology into equivalent Finnish terms that nobody really uses anywhere. Too much unnecesary confusion.

Software projects go beyond language boundaries and you cannot tell who's gonna maintain your code tomorrow. English really is the only choice.

"Python coders from non-English speaking countries: please write your comments in English, unless you are 120% sure that the code will never be read by people who don't speak your language." - Guido van Rossum, Style Guide for Python Code

Kimmo on March 30, 2009 7:07 AM

It's not a meritocracy. I think you need to go back and review what that word means, which is ironic as this is the "Use English or Fail" post. This phenomenon is just an accident of history. There are a lot of factors behind it. If Americans were as multilingual as other developed nations then perhaps you wouldn't have posted this.

The question of whether this is the way it should be and should it be more prevalent than it is currently is different from the question of whether you'd be better off learning English fluently to be a better programmer or what have you.

As far as "pragmatism being the most virtuous of all traits" ... Honestly, I couldn't begin to roll my eyes as much as is necessary for that.

Charles on March 30, 2009 7:09 AM

Most of the world who have English as their second language are excellent at writing and reading English in documents and code and when they are not sure they ask for help.

The worst are those from the USA who do not event know that they do not know.

See:
http://thinkexist.com/quotation/he_who_knows_not_and_knows_not_he_knows_not-he_is/149147.html

andrew on March 30, 2009 7:11 AM

Hinek >

"@Slim B, this is why every developer I know uses English OS and software on their development machines / images."

I keep running into this issue whenever I download log files from my Swedish customers. I'd personally never change into a Swedish OS though.

Slim B on March 30, 2009 7:12 AM

Of course knowing English always helps whether it is American/Brit/Indian. I have had problems earlier when talking/writing. So now I usually keep it simple when I am not sure whom I am talking to.
http://simple.wikipedia.org/wiki/Wikipedia:How_to_write_Simple_English_articles

Thejesh GN on March 30, 2009 7:16 AM

We don't speak English... I agree with that, just ask a normal people: "Whats a commit?", and you'll see what I'm talking about.

With that said, I have to say that I learned how to program in Spanish, and I think that's why tools have to be localized to *learn* the language and then just use the English version.

Igor on March 30, 2009 7:17 AM

@Pedro: Seems you've worked with the wrong people

Greetings from Germany ;-)

Markus on March 30, 2009 7:17 AM

My question is, if the world becomes a different place in the future, are you ok with someone telling you that functional Hindi is required in order to be a true hacker?

Matt on March 30, 2009 7:20 AM

I completely agree with you. I think every programmer should know at least basic English to be able to read documentation and comments (and code). In fact I am glad that programming keywords are not from my native language. I sometimes encounter code with German function names and this looks very odd to me. Might be the mixture of keywords and function names but a German only programming language still is unthinkable for me.

Also: Because English words have almost no accents (save for loanwords maybe) they are predestined for comments so wrong character encoding isn't likely to break the file (I once had a source file with German umlauts in the comments and even function names. Not knowing the original encoding I had to rename everything because the compiler couldn't handle it...).

Phil on March 30, 2009 7:21 AM

There is really nothing surprising here - domain-specific communication languages have existed in many areas, e.g. Latin in medicine, French in 19th century diplomacy, classical Greek in philosophy (later replaced by German), Chinese and Japanese in martial arts. This comes from the fact that a given area is developed either in a given culture/region (such as Silicon Valley), or when a given language is popular (Latin in many areas).

Thus there is nothing wrong with telling people "This is the domain language. Learn it to communicate with other specialists." In fact, as has been pointed out above, it is beneficial.

AdSR on March 30, 2009 7:24 AM

Airline pilots are required to speak English, for the purpose of having a "universal" or "common" language between controller and pilots. The French, of course, play by their own rules.

futureturnip on March 30, 2009 7:25 AM

There was a question about this on Stack Overflow a while back: http://stackoverflow.com/questions/250824

I think there's a strong correlation between an individual's English skills and programming skills. One might argue that this is merely because the schools that provide a good English education also provide a good programming education, and I could agree, but only to a certain point.

Even the best programming education is no match for self-improvement and experience. Being a good programmer requires constant study and improvement during and after school, and most of the material is in English.

I don't think this is necessarily because English is a better language for technical conversation, but because it's a very flexible language that can easily acommodate the needs of any subject.

On a side note, I don't think programming (or Computer Science) is alone in this respect. English is the lingua franca for almost all sciences, especially engineering and natural sciences.

Finally, there's the C argument you had on the podcast. Just as you don't necessarily have to learn C to become a programmer, you also don't have to learn English. Will you be a *good* programmer without English or C? I don't think so.

Can Berk Güder on March 30, 2009 7:25 AM

Don't know if you have seen this Jeff. But someone over in Asia has decided to copy StackOverflow.com.... literarily.

http://www.cnprog.com/

Donny V on March 30, 2009 7:26 AM

@Markus Well i'm working it big companies and major players in the web industry, I was in Switzerland before and never had the issue of not speaking german arise, but here? oh boy...

Pedro on March 30, 2009 7:27 AM

@Matt: that's a fair question, but I don't see that happening in our lifetime.

Can Berk Güder on March 30, 2009 7:30 AM

I'm not sure what you're advocating, and more importantly, to whom exactly?

Since a lot of online content is published in English, it makes sense to learn it if you need access to that information. This isn't in any way limited to programming-related information.

Comments in the code should be written in a way that makes them easy to understand for people who are going to read it. The language of the message should be the most appropriate for its audience.

I use English for labels and comments in code because I like it that way. If I was working with other Polish programmers, and they didn't know English very well, it would probably make sense to use Polish.

I would also like to remind you, that the ability to _read_ English is far more common than the ability to _write_ English, hence they really shouldn't be lumped together as "using English." For example, if someone knows English well enough to be able to research an issue online, that doesn't necessarily mean his vocabulary is good enough to come up with meaningful function/variable names in English.

Pies on March 30, 2009 7:31 AM

I'm working at a software company where all programmers share the same birth tongue, and that is not English. So we could use this language everywhere: comments, documentation, commit messages, etc. However, we don't. All our comments, all our documentation, even our commit messages are always English. Why? Is it easier to write all this stuff in English? I don't think so. The standard argument is "should we ever hire a programmer that does not speak the same birth tongue, he'll certainly have enough English knowledge to read that stuff". Have we ever hired such a programmer? No. We had foreign employees in other departments, but no developer so far. Is it likely that we ever will hire such a programmer? I don't think so. I doubt it will ever happen. However, that is not the point. The point is that we *COULD* if we wanted to and thus we keep everything in English :-)

Mecki on March 30, 2009 7:32 AM

This entry reminds me to ask whatever happened to Google's big project to exponentially improve language translation by building an ultra high quality phrase library from UN documents which are translated by hand into dozens of languages.

_ck_ on March 30, 2009 7:35 AM

I even remove the .NET language packs, so I can have english exception messages, better for googling.

Mike on March 30, 2009 7:37 AM

I'm from China, I completely agree with you. All gurus I know read english documents only.

Jan on March 30, 2009 7:40 AM

I can imagine that there'll be some indignant backlash on this American-centric attitude, but while others are grousing about it, students in India are quietly & efficiently learning English and moving forward en masse.

I only wish we could adopt as pragmatic an approach to default spoken & written language here in the U.S. It's insane that we have street signs only posted in English, yet we feel some ridiculous (politically-correct) obligation to offer forms at the DMV in Spanish. Likewise with employment, tax, and other official government forms - people are capable of reading enough English to get a drivers license, purchase a car, and navigate themselves to the county courthouse or other local government building, yet they can't handle enough English to complete a form?

Rob O. on March 30, 2009 7:40 AM

Pies: "Comments in the code should be written in a way that makes them easy to understand for people who are going to read it. The language of the message should be the most appropriate for its audience."

But how can you really tell who's going to read it in the future?

Kimmo on March 30, 2009 7:41 AM

What really ticks my off is people who cannot even speak their native language. Germans have really let themselves go. You'll hear biologists everywhere speak of DNA (even when conversing/writing in German). Only ten years ago, nobody would have thought of abbreviating “Desoxyribonukleinsäure” as D-N-A (instead, they used the perfectly sane “DNS”). It's perfectly ridiculous and in my opinion, it betrays a very sloppy attitude (not only towards language, which is, to be fair, rather arbitrary). That said, languages exist to make ourselves understood. Why impose artificial, unnecessary limits? Using a language other than English in programming-related publications (that includes source code, obviously) only serves the confusion of languages.

Konrad on March 30, 2009 7:42 AM

"If Americans were as multilingual as other developed nations then perhaps you wouldn't have posted this."

I know a lot of people in other countries who I speak with through both voice and text. They all speak some variant of English fluently. I could learn another language, but where would I use it? Much as I would love to learn another language, I would forget it all through disuse.

I think this is the dilemma we're in. The world wants us to learn their languages, but they won't stop talking in ours long enough to give us the incentive and opportunity to learn. :)

MKR on March 30, 2009 7:43 AM

Way to express a non-controversial opinion on something and position yourself as an "I don't care what they say" maverick for doing so.

*gold clap*

heh on March 30, 2009 7:43 AM

*golf clap*, even.

Guess I'm a sloppy thinker.

heh on March 30, 2009 7:45 AM

@Ryan Roberts

Good point! So, our programming language is english, and we will keep it that way. But what about our domain model. Jeff, if I hired you to write a program for a dutch airport (let's say Schiphol) would you design a class named Airplane, or a class named Vliegtuig?

Mike on March 30, 2009 7:47 AM

sorry for being anally retentive but this really really peeves me. Americans are not nor will they ever be "native English speakers". I'm quite happy and willing to accept "American English". i love you all to bits and this is nothing personal.
In fact, i think the IT industry speaks and communicates in American English!! that is why all sorts of stuff goes wrong when you set your your language to UK English instead of American.
And i believe air traffic controllers use international English which is to say words agreed upon.
i think the choice of language is driven by the major contributors and as such i am glad a certain helpdesk/outsource country has big emphasis on it's future work force learning English (queens English we call it here)

jake on March 30, 2009 7:51 AM

I'm a native speaker of one of the worlds most difficult to learn languages (Hungarian) and pride of my nations culture.
But I insist to code in English, document in English, and read about my profession in English as this has nothing to do with culture an won't help to decide "who is smarter".

Kétszeri Csaba on March 30, 2009 7:52 AM

Absolutely agree.

The last book I bought in Czech was Code Complete. Didn't want to wait for Amazon delivery.

And while the translation is of higher quality than is usual, there are errors clearly introduced by the translation process and some technical terms just don't feel right.

Tomáš Šedovič on March 30, 2009 7:55 AM

I´m from Germany and I use the web almost exclusivly in English. Do I think that it would be cool if every programmer would understand English? Yes. But is it realistic? No.

On my dayjob I have 2 co-workers who are 45 and 50 years old. They can´t speak English and I´m sure they will not start to learn another language now.

I think it´s dangerous if people who are learning a new language take part in programming discussions on the web. People could think they know what they say, but say something else and give wrong advice.

The problem with documentations are the translators, not the languages ;)

Tekzt on March 30, 2009 7:59 AM

What language are the VCR buttons written in?

bennby on March 30, 2009 8:03 AM

Esperanto wouldn't do the job for the reasons articulately pointed out in

http://www.xibalba.demon.co.uk/jbr/ranto/

English has the huge network advantage of gaining more new users in the computer-literate world each year than the aggregate number of speakers of all but a few languages. English is, as Jeff says reluctantly, PRACTICAL, and it is the world interlanguage of the twenty-first century and on course to continue to be the world interlanguage for a long time.

Karl Bunday on March 30, 2009 8:07 AM

@Konrad
We do at least still use Lysergsäure-diethylamid for LSD !

mgb on March 30, 2009 8:08 AM

To stay on top, you have to get to docs before translator. If (when?) cutting edge tech will come from China, we all will have to learn mandarin. Or may be, we should invest in better automated translators and documentation standards now to save some headaches later.

y2kx on March 30, 2009 8:10 AM

I predict in 200-300 years software developers are required to learn a dead language (English) so that they can maintain the legacy systems that run our technology infrastructure.

CT2 on March 30, 2009 8:11 AM

There is nothing imperialistic about this issue. And English is not American only either. And we, programmers, never care a damn about our geo-political identity anyway !

Vijay Dev on March 30, 2009 8:14 AM

Ahem, the language of hackers is that script-kiddie leetspeek (ugh, where's my brain-bleach). There's a story I once heard that Grace Hopper at a computing conference in the 60's, got over the language barrier for the Japanese delegation by writing out instructions to the hotel or restaurant in COBOL pseudocode. Could be apocryphal though.

keith on March 30, 2009 8:18 AM

This not only effects software but also the products of software. We translate our documentation into many languages (German, French, Spanish, Italian, Japanese, Chinese, Korean, and so on). We used to start with French and used various translation softwares to covert them. The results were horrible. A couple of year ago we decided to create the documentation in English and then translate in to the various languages. We could not believe how much better the translation were. The software was simply better at translating English then at translating French.

Jim C on March 30, 2009 8:29 AM

'Reminds me I learned some written English words as a kid (before I started courses in school) playing games on my parents' Macintosh SE... "Beginner", "Advanced", "Begin" and a few others were part of my initial English vocabulary.' - Stéphane

mine were: "swashbuckler", "cutthroat", "bucaneer" and "merchantman", thanks to playing lots of "sid meiers pirates!". but "if-then-else", "for", "while" and "until" came soon after.

my writing in english is terrible, but for reading (technical and most fiction) i prefer english. having to use programs in their translated german versions slows me down significantly, because i can't find nothing (and it's annoying as hell).

the problem: because of my coworkers i sometimes have to comment my code in german. but the habit! so often the comments and sometimes even front-end texts on websites get mixed up. and ... nobody really cares if the lightbox button for closing reads "schließen" or "close" anyway.

schnalle on March 30, 2009 8:31 AM

@heh, yes Jeff knows how to get "Mavericky."

Charles on March 30, 2009 8:34 AM

As a native French speaker, I have to second. As one of my CS teacher told us, "You should master a foreign language, and english is not a foreign language. English is your patois" (patois being an untranslatable world for the dozens of dialects that existed in France before the language was unified, </history-lesson>).

Still, one warning : we should never forget about all those others citizens of the Internet that do *not* speak english (like, pretty much everyone using the Internet on a non-english speaking country, also known as 'my mon'). I always feel very bad when marketing people use bad versions of english words or catchphrases to sound cooler, whereas I have always struggled not to use any english word when explaining how a computer works to my mom.

(But then, I learned BASIC on a German computer, so I was screwed from the beginning)

Are 'english-sounding-computer-related-human-unfriendly' words accepted in other countries as well, or do you try and translate everything properly (like I've heard french-canadians do ?)

pht on March 30, 2009 8:34 AM

One of the better arguments against English is that it's a difficult language to learn.

http://languagelog.ldc.upenn.edu/nll/?p=492 is an interesting article on the difficulties of language acquisition in English. It's notably harder than most other Indo-European languages. However, the deep vocabulary in English is a big advantage in a technical field, as it's an easier language to create neologisms in than many others.

The problem is that the native speakers of English are both numerous and wealthy. The only languages in the same league in numbers are Spanish and Chinese, and the acquisition problems for Chinese are worse than English. If we're talking about nonnative acquisition, then Chinese is worse, in that few non-native Chinese speakers speak a Sino-Tibetan language, while many non-native English speakers speak Indo-European languages, so the proximity is better. Of course, Spanish is an Indo-European language too, and is a language that has lots of native speakers, and is much easier to acquire than English.

If we were to switch, (New World) Spanish is the only language that can seriously be argued as a better option as a world language.

Richard Gadsden on March 30, 2009 8:34 AM

There are a number of reasons why people would like to oppose making English a de-facto standard. These days its all about making programming language-independent and platform-independent. Why exactly should the trend be contradicted by making it culturally-specific? Translations might provide hindrances to comprehension, but this proposal halts the development of the legions of programmers who do not and Should not be asked to import a language to understand a program.

(Would it be so much easier if we all used the Windows + IE stack?)

Abhishek on March 30, 2009 8:43 AM

Esperanto!

Bob on March 30, 2009 8:45 AM

I think your claim is too strong. Yes, in order to be an above average software developer, you will have to understand English. There just too much code and documentation in English that is unavailable to you otherwise. However, if you are an average Chinese, Indian Russian programmer, there's still a reasonable amount of resources in Chinese, Indian or Russian available to you. They will run into English roadblocks sometimes, but I doubt that is a real problem for many of them. For decades to come, there will be non-English speaking programmers.

Ivo on March 30, 2009 8:48 AM

I went on a caribbean cruise 2 weeks ago, and found out through idle chatter with the cruise director that the entire bridge staff on Carnival Cruise Lines is required to speak fluent Italian, for whatever reason. It happens.

MikeA on March 30, 2009 8:48 AM

It's not just programming, it is many things technical.

When I was in college, for both degrees (both technical, but neither were CS or S/W Eng.) there were foreign born students, some of which did not speak English well, but when it came technical terms they almost invariably used the English version of the term even when speaking a foreign language.

In my first degree, each year we had a group of exchange students from a specific country, in a special program taught mostly by a teacher fluent in their language. One group was from Saudi Arabia, another from Mexico - both essentially had to use English technical terms because there were no words in their language for many of the terms.

My impression overall was that those who spoke English well did better, even when they had a teacher who could lecture in their native language.

Developer Dude on March 30, 2009 8:50 AM

I basically agree with the fact that code, and more importantly documentation and comments should be in english. As a non-native English speaker, I find it necessary to use a "unified" language, especially with the whole open-source community connecting throughout the world. I feel however that the end user should have applications available in his native language. My grandma shouldn't have to learn english to use a computer or else she would never do.

Joe on March 30, 2009 8:58 AM

Ironic. Programmers from around the world are discussing here in *English* about the ideal language for communication among programmers. That must be some sort of recursion bug. Someone please fix English 1.0!

G-Man on March 30, 2009 9:00 AM

Absolutely. I grew up in Ukraine and got interested in computers as a teenager. It was nineties and everything was in English only and it was great. Everybody knew enough English to read the docs.

Furthermore, the games were also not localized, so even kids who where not interested in programming where learning English to play them (Leisure Suit Larry will make most kids want to learn at least some English). Unfortunately times have changed and localization of games is a huge industry in Russia/Ukraine now. Which means less kids learning English.

mk on March 30, 2009 9:04 AM

@David
Some of us Americans do speak the Queens English, at least the Queens English from the Victorian era. Those of us that do take great offense at being called yanks though. ;)

Mark on March 30, 2009 9:09 AM

I do agree that english is the defacto standard, due to a lot of factors, and that probably most development happen in it.

As any coder knows though, language ends to shape your thoughts. developers with only experience in C just think differently from devs with only Java experience, which again differs massively from devs that think in Erlang or Python, or Ruby.

Most accomplished devs tend to learn a number of languages, not necesarilly to use those, but to be exposed to these different ways of thinking.

I can't help but think the meta language you use also plays a role in how you think. English is actually a very ambiguous language if you compare it to others such as German and Latin.

So I wonder, how much of the non-core dev stuff that we struggle with every day, user requirements/stories ambiguity, innaccurate specifications, etc. is due to us using english for these tasks?

Could native non-english speakers comment on using their native tongue for the fluffy bits around dev and how much correlation they've seen with us english speaking ones?

dustrider on March 30, 2009 9:10 AM

" nobody (or at least nobody who is sane, anyway) localizes programming languages."

There are at least two examples that use localized keywords:

- Microsoft Excel (function names)

- 1C DBMS (a Russian firm 1C is making "enterprisey" software like 1C Enterprise)

Why would they do it? Tailoring to a user base that may not be proficient in English?

Anon on March 30, 2009 9:15 AM

I'd like to add that it takes your brain time and energy to internally "switch" from one language to another. Try listening to a podcast in one language while reading a text in another (assuming you are bilingual). You will quickly notice that it's considerably harder to do than listen to and read two things in the same language.

For that reason alone, I dread newbie programmers who put in comments and variable names in their native language, while the code and all foundation or library classes and method names are in English. It's a nightmare to read.

J. Stoever on March 30, 2009 9:19 AM

I'm a Asian guy, I am a Korean. Unfortunately I don't have Indo-European roots. So even I have learned English from my middle school age for about 17 years. but I am not fluent English speaker. I am only able to read IT documents with dictionary. I don't like foreign language. and I am not gifted about learning language. however I always effort to train myself to be fluent English speaker, To visit your blog is a kind of efforts, too. :-)
Why I always try to learn English? Because, the ability of understanding English is super power to get significant information. 80% of information on internet is written by English and 99% of most important information is written by English too. Most documents which are translated to Korean are just only basic,common and regular.

1 month ago, I bought the book "Don't make me think". and I have waited for 2 weeks. and At day I am received the book. I read whole pages. very concise book it is, and very useful and impressed.

"Don't make me think" in my mother language does not exist...

Lee jong-sung on March 30, 2009 9:20 AM

Really? All programmers speak english in non-english-speaking countries? I'm in Canada, and when there's a common mother tongue in a company I have worked for, people use it, including for technical communication. The chinese developers don't talk english amongst themselves. The iranian grad students talk about their research in farsi. I'm not sure what language the sri lankan contingent at my former job spoke together, but they did, and only switched to english when I joined the conversation.

Sometimes technical terms are in english, sometimes not. I'm not speaking greek or latin when I use terms from those languages.

Carolyn on March 30, 2009 9:22 AM

Prior to the beginning of the industrial revolution in England, mathematics was the most sophisticated field in the world. Because the Italians had the advantage here, you simply had to learn Italian to practice mathematics or risk being cut off from the most advanced and current knowledge in the field.

Shortly thereafter, England got ahead in mechanical engineering (steam engine, etc). From that point forward, the English language has been tied to scientific and technological advancement. Seeing that this has carried forward into computers and programming, it isn't very surprising.

JS on March 30, 2009 9:25 AM

English has become a world language. In many former British colonies, there are many local languages, but the common language that ties everyone together is English. In the scientific field, English is the language that everyone has to learn to speak. The most important journals are all in English.

And, it becomes self enforcing: As more people learn English, it becomes a more of the official world language, and thus even more important. With the fall of the Eastern Block and its Russian standard, English really has no competition.

The biggest competitor will be Chinese because of its large speaker base. As the Chinese become more technical, they'll produce their own literature and journals. Business-wise, Chinese is already a strong contender to English, and the more Chinese firms reach out to the world for resources and markets, the more important Chinese will become.

However, there are several advantages that English has. English is a very loose and adaptable language. New words are easily added, and words shift constantly between various word forms. For example, the word "text" was a noun (printed text), became a verb as in "I texted him a message", and back to a noun as "texting". English also has an extremely large vocabulary thanks to its dual French/Anglo-Saxon heritage. There are also few verb and noun forms to congregate, so it can be an easier language to pick up.

However, English's biggest advantage is that there is no official "English". English freely borrows words and phrases, and quickly adapts to the speaker. It's always fun to watch the French Academy of Language ban an English phrase that actually had French roots. In 20 years, the version of English most people will be speaking won't be the American or British version, but the Indian version of the language with quite a bit of Spanish thrown in.

David W. on March 30, 2009 9:25 AM

English has one compelling advantage when it comes to programming: The alphabet fits completely into the ASCII encoding.

Not surprising, since ASCII is an English-based standard, but nevertheless important since it is one of the few encodings that almost everybody can agree upon and (more importantly) actually understands. Take the Dutch example above; Dutch is actually one of the very few Euro languages which can be fully expressed in ASCII, if you're willing to overlook the fact that one character has to be expressed as two ('ij' is technically a single character in Dutch.) But most Latin languages have a variety of diacritics which have to be omitted in ASCII. There are "standard" ways to do so, but the fact remains that you are not writing French or whatever; you are actually writing English-transliterated French.

English has another advantage. Due to its very loose, context-sensitive grammar, it is a very easy language to speak at a rudimentary level. You might be butchering the sentence, but odds are you will nevertheless be understood. English is easy to speak comprehensibly, but very hard to speak fluently. Other languages such as German and Russian with lots of inflection and rigorous grammars are more "consistent" and easier to speak "properly" once you've internalized the many rules, but make it much more difficult for beginners to express even basic ideas except by rote repetition.

KJB on March 30, 2009 9:27 AM

An additional note; the permissive nature of English also makes it ideal for domain-specific "technical" languages, such as aviation, medicine, and... programming.

KJB on March 30, 2009 9:28 AM

Ricardo said: "I think most will concur with this post."

And everyone else won't be able to read it anyway.

*Legion* on March 30, 2009 9:31 AM

@Kimmo: "But how can you really tell who's going to read it in the future?"

That argument goes both ways. If I can't tell who is going to read it, why should I assume that person will understand English?

Pies on March 30, 2009 9:37 AM

Jeff, how about allowing replies to comments on your blog? It would make conversations easier, one level of threading should be enough, and you can hide replies by default.

Pies on March 30, 2009 9:38 AM

Because programmers understand logic it doesn't matter what language the keywords are in, you learn what they do and go about your merry way (car and cdr anyone?).
But to think that everyone should be fluent in English to read all the docs is a complete waste of a programmers resources. By one person translating to another language you enable all those others to start doing immediately instead of overcoming both the 'technical problem' and the 'communication of that technical problem'.
I really do challenge someone to try and seriously learn a foreign language (no, not another programming language - they're all the same) it'll open your mind a bit.
Who knows where history will take us. Maybe as development (and those willing to buy software) shift to the east, you'll have to write some of that unicode in your comments.

Marcus Booster on March 30, 2009 9:39 AM

First, there are lots and lots and lots of developers who don't read English well, and they rely on resources in their own language.

Secondly, many software publishers (not to mention distributors) view multilingual documentation as a competitive advantage.
if I am a Japanese speaker and there are two competing products- Product A and product B, and B has documentation in Japanese while A only has English docs, then I'm going to choose Product B.

Thirdly, let's not forget about programming books. Sure, someone with low-level English skills might be able to read API docs and code comments, but they won't be able to read English programming books that have long passages of prose that discuss this or that _concept_. Even if they can somehow labor through it, it will take them forever.

Finally, Jeff, you're talking mostly about programmers in other countries consuming documentation. Passive reading/listening is much easier than active writing/speaking, as any language learner knows. If forced to blog/write/code comment in English, a non-native speaker is going to a) take longer to do it or b) not do it.

We mustn't make the mistake of thinking that all programmers are the bilingual elites that participate in blogs like yours, no matter what anecdotal evidence gets emailed to you.

Mike Sickler on March 30, 2009 9:39 AM

For our friends in the UK, I think I can sympathize with you. As a native US citizen learning to program means having to learn so many technical terms and programmer idioms in US English is not always easy for us either. IEnumerable, concatenation, iteration, polymorphism, idempotent, deprecated, "Jump the Shark" (thanks to Jeff) :), "Eat your own dog food", etc. are not normally found in the average conversation or vocabulary.

I can only imagine the confusion our friends from China experience trying to understand some of our programming idioms!

Patrick Wood on March 30, 2009 9:41 AM

Man, that remindes me of a really stupid newbie mistake I did on a new project - I tried to write it it in my native language (i.e. function names, classes, comments etc.). Luckily I realized the shortsightedness of this before hitting version 0.1.

Also, I agree, english is the linuga franca of programming. Currently at work I get to maintain code that seems to be written when a company was small and national, now it's international and still containing non-english comments... that just sucks!

Finally, if you ever think to start an open-source project and publish it, my humble advice: use english!

ols on March 30, 2009 9:41 AM

Even good programs, such as OTRS, if poorly translated to English, make them impossible to justify using.

...which is why I'm currently switching us from OTRS to RT.

Collin Cusce on March 30, 2009 9:45 AM

I'm going to Paris for my vacation this year so I'm learning a little French. I bought a pocket translator (Pocket PC customized for language translation) with an audio phrasebook so if I really have problems communicating I'll just whip that out.

There are plenty of Internet resources to help you learn another language. I'm using the Reverso Online Translator to create MP3s of English phrases translated into French and then compiling them into my custom help collection, using Flash to play the MP3s. Most language learning sites force you to download sound files though. You can also find plenty of YouTube videos created by French teachers.

You can't program in French but you can use Eiffel Studio and Eiffel.NET. :)

Robert S. Robbins on March 30, 2009 9:45 AM

@Ryan

At our company we try to apply the principles from Domain Driven Design. So yes, that means our code is somewhat a mix of English and Dutch. Dutch for the domain concepts, English for more technical idioms and patterns. So we end up with methods like 'getVliegtuig' or classes like 'VliegtuigDecorator'.

At a previous project (no domain driven design applied) we translated everything to English even the domain. This falls apart the moment the domain becomes complex or is about local concepts (for example the social security system of a certain country).

JS on March 30, 2009 9:50 AM

GOD BLESS THE RED, WHITE AND BLUE!!!!!!

In all seriousness - I know some people through IRC that speak English as a second language, and I am quite jealous of them that they are speaking more than one language. Sometimes I will idle in #archlinux-fr and see if I can understand what they are saying. Also, I try to imagine how crazy it must be, reading in a second language, something that is already probably complicated due to the technical nature of programming.

theman on March 30, 2009 9:50 AM

I remember, in my high-school days, that a friend of mine (not me, I swear. :))tried to shortcut his way around an open assignment and hand in some code for Tetris he found on a BBS (yes, it was that long ago).
One problem though - the variables, function names and comments were all written in French. He sure had a fun time translating from French to English.

Or another time, when I had to hand in an assignment at the university and one of my team members handed his part with all comments Hebrew, written with the English character that sounded like the Hebrew characters. That wasn't so fun to convert (the "it happened to me" factor).

I wholly support English as a standard language for development. I write my code in English, using English for all names, write comments in proper English, write doc and guidelines in English, read blogs in English - I type much faster in English (touch typing) than I do in my native language (finger-by-finger typing).

Ran Biron on March 30, 2009 9:53 AM

I don't like english in programming languages. I often see code from India which is badly commented in english. Code from Germany or Sweden where I prefer to read the fucking code just because the comments are not written in a fluent english, even if programmers pretend to know english well. Even if you see british comments:
Serialize // serialises
you can think to begin to scream.

The bad thing is that many companies want english commetns to transfer code better to international teams. The bad thing... The bad thing really is that you get everything more and more blurred. The code is more understandable than that crippled english. If you have ever seen a program which is translated by programmers from english to german or german to english you will know that "programming english" has nothing to do with understanding or writtinfg in english.

For some companies also the company language is english. There exist other companies like Porsche which resist to use english. The have made much studies about it and just found out that the communication in native language is much more clear and it is cheaper to employ good translators than trying to put a company to bastarised crippled english.

Just try to listen to an indish developer who speaks english and think again.

Artor on March 30, 2009 9:55 AM

>Dutch for the domain concepts, English for more technical idioms and patterns.

Ah, ok. So English infrastructure and localised domain, that makes sense. Dutch is pretty grammatically similar to English though isn't it? I wonder how those with native languages less amenable to being translated into object models deal with it.

Ryan Roberts on March 30, 2009 10:08 AM

English is the de facto language for Computer Science simply because of the number of computer languages invented where English is the native language.

Here's a short list:
x86 Assembly
x86-64 Assembly
COBOL
Fortran
Common Lisp
Scheme
BCPL
B
C, and any language based on C (C++, Objective C, etc...)
BASIC
Perl
Java

These are just the languages I can think of off the top of my head.

R. Bemrose on March 30, 2009 10:11 AM

The MS supported VB6.0 Korean reference. but they did not supported VC++ Korean reference. I am not bilingual elites but I don't have free to choice in this kind of situation. If I need VC++ , I should read VC++ MSDN written by English. I have no right to select language.

I think that Computer and programing sciences are born from America just like movie. Computer and movie are invented by Americans.

If you want to know a core of the Taekwondo. You must learn korean language.
because of every Taekwondo terms are own korean words.

Same reason If you want to know a core of computer programing. You must know English. Because The Best of Best computer experts are American or English native speakers or bilingual Europeans. At least they usually write document by English.

Lee jong-sung on March 30, 2009 10:11 AM

The MS supported VB6.0 Korean reference. but they did not supported VC++ Korean reference. I am not bilingual elites but I don't have free to choice in this kind of situation. If I need VC++ , I should read VC++ MSDN written by English. I have no right to select language.

I think that Computer and programing sciences are born from America just like movie. Computer and movie are invented by Americans.

If you want to know a core of the Taekwondo. You must learn korean language.
because of every Taekwondo terms are own korean words.

Same reason If you want to know a core of computer programing. You must know English. Because The Best of Best computer experts are American or English native speakers or bilingual Europeans. At least they usually write document by English.

Lee jong-sung on March 30, 2009 10:11 AM

Lady Lovelace, being the first programmer, spoke English as her native tongue. We must remember that computer languages are true languages that are in turn based on a spoken language, English. To fully understand the evolution of computer languages, one will have to understand English.

Mark on March 30, 2009 10:19 AM

Yes, I personally agree all developers should understand English or to be a good developer you need to be good at English.

But the fact is that's not the case right now when we talk about developers all over the world. Actually, to be a developer doesn't require so much knowledge in English, and there are so many developers in China can't speak or understand English very well. They don't read English books, and most of their time they don't visit websites in English. That's why Chinese book market have good sales on foreign languages books tranlsated in Chinese, especially books of computer science. SO is one of the most popular developer community websites and users are from all countries. But I believe the percentage of visitors from China and other non-English speaking countries are very low.

So I think the problem is how to help these developers who are lack of English skills?

chagel on March 30, 2009 10:20 AM

I agree with Leonel and Nick Fortescue: it's not exactly English that developers speak. It's English-based computer-related language.
It's good that most programmers across the world share the same language.
But why stop at programming? It would be good if all people in the same profession (any profession, not only in programming) shared the same language.
In fact, that happens already. The number of natural languages shrinks with years and languages are getting similar to each other.

Dennis Gorelik on March 30, 2009 10:21 AM

East End brewing makes the best stuff in town. Very difficult to get outside of the region.

mike on March 30, 2009 10:29 AM

Excellent article, thank you.

Ryan on March 30, 2009 10:33 AM

I also comment everything in English, as well as reading technical articles in English, essentially for the same reasons as Slawomir.

Since I switched to DVORAK-DEV I also left accents and proper punctuation in the dust. I don't miss them.

MaxDZ8 on March 30, 2009 10:46 AM

Thanks for this discussion, Jeff.

John on March 30, 2009 10:58 AM

Jurgen Appelo wrote a great post entitled "Thank You, Stupid Americans" which covers similar ground.

At one point he states:
"I think most software developers are now glad that the unique combination of American imperialism and stupidity has resulted in all computer languages and frameworks being presented in one simple language: English."

For more check out:
http://www.noop.nl/2008/04/thank-you-stupi.html

Andrew Steele on March 30, 2009 11:05 AM

Why are British people so snobbish about the spellings of certain words? I mean, seriously, wanting to stab the compiler because of a slight difference of dialect? Seriously?

dave on March 30, 2009 11:06 AM

English is the standard language for science, period.

I study electronic engineering, in Italy. As I go on I find always that most of the informations I need are written in English, and that's not a problem, at least for me.

Anyway, every paper in every scientific journal is in English, it could be math, electronics, physics and programming! Everything you read about science in a language that is not English is old. Research is done in English.

And last but not least, is there someone of you who prefer the localized version of the D&D handbook?

PS:
At least English is easier than Latin :P

Andrea on March 30, 2009 11:14 AM

Great discussion.

Here in Brazil professionals often choose to program in English. One advantage of english is that it makes variables, class and methods names shorter. For example, in english you can use AccountManager instead ManagerOfAccount, while in portuguese the first case don't exist, so it would be GerenciadorDeConta. Moreover, words in english are in most cases shorter, like get, set, run, save, find, etc.

Marcio on March 30, 2009 11:15 AM

I do think that to programm well you will need read tutorials, manuals and techinical articles that are written in English. Good programmers have to speak and read in English.

http://www.pactotransportes.com.br

Great post!
Thanks.

Josemar on March 30, 2009 11:16 AM

There are programmers who do their job without knowing English well. Although it's harder, you _can_ just stick to translated books and other material in your (non-English) language.

Some people may know enough English to read it if they have to, but prefer ease of reading their native language even if manual is one revision behind.

These programmers create fantastic niches for non-English books, blogs, news, etc.

kL on March 30, 2009 11:21 AM

Interesting. I have laboriously used programs written in languages other than English and found their documentation to be somewhat lacking. I'm now wondering if that's because of poor translation to English, or lack of facility to express details in the original language.

Jaheckelsafar on March 30, 2009 11:27 AM

I'm from Poland, and I've learn English by playing games on C64 and trying to read documentation in English. Also - after I've installed my first Linux - from reading fortunes :)

But - my problem is I've learn English by reading, and I always pronounced it in my thoughts like I'd read Polish. So now I speak English with mostly Polish phonetics, it sounds funny and not really like English. Still, I can communicate.

Funny thing is - when I read article on internet, later I often have troubles with finding it again, because I forget in which language it was.

PS. in my company we recently write code with English identifiers. We now have identifiers like "GenerateSkladanki", "RealShips" :)

odrzut on March 30, 2009 11:27 AM

I'm not ready to call you ugly, Jeff. But I do think that you're being a bit insular and short-sighted.

The truth is that some programming languages support comments, strings, and identifiers that use any UNICODE symbol you want. (<a href="http://jeffmatherphotography.com/dispatches/2006/10/_world_programm/">Here's an example in Perl</a>.) That means that you can write your company's programs and systems in your native language, harnessing a pool of local talent that doesn't write English, and then localize it into English when you're done. (If that's even important.)

Of course, programmers will need to know enough to handle the English-inspired keywords and APIs of the library, but I'm continually amazed by the power and subtlety of Google Translate. Soon using English (or non-English) code won't be much harder for the non-native speaker than using the code written by the newb in the cube next to you or the code you wrote five years ago.

Jeff Mather on March 30, 2009 11:35 AM

If you Americans don't stop abusing our language we'll revoke your license to use it and then how will you communicate with each other?

An Angry Englishman on March 30, 2009 11:36 AM

Ugh... That link was supposed to go here:

http://jeffmatherphotography.com/dispatches/2006/10/_world_programm/

Jeff Mather on March 30, 2009 11:36 AM

I am from The Netherlands, English is the third language I learned (I went to an international school in Basel, Switzerland, learned German as my second language) and English is all I use when programming. Books written in Dutch for programming don't make sense to me, they don't feel genuine and most of them have mistakes or contain a lot of English anyway, might as well stick with English.

Bert JW Regeer on March 30, 2009 11:40 AM

If those idiots didn't put support for foreign languages into the wysiwig machines English would have won by now.

Sincerely, a true 'Ugly American'.

Oh, by the way, we aren’t the only UGLY ones.

A story...

I was in Montréal a few years ago (in the 80's) and I was on Center Street, french bars on one side, English bars on the other.
I met a group, unbeknownst to me at the time, of french separatist.

The very attractive dark hair french girl invited me upstairs with her and several of her 'friends'. I should have known better, they were all dressed in black from head to toe.

After sitting with them at a table for a few minutes I very politely asked her if they could speak English as I do not understand one word of french.

She very impolitely screamed in french:
'Manger la merde et mourir!'.

The in English:
'You dammed Americans. You come up here with your dammed English and expect us to speak it.'

Then she screamed a few more things in french and I noticed that
the four burly fellows across from me were getting out of their chairs and I did not like the way they were staring at me...

I ran for my life, down the stairs, across the street, into an English pub and right into the Australian National Rugby Team.

I told them what had happened and they piled out the door to ask the frenchmen what their problem was...

I have never seen anyone in the US go berserk if their asked to speak french, German, Italian, etc...

Mac on March 30, 2009 11:40 AM

We I am sorry to inform you but English is not an American language. You may want to bash Americans because its popular. Americans adopted english as its language. (Hint it came from another contry). When the country was formed the took a vote between German and English. I understand it was close. So you think English is hard to learn!!! Try German. 200 years ago this country decided to standardise on one language. Many other countries have done the same. It does not mean English is better, it just means its a standard.

Joe on March 30, 2009 11:44 AM

I am natively German. I started using a German Version of Delphi 3 as my first real programming IDE. I switched to an English Version of Delphi 4 when it was released, and since then, I NEVER looked back, and I NEVER had the desire to use a German version ever again. When MSDN.com comes up in German, I switch to English. Why? Because translation are just that: Translations. They are not the Real thing. It's called "Exception", not "Ausnahme". If my code says "Exception" then the error message should say Exception as well. If my Code says Exception and the error message talks about "Ausnahme", I have to make an extra thought-step in order to associate them - easy with Exception/Ausnahme, but really hard in some other areas.

Plus, because English is spoken by so many people, the community and resources are simply bigger. You can bash Americans/British if you like, but it's a fact that English is by far the most spoken language in the world. Limiting myself to the German Community would be a stupid move in my opinion, because it's like using only 20% of your PC's RAM before starting swapping.

For people who do not really speak English, localized Communities are of course fine, I don't want to bash them, but I think that if you really want to connect to all the community, English is the way to go.

Any if someone wants to change that - feel free to do so. Invent an absolute must-have programming language in your native tongue. Just keep in mind that Delphi is an English Product, Visual Studio is English, Mac OS X is English, Windows is English - with only very few exceptions, ALL the important programs are natively English and then translated, and translations are never 100%, especially not if you leave the Syntax unchanged in english. There is one example, which is WinDev. To my knowledge, they have a French translation that really translated EVERYTHING into French, including the language itself, and it seems to be quite big over here in France.

But unless 99.99% of my working environment is natively English, I refuse to use a translated version of any development tools, because that would mean I seriously limit my resources.

Michael Stum on March 30, 2009 12:00 PM

While your point is certainly true for the next 30 years or so, the promise of machine translation is that it will eliminate language barriers. e.g. on the fly (perfect) translation.

But yes, I'm guessing that's at least 30 years away. I think we'll be getting diminishing marginal returns wrt accuracy - unless we hit some big breakthroughs.

Michael on March 30, 2009 12:13 PM

I have a disk with russian Visual Studio inside... But I'm never input it in my CD-rom... and never will. And no one in company is do this. ^_^ So yes, English is the only language we speak in the code.

AlfeG on March 30, 2009 12:19 PM

"Whatever country you live in, whatever language you speak, you have the same access to the accumulated knowledge of the world as every other citizen of the planet Earth."

...you really haven't traveled much have you, or tried to use the internet in Dubai, Thailand, China, Australia etc...

Adam on March 30, 2009 12:23 PM

You wrote:
>>>Anon on March 30, 2009 09:15 AM

>>- 1C DBMS (a Russian firm 1C is making "enterprisey" software like 1C Enterprise)

>>Why would they do it? Tailoring to a user base that may not be >>proficient in English?

As russian speaking programmer that have to write some piece of code for 1C systems I need to say that russian coding for 1C is a trully CODDING HORROR for programmer. And it's confusing a LOT. I'd preffer a russian comments in the code, not the code.

AlfeG on March 30, 2009 12:26 PM

do we really code in english? i've been coding for a while now (8+ yrs), i speak and understand english fluently, speak some french and very little german as well as being fleunt in my mother tongue and several other languages in my country (important for swearing).
my point is, which ever language i am speaking, i find myself thinking in it as well. isn't that the same with code? do we write significant paragraphs in comments so that one can look and say that is english or geekspeak? really.
what i would really like to know is, what language do you think in as you code? are your english words in your code actual communication of ideas or just symbols that just so happen to have english meaning?
could linus trovald have reached all of us just as well with UML?
i work with filipinos, indians, a malagasy and a whole rainbow of africans. when i say "connect as sys, dump database, su root, reboot server, load dump to test, start uat, brb, thnx" was that english?

jake on March 30, 2009 12:38 PM

I'm from Mexico. And I find that, in fact, English is the languaje people should program in. I'm into games, and it is really hard to find good information in Spanish, so I don't even bother any more.

Also, good programming books in spanish aren't hard to find, THEY DON'T EVEN EXIST. I have never, ever, seen a translation to Code Complete or The Pragmatic Programmer.

It's a shame, because most programmers I know in Mexico aren't proficient enough in English to read these books or the internet. And the good stuff never gets a translation

Eduardo Meade on March 30, 2009 12:40 PM

It's a similar situation with music. Most music uses Italian annotations (forte, piano, crescendo, andante, presto, con sordini, etc.) though some contemporary stuff uses English. Italian is just the de facto standard. The thing with music is that one only needs to know a few words and doesn't need to read pages of documentation or books.

JB on March 30, 2009 12:42 PM

For the ultimate in English-centric programming:

http://esoteric.voxelperfect.net/wiki/F*ckf*ck

Graham on March 30, 2009 12:50 PM

The article is fine, there are very few grammatical errors, spelling is superb,... But in essence, to sum it all up, the whole point came down to this: "The sky is blue".

It is. English, english and english. All the other languages are all, but useless to developers.

Grzelkrantz on March 30, 2009 12:51 PM

You're wrong. The Polish example is just a sample of one people in one specific country. Hardly statistically relevant.
It so happens that many programmers in eastern European countries would find it a little insulting to insinuate that they don't understand English. Most of the rest of the world feels differently though.
One thing you're not talking about (that in itself is absolutely amazing) is that you are excluding most of the population of the world from ever learning programming, which would be immensely damageable to the industry as a whole.
I learned programming way before I learned English and that is how it should and will be for most people.
Most of the world doesn't speak English. The approach you're advocating is just laziness and arrogance.

Bertrand Le Roy on March 30, 2009 12:52 PM

@dustrider: Correct me if I'm wrong but my understanding is that English has very precise words but very imprecise grammar. I think this has to do with English speakers' cavalier attitude towards their language. The most intelligent English speakers I know with a really good grasp of the English language invent new words to describe things quite frequently. Most of these don't catch on, but I have to think it has something to do with the ridiculous proliferation of English words. As an example, think of how many words there are for "big" in English: big, large, humongous, gigantic, gargantuan, immense, titanic etc. These all mean subtly different things, and can be very precise. Still, English grammar does suck and I can imagine is very difficult to learn if you're not born into it.

Anyway, I suspect looseness with English has corroded its grammar but made our words very descriptive and precise.

An example of a word that was invented by a single author and is now part of standard English: The word "Chortle" was invented by the author Lewis Carrol and is now used regularly in English literature.

That said, I suspect that part of English's success is precisely because it is such an amorphous blob of every word imaginable from every language that seemed useful. As the world gets more and more globalized, I think we will converge on one language. That language may not be English, but I bet it will be more of an amorphous blob language than a strict, good-grammar language. As Mac noted, other languages also have very staunch defenders. I think the difference is that Americans are mostly lazy and expect everyone to join the amorphous blob (which is probably arrogant and self-centered, admittedly) while other languages actually care about the quality of their language.

It reminds me of how Microsoft and the PC defeated Apple. . .

Accatagon on March 30, 2009 12:53 PM

I'm from france, my english is certainly not perfect, but every books or documentation I read are in English. When people in France asks me if a french version of a book exists I say always "you're a programmer your life will be awful if you think to read a technical book in french".

To me it became easier to read technical documentation in english than in french.
When I talk to other french programmer I always use English technical terms (not their translation in french).

I don't say : "une propriété" but "une property", I don't say "un champs" but "un field".

Slashene on March 30, 2009 12:53 PM

English is the "de-facto standard language of software development" as much as it is for mathematics. Which it isn't.

If a non-English programmer learns English, then he/she would have access to communities/documentations that would otherwise be out of reach. But the same applies to us and other languages.

I'm learning Japanese so I can communicate with some Japanese hackers better, and I don't expect them to learn English just for me.

Jack on March 30, 2009 1:02 PM

Interesting take on one of the key characteristics that might make up the World's Best Programmer.

Would love to know what you (and your readers) think of my take on my search for World's Best Programmer...

http://tpgblog.com/2009/03/30/worlds-best-programmer-inclusion/

Jeremy Horn
The Product Guy
http://tpgblog.com

Jeremy Horn on March 30, 2009 1:14 PM

jack, want a cookie?

theman on March 30, 2009 1:15 PM

No need to feel as an "ugly programmer".
For the given pragmatic reasons programmers should learn the english language, for their own good. Period. There's no ugliness in pointing out the facts.

But it's all too easy to draw false conclusions from that. Even ESR, well-known as a sharp thinker didn't question the idea 'that English has a richer technical vocabulary than any other language' (as was reported _to_ him).
I mean what?!? Especially programmers should see the red sign blinking when it comes to language rankings, reading "Caution! Sloppy conclusions ahead!".
Isn't it already all too difficult to compare their laboraty languages in a sane way, even with regard to a very specialized topic?

Just to sharpen your thinking.

peter on March 30, 2009 1:20 PM

I'm working in holland these days and my dutch colleague hate it when people use dutch names for variables and so on. They even hate having their OS in dutch.

Rhys on March 30, 2009 1:21 PM

also, sites like this confuse me.. why is english intertwined?

http://code.razvanstavila.com/

theman on March 30, 2009 1:24 PM

When the Big "Robot" in the sky decides to Decompile you, we all turn into the same 01000011 01101111 01100100 01100101

Dagbar on March 30, 2009 1:26 PM

You can't name yourself a good programmer w/o fluent English. Period.

alex on March 30, 2009 1:28 PM

I don't see it as an "ugly American" issue. It wasn't that many years ago that if you wanted to make a name in Chemistry you had to know German (because so much of the technical literature in the field was from Germany).

Mike on March 30, 2009 1:36 PM

"Consciously choosing to switch from Polish to English reminds me why I gave up Visual Basic for C#, as painful as that was. These languages do exactly the same things -- and the friction of choosing the minority language was severe. I found reams of code and answers in C# whenever I searched, and almost nothing at all in VB.NET. I spent so much time converting code into VB.NET and introducing new bugs and errors in the process, along with countless language-only forks. This eventually stopped making sense to me -- as it would to any good programmer."

Damn it Jeff!!!!!!!! What about the evils of case sensitivity?
http://www.codinghorror.com/blog/archives/000458.html
... :-)

o.s. on March 30, 2009 1:40 PM

Like Jeff, I've also come to realize that I'm doing myself no favor my sticking with Visual Basic.

I personally prefer the look and verbosity of Visual Basic. I guess I'm just not a fan of semicolons and curly braces!

I was bitten too many times by C++, Pascal, and Java compilers years ago because I'd often forget a semi-colon here or there that I grew a great distaste for that syntax.

But, it's quite clear by now that Visual Basic has lost to C#. I'll program all new projects in C#.

Zack on March 30, 2009 1:47 PM

So, english speakers, be they native or not, posting on english-written blogs and sites, reach the conclusion that most programmers worth their salt know and prefer english.

A further evidence of this is that non-native english speakers (who, nevertheless, read english) prefer english documentation, as documentation on their own language, to put it plainly, sucks.

Can anyone see the problem here?

I'm sorry, but this is WRONG, plain and simple. Guys, you are DEAD WRONG.

First, let me attack the documentation thingy. I always go for the english documentation. It's more up-to-date and it has less errors (it couldn't have more errors than a translation, after all!). The conclusion should be obvious: document translations are cheaply done and companies do not invest in creating original documentation whereas english originals exist. This is a problem with the creation of the documents, not with the language they are written in.

Next, the english-bias. By selecting blogs and sites written in english, you are eliminating almost everyone who doesn't speak it. If you are USED to using these resources -- after all, they ARE more complete -- then you have applied a bias to the selection of your peers. You don't know many non-english speaking peers because you don't go to the same places.

Then, the "english is better for programming" bias. Bullshit. Programming slang gets created by the second. Drop a C++ systems programmer in a Java or PHP/Web environment, and he'll think these people are speaking a different language altogether. Vocabulary is NOT an issue. At worst, people of different languages will just "import" the word, just like it happens with english. And it DOES go the other way, as any proponent of free (libre) software knows. :-)

What programming requires is the ability to analyse, to abstract and to think logically (actually, algebrically -- or however that would be correct spelt in english :). And, I'm sorry to say, but some languages are really better for that than english. Some, of course, are much worse. :-)

Let me drop by the keywords, just for a second. I have noticed that it is a somewhat common problem with newbie programmers who are native english speakers that they sometimes expect their code to behave in a different way, based on a "english" reading of the source code that differs from what the code actually does. I have never seen this happen with people who do not speak english. I don't mean it's a _problem_ to know english. My point here is that you learn very specific meanings for the keywords, to the point that the english origin becomes of little importance. For instance, "yield" in Ruby vs Scala.

And, now, finally, to anectodal experience (unless someone here has statistics?). I have seen very good programmers who couldn't read even an airport sign in english. They are at a disadvantage because they do not have access to the same repository of knowledge and documentation that their more fortunate counterparts have, but it did not detract in any way their programming ability.

Finally, let me address Eric Raymond. He is completely right. But he is talking about HACKERS, not programmers. In the sense Eric Raymond refers to hackers, they are not only elite programmers, but also people belonging to a specific cultural group. As evidence, it's easy to imagine an elite programmer (english speaking or not) who, otherwise, does not seem a good fit for "hacker". But the converse applies. Someone who would otherwise be a member of the hacker culture will never be part of the group unless he can speak with them.

I expect we'll learn in the future a word that have similar connotations to "hacker", but it will be a chinese word, and it will only apply to people who can speak chinese and engages in conversation with peers in this group.

As an afterword, I'll throw a bone. A common advise for people looking to improve their programming ability is learning other (computer) languages. People who do this easily have a natural ability to learn other languages, computer or not. They might not know it, and they might even think some other problems they have socializing (let's not pretend this isn't common) are problems they have at learning other natural languages.

So, people who have a natural ability learning languages can more easily do one of the best ways of improving one's programming ability.

Daniel on March 30, 2009 1:50 PM

s/anectotal/anecdotal/. I'm sure there were many other spelling errors, but this only really irked me, as I stopped for a minute looking at that word, feeling it was wrong somehow. :-)

Daniel on March 30, 2009 1:52 PM

I'm from germany and I have to agree: From a hackers point of view this doesn't mean anything, it's simply not important. I know many people around the world so that using English seems to be the only sensible thing to do.
Additonally, having to wait for a translation of a book is a waste of time. Depending on its topic one might sooner or later realise that it just won't get translated.
And English suites the IT world pretty well: It can be expressed using 7 bit ASCII, which can't be said from most other languages written throughout the world. I'm not sure how to explaing the use of german umlauts to non native speakers, for example. ;-)

That being said and being a non native english speaker (writer, user, you name it) myself, I have to disagree with Eric Raymond in this regard: "While sloppy writing does not invariably mean sloppy thinking, we've generally found the correlation to be strong -- and we have no use for sloppy thinkers. If you can't yet write competently, learn to."

Personally I don't see a relation between sloppy thinking and sloppy writing, it's just about skill level. One might be a good programmer but unable to use the english language correctly, for a variety of reasons. Lack of good education, for example, or just a lack of understanding in regard to spoken languages.
Being arrogant in this regard, instead of being understanding and tolerant would IMO really qualify as being a "ugly $nationality programmer".

Christian on March 30, 2009 1:58 PM

> That means that you can write your company's programs and systems in your native language, harnessing a pool of local talent that doesn't write English, and then localize it into English when you're done.

The point here is that most of the good devs speak english already, so why would you want to?

chris on March 30, 2009 1:58 PM

English is the standard language for programmers.

Windows is the standard operating system for computers.

I generally prefer english computer books over german ones, ditto I didn't need to wait for the translation of, say, Harry Potter. :-) My macbook has the english version of the OS, and US keyboard layout. I even use US layout on german keyboards. On the other hand, my motivation to ever again come to the united states is about epsilon.

On the other hand side, I see that the communities around here are nonempty enough to get along in their native tongues; and especially those people whose native script isn't in latin letters have a hard time learning that. So I would not require english of every programmer around here. It may be positively correlated with performance, and it sure helps to be able to communicate with a lot of people here in europe -- as a common language.

Besides, I'm helping to spread the picture of the ugly american: When I don't understand the local tongue, I usually ask for english, not for german. :-)

Andreas Krey on March 30, 2009 2:17 PM

As a French, I have mixed feelings on that topic.
English is often used here to make old concepts shiny. I HATE it when a manager or some salesman uses an English word when there's a perfect French word with the same meaning. It's even worst in Japan, where more and more the media use the English word for "rice" instead of the Japanese one... Just a smoke wall to hide emptyness.

So as everyone here I of course think English is necessary in order to understand precisely the API and the resources. But when writing a doc, a code comment or anything made to be read and fully understood only by people whose first language is not English, I don't see any sane reason to write it in English.

Guulh on March 30, 2009 2:22 PM

to me this shows a degradation of english culture... by saturating the language all over, yet everyone else can speak to languages. nothing to be really proud of, infact it should be addressed. Whilst some may be blinded by given up there language to be enslaved in a world of mechanics... some are treasuring there language and still have a culture.

Sirwan on March 30, 2009 2:27 PM

This is hardly new. Any discipline that relies on distribution of knowledge will develop a "lingua franca". That term in fact was based on the fact that during the 17th & 18th Century all science papers were in French. You had to know French to participate in the scientific debate. Gradually, that shifted over to English. Today, English is needed to participate in the global scientific debate.

You don't _have_ to know English. There are large clusters of knowledge available in German and Chinese as well. But the English cluster is larger - as a rule, the German and Chinese clusters only attract native speakers.

Will this last forever? Hell no. There's nothing special about English that makes it the best language for discussing programming (or science).

Robert on March 30, 2009 2:35 PM

I don't think you can consider the comments on this site as any kind of indication. By definition, the commenters here are self-selected English speakers. Of the programmers who don't think that English is a pre-requisite, the majority will not be readers of this English-language blog and hence will not comment here!

David on March 30, 2009 2:45 PM

>Next, the english-bias. By selecting blogs and sites written in english, you are eliminating almost everyone who doesn't speak it. If you are USED to using these resources -- after all, they ARE more complete -- then you have applied a bias to the selection of your peers. You don't know many non-english speaking peers because you don't go to the same places.

This is also known as network effect - most programming sites are english biased.

> Then, the "english is better for programming" bias. Bullshit. Programming slang gets created by the second. Drop a C++ systems programmer in a Java or PHP/Web environment, and he'll think these people are speaking a different language altogether. Vocabulary is NOT an issue. At worst, people of different languages will just "import" the word, just like it happens with english. And it DOES go the other way, as any proponent of free (libre) software knows. :-)

What language is 95% of technical publications done in first?

> I have seen very good programmers who couldn't read even an airport sign in english. They are at a disadvantage because they do not have access to the same repository of knowledge and documentation that their more fortunate counterparts have, but it did not detract in any way their programming ability.

So what? The point is that english is the lingua franca for programming and you'd do well to know it.

chris on March 30, 2009 2:48 PM

@joe, English defeated German by one vote.

@Accatagon, English is loose in all accounts, except structure. Nouns may become verbs may become adverbs that becomes adjectives just by changing the structure. That is what both makes English so powerful and so confusing to people learning English as a second language.

@Andrea, I am a native English speaker. I took Latin as my second language in school. I found Latin to be much easier than English, and many times still wish that the world language was Latin.

Mark on March 30, 2009 3:10 PM

Of course it goes worse than that. It aint just that English is the official IT language or hacker "lingua franca." Its that it is West Coast or California English that is the "lingua franca." Just let me fire up some Texanisms or let someone from up north start speaking about yous or what have you and watch ppl get confused fast.

James E. Ervin on March 30, 2009 3:13 PM

Dear god the amount of dribble on this blog is insane. I donno who showed me this site but damn, it's horrible.

James on March 30, 2009 3:24 PM

English IS a pivot of the programming world.

But truth is, depending where you live, you might never need it. In countries like France, Germany, Russia, Japan or China where almost everything is translated, you DON'T NEED to learn english at all, even for programming.

In fact in those countries you can usually find some very good documentation. But you must search it for real.

Two years ago I searched online for some good ilasm tutorial which was not yet another introduction; found it in Japanese.

Igor Sysoev developed the powerful Nginx, but he only speaks Russian.

Check out the Chaos Computer Club website, most content is in German.

At some point in the chain there is people understanding English at least, but it is not necessary functional enough to express themselves.

And it is not necessarily a handicap.

--
Homosapiens Geek, commonly known as Homogeekus Simplex

homogeekus on March 30, 2009 3:26 PM

I be codin' in Ebonics, my brutha. Don't hate on the OG. Score me some broccoli on the down low...

Steve on March 30, 2009 3:27 PM

I've noticed this too. In one job I had two colleagues who spoke Mandarin as their first language and their English was decent but not completely fluent and when it came to technical discussino just between the two of them they'd use English still.

It was actually kinda funny to listen to.

cletus on March 30, 2009 3:30 PM

English may be a necessary part of a hacker's life, but my two Mandarin-speaking teammates most certainly don't use it in their own discussions except in that tacked-on way that most languages directly adopt a word for practical use.

mgb on March 30, 2009 3:34 PM

Jeff, you can read my rebuttal (specific to Chinese programmer communities) here: http://odwks.com/2009/03/mandarin-chinese-programmer-communites/

Jon Hancock on March 30, 2009 3:47 PM

I got a pretty good laugh from some of my friends when I expressed concern about working in Austria because I would have trouble coding in "German C++."

Greg on March 30, 2009 4:09 PM

I agree that English is somewhat essential, but only because that's what 90% of language documentation is written in.

All but on the Wordpress codex documentation. There's one french person that's taken it upon themselves to do a lot of the documentation. I tend to find that documentation more helpful than the English versions sometimes, and I only have a high school french vocabulary.

Shane on March 30, 2009 4:10 PM

Agreed if there was no such thing as translation tools. There are... so your argument is hollow.

What I mean is, what if Google (or other company) can create a translation so accurate that nobody needs to be able to read anything but their native language? I think we aren't far off that now!

I've found many Dynamics AX solutions on Chineese web sites because of Google translations. I don't speak mandarin and I don't need to, but I still got my problem solved.

The problem of language is that its structure dictates thinking patterns. Therefore a homogenous language produces a reduction in options and abilities to solve problems. I had a friend who could speak several languages who also had a unique problem solving ability. He could think through the same problem in different languages in order to come up with multiple solutions that nobody else had thought of. He wasn't thinking outside the box - he was thinking in a logically structured way within the confines of each language.

Maybe I think this way because I have traveled outside my country, I have studdied with several nationalities, I work with a variety of nationalities and my country is surrounded by, and contains, an amazind diversity of languages, dialects and cultures. I think that our society all too frequently wants others to conform to what we believe, what we think and what we know to be right and best.

No - what we need in this world is more diversity but better translation tools, and as I said earlier - we aren't too far from that right now.

Philip on March 30, 2009 4:29 PM

I don't think it's a sign of being 'an Ugly American'. As a UK-born Australian programmer, there are a lot of people in the world who have English as their native tongue anyway. And, next to Mandarin Chinese, it's the most commonly spoken language in the world.

But deciding on one language for a professional field of endeavor (whatever that language may be) doesn't seem to me to be wrong, if it is essential that practitioners can communicate. The obvious other example would be aviation, where the official language is also English.

None of which is to deny that we English speakers shouldn't make much more effort to learn other languages. But have pity on us, we can't learn EVERY other language, whereas English is pretty much the common SECOND language of almost every non-English-speaking country.

David on March 30, 2009 5:21 PM

@ Donny V

> Don't know if you have seen this Jeff.
> But someone over in Asia has decided to
> copy StackOverflow.com.... literarily.

> http://www.cnprog.com/

Actually that guy lives in Denmark.

And the content is all in Chinese, which is a market that StackOverflow does not serve.


* * *


I've worked with a lot of native Chinese programmers and the degree in which they speak in English to each other varies. I saw no correlation between those who spoke better English to those who were better programmers.

Their conversation would usually begin in Mandarin, then move into English for awhile, and then move back to Mandarin. Sometimes they would use a "Chinglish" variant and mix in their local dialect as well.

It was really amazing how fluently they could go back and forth between the various languages.

Jake on March 30, 2009 5:43 PM

If you go to France it's generally expected that if you want to communicate with the local population you'll need to know some french.
Going to France and expecting everyone to speak your native language for you is your 'ugly american' concept.

If you want to communicate with hackers then it's expected that you'll know some English. Expecting to be able to communicate with hackers in your native language is ugly.


Jesse McNelis on March 30, 2009 6:18 PM

>>> Esperanto wouldn't do the job for the reasons articulately pointed out in

>>> http://www.xibalba.demon.co.uk/jbr/ranto/

This diatribe may be articulate, but it is also full of straw men and red herrings; see http://claudepiron.free.fr/articlesenanglais/why.htm for reasons why this is so. Esperanto not only *would* do a brilliant job, but actually *does* a brilliant job, within its sphere of influence of around 2,000,000 speakers worldwide. For more information, see http://www.esperanto.net/info/index_en.html.

Michjo on March 30, 2009 6:38 PM

The fact is SOME lingua franca is necessary and always has been for technical discussions. In the 18th century, it was Latin. In the 19th century, it was English, French, or German. In the 20th century, it all switched over to English, post-WWII, for the most part.

The convenient thing is that many of these countries are full of people who learn English, and other languages, as part of their general secondary education. If the language was switched from English at this point, most Americans would be sunk — they know a smattering of Spanish, not very useful.

In the end, though, its the bilingual programmers who benefit most from this arrangement. Note how the Pentagon is totally freaked out about Chinese hackers—who all can read both English and Chinese. How many American hackers can read Chinese?

Shmork on March 30, 2009 6:55 PM

I thought computers speak in ones and zeros. :)

freddy on March 30, 2009 7:03 PM

"Back around 1991 I learned that many hackers who have English as a second language use it in technical discussions even when they share a birth tongue; it was reported to me at the time that English has a richer technical vocabulary than any other language and is therefore simply a better tool for the job. For similar reasons, translations of technical books written in English are often unsatisfactory (when they get done at all)."

I've NEVAR observed this. Most english tech vocabulary gets incorporated into native language simply because it's already established and most geeks understand it to a certain degree. However, expressing thoughts in English takes considerably more time and yields an inferior result for most non native speakers. They express themselves in English for one simple reason: To be understood by an international audience. So no "right tool for the right job" bullshit. Forcing non native devs to document in english will generally result in a loss of precision and productivity for a gain in potential maintainabilty. Sometimes this is justified.

Thomasz on March 30, 2009 8:13 PM

Hello from Hellas (Europe). Here's my personal experience on the matter:

When I started software development as a profession, I used to comment my code in Greek. It was a bit difficult to have to continuously Alt-Tabm since some terms had quite bad sounding or even outright funny (albeit accurate) translations.

I followed this practice when I moved to .net v1.0, only to find out that NDoc wouldn't render my otherwise perfectly normal Unicode Greek characters. That was the day I decided to move to using English and only English as my documentation language.

That was before I even had to work with other people and for projects that would have been unlikely that any other eyes apart from my own would ever set sight to that code. Since then, I'd moved to a larger company where I had 2 co-programmers who agreed (albeit reluctantly) to implement this practice for our new projects.

Now that I've started my own business implementing software the documentation of which will certainly be sought and used by other people while also having to co-operate with others, I still retain the old habit. I don't think I could or would change anymore, even though I have to correct syntactical mistakes sometimes.

I speak 4 languages including my own*. There are languages that have close bonds with specific parts of our culture (eg. Greek is widely used for some scientific fields including medical science), US English is the undisputed leader in computers, which I believe is very beneficial.


* One good thing about speaking a language most of the world doesn't really give a damn about (Ancient Greek does not count, it's almost completely different) is that your are forced to learn other languages.

Dimitris K. on March 30, 2009 8:20 PM

Well I did it again. Change that "your" to "you" in that last sentence. Jeff, getting used to Natural Keyboard 4000 is a bit of a challenge! :)

Dimitris K. on March 30, 2009 8:25 PM

Here in Canada, we have 2 official languages - French and English. As such, you can watch TV in both languages.

Back in the 80ies, there was a computer programming program that taught BASIC in french. I do not mean that the presenter spoke in french (which is obvious) but that all the keywords were ALSO in french.

As such, it was not really BASIC any more. In fact, it was quite incomprehensible. I found myself wondering "Why would you bother??". If you learn this particular version of basic, you were commiting yourself to a skill set that simply would not let you work ANYWHERE except the small geographical region that developed it and then only in businesses that used it.

If your goal was to find a niche market, here it was. I am quite sure, however, that the actual market for those skills was so small that the presenter of the show was the only one to ever find meaningful employment in it.

If you think C# and VB.Net examples are hard to interchange - just imagine that every example you found for your language did not work because it wasn't actually in your language.

If you wonder what language you should code in - just ask yourself when the last time you saw a copy of french basic or why the GNU compiler doesn't have a French/Spanish/Russian/etc version of C. (Actually, I have a theory that C is as popular as it is because it has so few english key words compared to other languages like Pascal)

(side note: If you are not aware, the french culture in Canada suffers from a considerable complex. A cultural chip on its shoulder so to speak that dates back several hundred years to when England and France were still world powers fighting over the new world.)

Xepol on March 30, 2009 8:31 PM

>> That means that you can write your company's programs and systems in your native
>> language, harnessing a pool of local talent that doesn't write English, and then localize it
>> into English when you're done.
>
> The point here is that most of the good devs speak english already, so why would you want to?

I'm not arguing against the fact that currently a lot of programmers can read and write English well enough to program. I'm not quite convinced yet that "*most* of the good devs" prefer English over their native languages. And I'm fairly certain than in that in 15-30 years we'll see SW production houses who construct, comment, document and maintain the majority of their code in a non-English language (and probably using a non-Roman character set).

It's my view that it is a bit ugly to think that just because talented software developers outside the US/UK/Canada/other-majority-English-speaking-country *have* to use English now that they should *want* to use English in the future.

Jeff Mather on March 30, 2009 9:04 PM

Funny you should say that.

My wife is Chinese and when we have dinner with her family, it's obviously in Chinese. The thing is, it changes from topic to topic. But sooner or later programming comes up as both her brother, brother-in-law, and myself are programmers. When this happens it's 90% English!

My wife also prefers English on her OS install because although she can understand all the Chinese characters it doesn't make much sense. She, like alot of Chinese, studied computers from either English docs, or overseas in an English speaking country.

Clinton on March 30, 2009 9:47 PM

Yep. We should all use English. In Java.

Javeng on March 30, 2009 10:08 PM

This website helped me a lot from the very begining...and this post about stack overflows serves my long pending issue..thanks a lot.

Sachin kumar on March 30, 2009 10:40 PM

Obviously, if you write this post on an English language blog with an English readership, you will be preaching to the choir. Although most Western Europeans attain an impressive level of fluency through their work as a programmer, this is hardly a universal phenomenon. You undoubtedly have heard about the site CNProg, a carbon copy of Stackoverflow (both in design and usage) but in Chinese. I think this is a good example that adopting English as the lingua franca for all programmers is not very realistic.

As I am living in Japan, I can tell from experience that many Japanese do not have a sufficient level of English to read/converse about programming in English despite many many years of experience.

Obviously on March 30, 2009 10:49 PM

Its an open source project http://code.google.com/p/cnprog/

cnprog on March 30, 2009 11:01 PM

That is right!We must learn English before learnning program.Terrible!

dexter on March 30, 2009 11:05 PM

@MKR "I could learn another language, but where would I use it?" Have you ever been to Miami? ;P

Here (South Miami), Spanish is the real lingua franca of the street. .

PDG on March 30, 2009 11:06 PM

I also thought English was the common language for hackers.
Turns out that on our site wechall.net 10/23 listed "Hacker Challenge" sites are not in english at all.

Kender on March 30, 2009 11:19 PM

Romanian programmer here.

This extends not only to the programming language and programming documentation, but also to the operating system interface.
I mean I never felt more lost than when looking at a romanian localized version of Windows XP.

Herr_Alien on March 30, 2009 11:31 PM

Regarding the "English defeated 'insert language here' by one vote" urban legend:
<a href="http://www.snopes.com/language/apocryph/german.asp">http://www.snopes.com/language/apocryph/german.asp</a>

Note that similar urban legends exist for other languages too.


* Wow, the parser kills lt & gt characters...

Dimitris K. on March 30, 2009 11:51 PM

Jeff, didn't you know that thanks to India, Inc. and the H-1B lobby, Hinglish is now the lingua franca of programming?

Tunnel Rat on March 30, 2009 11:51 PM

I completely agree with Eric Raymond and am in the same situation as Slawomir, except with Romanian instead of Polish. Also Herr_Alien a few comments up.

Alex on March 30, 2009 11:56 PM

Something people are forgetting in all this discussion is /why/ English is the 'lingua franca' that it is right now - and that's imperialism. No, not the derogatory meaning, which seems to carry overtones of ugly racism and narrow-minded provincialism, but the original meaning of having a mindset pertaining to empire. That is to say, a mindset that acknowledges the existence of a larger common framework while maintaining local culture and civilisation.

Why was Latin (and Greek) the lingua franca for such a long time? Because the Roman Empire's influence spread far beyond its borders - and at its height, its borders were pretty large. France had a pretty huge geographical spread as well, stretching from America to Asia. As for the British Empire and all its territories... well, let's not say any more. American (or rather, Hollywood) culture may complete the English cultural hegemony of the entire world.

Accatagon comes exceedingly close to describing the supremacy of English as the ruling language, in the describing of English as an amorphous blob of words. But did you know that this is a deliberate action? The English were pirates, after all, and equal opportunity pirates at that - they stole everything from everywhere, and are the mediaeval version of the Borg. Your language and cultural distinctiveness will be added to the Empire, arr. Resistance is fultile, yaargh. There's a reason why you have maharajahs and gurus running amok across verandahs in their haciendas while discussing microbiology and masticating hor d'oeuvres. Name one language that has not had at least one word imported into English, and I can tell you that people group had never been discovered by the British Empire.

And that is why two centuries from now, ceteris paribus, some language called English will still remain dominant. Granted, we peons might not comprehend yonder language to any significant degree, but we will probably still be able to speak the lingo, Homo sapiens that we are.

Vive le English! Ada 2005 forever!

Gregory on March 30, 2009 11:58 PM

If I'd hire a programmer here I'd demand English as a second language (fluent).

Some of the programmers here still use horrible method names, simply because it's incorrect spelling or incorrect use of terms in English.

But I guess that's inevitable if english is not their (and my) first languuage.

Aftur all my englis vill not be parfect eether.

Nick on March 30, 2009 11:58 PM

Consider the following: first in "Swed#", second in c# ... I have a hard time not laughing :D


använd System;
namnrymd Konsollapplikation1
{
klass Program
{
statisk tom Huvud(sträng[] args)
{
Konsoll.Ut("Hejsan Världen!");
}
}
}

using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Out("Hello World!");
}
}
}

superwiren on March 30, 2009 11:59 PM

I spent a year working in a mechanical engineering consultancy in France, years ago. The guys there were used to working with English Language versions of AutoCad and complained bitterly when they were upgraded to the latest version as it was in French ('Merde, ou est "Snap to Line"?')

I also had to do some VBA coding there, and the French Version of Excel 5 defaulted to using French keywords, i.e. "Si..Alors" instead of "if..then"

Alastair on March 31, 2009 12:22 AM

The Polish guy was dead on -- it's much better to see the documentation (or any literature on software for that matter, languages, algorithms, manuals, etc etc) in English which is either the author's native language or a language he knows very well.

There's so much terminology in English and growing that outright sounds ridiculous in other languages due to inadequate or not generally accepted translations. And then a "spanglish" communication like that with plenty of borrowed English words here and there is ridiculous itself... Why not just use English for the whole thing, not just technical terms and use the language of the problem/industry? :)

Also, there's so much literature in English in existence (which also keeps growing) that it's just impossible to keep up translating everything. Likewise the amount of translated books (along with the quality of their translation) and books originally written in other languages is rather disappointing. And the same can be said about the programming information available on non-English websites. All of this pushes a non-native speaker of English (or should I say a non-speaker of English?:) to improve their English (or learn) and abandon the hopes of getting quality info in the right quantity in the native language.

I wish it was easy (just as easy as in the US) to go to a bookstore somewhere in Russia and see technical and any kinds of books in English, untranslated (maybe even at about the original price, undiscounted, although $50-$100+ for a book is pretty darn expensive in Russia) and be able to buy them. Some classic books take longer to get translated than it takes for a kid to grow up, graduate from the school, complete the master degree program and learn some good English.

Btw, just using lots of software in English, reading lots of docs in English and communicating in English really does improve the language skills. In that same Russia English instruction has been pathetic for decades and you may still reasonably expect pretty much anybody who's gone through 7 years of English at school+uni there to not know much if any English (what a shame!). Except the few who early on found something interesting in the language or just used it a lot, those like us, programmers.

Anonymous on March 31, 2009 12:29 AM

As a programmer from China, I'm humble and excited to see so many comments concerning Chinese. An also amazed to see a Chinese copy of Stack Overflow, which I think should be encouraged.(Jeff, do you think so?)

IMO, there is a strong correlation between English mastery and programming competence among Chinese programmers.

And I think I can reasonably infer that the top 5% of Chinese programmers do prefer English docs over translated ones, thought they still stick to Chinese when discussing.

See my blog for the details @ <a href="http://an00na.blogspot.com/2009/03/all-programmers-are-english.html">http://an00na.blogspot.com/2009/03/all-programmers-are-english.html</a>

Ling on March 31, 2009 12:30 AM

This 'programming english' works both ways though. My first job out of college was as the first technical hire for a small startup who had just commissioned the working prototype of their big idea from Digital (DEC) AB in Sweden. They had a working system that needed changes.

So my first job was learning VB2 (it was a while ago), VAX/VMS and enough Swedish to understand the source code. However, a little Swedish went a long way - you don't have to discuss poetry with the program, only understand the intent. First, Next, Previous,Cancel, Last, Print, Order, Product... a few words are all you really need, if the code is well structured. I used to do the same with German on my Atari ST, where so much of the freeware was written by Germans.

Howard Jones on March 31, 2009 12:37 AM

I don't care which language a coder speaks as long his/her product is Unicode clean. There are still too many, especially American, coders who seem to think that ascii is the only encoding their crapplication needs to be able to handle.

Bernhard on March 31, 2009 1:14 AM

I would agree that its not really practical to work in IT - programming, support, anything IT related - without an advanced ability to *read and understand* english. I know a few excellent programmers who can barely understand me if I speak to them in english (I'm a native speaker) but haven't the slightest problems with emails. They hate the translated technet and switch to english for support.

We use a few tools which have small macro languages built in which are not in english. The (non-english-speaking) guys here are always cursing the products because the syntax is horrible to work with. (si x entonces y sino Z)

However it should also be obligatory of all students in US colleges to have to learn how to handle non-ascii text and non-english languages.

I constantly have to fight with apps which mangle á, é, í, ó and ú when they are exported/saved/transmitted. It not as if they're even unusual characters - they're present in almost all western european languages.

Ian Murphy on March 31, 2009 1:27 AM

in communist soviet russia - English programs YOU

imonsei on March 31, 2009 1:42 AM

So VB.NET to C# was tough, huh? Even though they are basically the same language? VB.NET to C# is like moving from Hindi to Punjabi (dialects), or perhaps from Italian to Spanish (very similar languages). Can you imagine learning Mandarin? Can you imagine being so fluent in Mandarin that you could have a meaningful discussion comparing the implementation of enumerations in C# and Java? That's a big ask.

I suggest you spend a year learning Mandarin (or perhaps Lisp!) and then do a follow-up post!

carlos martinez on March 31, 2009 1:55 AM

There is a rational seed in this article. But I can't agree with all. I'm Russian, and yes, my English is far from fluent, and yes sometimes documentation in English is much cleaner and readable than translated...
But what about the medicine - Latin was and still is a must know language for all doctors around the world, a lot of terms and speech tokens are from Latin, but medical literature is written in national languages nowadays.
The more national community of programmers is, the more native language resources are helpful. I personally know a lot of good Russian programming knowledge sources over the Internet, nicely translated books - nevertheless I admit that modern developer is to know English (may be not excellent, but having a good skill level is a must)...

Alex Gribkov on March 31, 2009 2:05 AM

Most non-native English speakers here made the point at that speaking English is necessary for hackers. But are there anyones not speaking English willing to give their opinion?
Oh yes, they probably do not read this blog, so they are not true hackers ;-)

Jeko on March 31, 2009 2:08 AM

as someone who doesn't speak English natively, I agree that, as a programmer who wants to improve his/her skill, it's important for one to master, or at least able to read, English. because, like everyone above had said, most of the resource material is written in English.

but if you're a starter, who just start to learn your first programming language, I still think that the best material for you should be written in your native language, with one caveat, it shouldn't try to translate technical terms. it should just explain the terms, without trying to translate it. because in current condition, by translating technical terms, actually you're alienating your self from the crowd. in fact, the book that make me fall in love with programming is written in my native language, but the way it present the material just keep me more and more interested to programming.

but in my opinion, if you are REALLY born to be a programmer, language shouldn't really be a problem for you. because most, if not all, programmers will learn more than 1 programming language during his/her career/life as a programmer, unless you're living in an utopian world where one programming language can solve all computing problems, or you just working on one very specific problem. so basically, language, either human or programming ones, are just ways of expressing things. some can be very flexible and powerful, and others can be less expressive and less powerful.

just my 2 rupiah :D

siroj on March 31, 2009 2:13 AM

Most programming languages might use English keywords, and many of the best technical languages might be written in English, but could a new programming language not change that? Surely one of the advantages of having multiple languages is related to having cultures with different ways of thinking. How is programming any different?

If everyone has to learn English, there will probably be a bias to an English (or American / Western) way of thinking and solving problems. Couldn’t that have a negative effect?

There might even be other languages that are better suited to describing programming concepts (?). English just happens to dominate right now.

winston on March 31, 2009 2:20 AM

@winston
Agreed. There's no point in trying to build C++ in French, you'd need to build a language in that language from the ground up.
I'd imagine the reason this hasn't been done is because there's no serious desire to do it.
Besides, programming isn't in English, it just uses English as its base. Static has a completely different meaning in programming than any English dialect. const is considered a real word. Hell, look at the meaning of the word String.

Tom on March 31, 2009 2:54 AM

I agree.

Hebrew is written from right to left, so it would be a real headache to document code in hebrew.

When I was a student I once wrote a programming language in hebrew, but it remained as a joke between friends and did not enjoy popularity.

When we talk about programming I prefer consuming and producing English, also for documentation, specifications, blogs, comments, etc. Don't feel bad about that.

shmuel on March 31, 2009 2:54 AM

I can confirm English is important as dev language in our russian-speaking company.
When discussing programming, we use english terms, not proper russian translations, cause it simpler, shorter and easier to understand - not all people even know proper terms in russian.

And yes, same as German commenter above, when reading russian books on development, I need to translate some terms in English in my head to better understand what's going on.
Cause alternatives to "postback", "viewstate" etc are truly horrible and lengthy.

Vladekk on March 31, 2009 3:04 AM

English is a bitch to translate into Portuguese, due to its specificity.

Porcolino on March 31, 2009 3:13 AM

I guess it would be even more difficult for non-native English speakers who grew up with a language that doesn't use the Latin alphabet.

Dan on March 31, 2009 3:25 AM

An article in English being read by people who know English? It's not surprising that most people here agree with you.

As Marie Antoniette said, "Let them have cake".

Alok on March 31, 2009 3:34 AM

Ha! If we wouldn't let have the English take over New York a few hundred years ago, you'd all be speaking my native language (Dutch).

I have worked for customers who demanded that all our source code (class names, method names, comments etc.) was all written in Dutch.

Jesper on March 31, 2009 3:35 AM

This is what you would have been writing:

gebruik Systeem;
naamruimte TekstvensterToepassing1
{
klasse Programma
{
statisch leeg Hoofd(tekenreeks[] argumenten)
{
Tekstvenster.Uit("Hallo Wereld!");
}
}
}

Jesper on March 31, 2009 3:39 AM

This isn't the ugly American. There are a few other countries out there where English is the main language.

Dwayne Phillips on March 31, 2009 3:42 AM

There is a reason why Chinese Python exists:

http://www.chinesepython.org/cgi_bin/cgb.cgi/english/english.html

Remember the times when localization of applications and having i18n built into your app was considered laughable?

Alok on March 31, 2009 3:56 AM

English as a set of words for instructions and function names is as good as any other language.
It’s the standard, so be it.

However concepts MUST be translated in ANY native language existing on Earth and beyond.

Because then you learn them several times and you get a different understanding each time.
Yes, it’s harder. Yes, it takes longer.
But the reward at the end is becoming a richer human with deeper thoughts.

It’s like being bilingual.
If you learn one concept in english and the same concept again in portuguese you do understand it better because you got two point of views about it.

The books and documentations we’re talking about are usually very poor to explain concepts and abstractions.

It’s only my opinion of course. There is no truth here.

Thibault: “Cut!” on March 31, 2009 4:00 AM

Oh, tired, tired cliches!

In the first place, Americans do not speak "English". We speak "American". Notice the differences between UK/Australian English and American (color/colour, restroom/loo gas/petrol).

In the second place, I haven't met as many native-born Americans that were anything past toddler-level literate in English, American, or *anything*, as I have met foreign-born citizens who could speak and write flawlessly. Americans may yet standardize on "1337TXT" text-message language before long, judging by the battle against illiteracy that we lose (NOT "loose"!) every day.

In the third place, (don't tell the bigots!) English is actually derived from West Germanic, and borrows a sizable chunk of its vocabulary from Latin, Greek, Sanskrit, and French. So English is actually kind of an amalgam of Western world languages, and it is thus very appropriate that world communication technology would standardize at least partly upon it. But don't forget about Asia!

Penguin Pete on March 31, 2009 4:02 AM

WOW! look at all the comments.....
So american programmers are ugly...

UNKNOWN on March 31, 2009 4:57 AM

Arrrggh, you arrogant Americans don't even speak English!

fred on March 31, 2009 5:10 AM

this just in...
According to jeff...
american programmers are ugly..
:)

UNKNOWN on March 31, 2009 5:13 AM

It also annoys me that .NET exceptions so eagerly want to use you local language.

I can't copy paste crap like that in Google, I won't find anything useful.

Please everything in English Microsoft.

In addition my sister has a Dutch copy of Adobe Photoshop. It's absolutely horrible. All tutorials on the net are useless as the Dutch terminology doesn't make any sense at all...

Nick on March 31, 2009 5:14 AM

A logical extension of this argument is that all programming should be in PHP and JavaScript because there are more examples, programmers and learning materials ;0)

Perhaps also programmers who are not native English speakers are better programmers because they understand languages better ;'0

Word of mouth Mike on March 31, 2009 5:50 AM

English is understood by English speaking countries and western minorities (as mine: Italian).

I don't think Chinese programmers care about English. Maybe Russian do that much neither.

English thinking "hackers" could even be the reason behind current programming languages design: full of inconsistencies, just as English language is.

Lele on March 31, 2009 5:52 AM

Not fair. Other natural languages would have equivalent influence.

Python designing by a Dutch programmer is not a coincidence.

Lele on March 31, 2009 6:20 AM

I live in Venezuela, my native language is spanish.

of all my coworkers, in this company, and in the affiliates coding caves which we share services, I might the only who actually speaks english. The rest just... Well basically they munch it and destroy it with every word uttered.

They also have this muscle memory exercise, where they try to find first the answer to a problem in Spanish. Most likely the odds of sucess are about 1%. If they don't they have to go and try in english. And this is where it gets ugly. Most people don't get the technical lingo used in the internet these days.

English, is a must in the Developers Land, No matter your language, translations to spanish are horribly textual, and lack meaning (usually translated by novel readers instead of engineers)

Luis robles on March 31, 2009 6:20 AM

Coding and commenting in English comes naturally after you have read all the books and tutorials in said language.

But thinking in English? No way! Here's a native born Finn which loves the expressiveness of Finnish language. I honestly do believe that it is one of the most adaptable languages for solving abstract problems. The words are just starting points which can be decorated with suffixes.

Here's an example: (Kirja being a base word)
kirja "a book",
kirjain "a letter" (of the alphabet),
kirje "a piece of correspondence, a letter",
kirjasto "a library",
kirjailija "an author",
kirjallisuus "literature",
kirjoittaa "to write",
kirjoittaja "a writer",
kirjuri "a scribe, a clerk",
kirjallinen "something in written form",
kirjata "to write down, register, record",
kirjasin "a font",
.. and the list goes on..

Finnish has a much smaller core vocabulary than english and that's because we can 'make words on the fly' =).

Oranki on March 31, 2009 6:22 AM

I've seen only 3 comments so far mention Unicode so I think it's a point worth saying - and repeating.

*The* reason English is the lingua-franca of programming is that most programming tools/languages in the past (and even present) simply didn't (don't) support Unicode. Heck, Unicode didn't even exist initially. So all those languages with their special characters simply couldn't be used, all you had was ASCII - and therefore English.

But there's nothing magical about English that makes it a "better programming language" in general. The lack of proper documentation is not a reason, it's an excuse - and a lousy one at that.

Yes, using a single language makes it easier to search for solutions, assuming they are even available to be searched. However the negative side of using English is that for non-English speakers it provides an additional overhead for sitting down and writing their ideas. It can also promote bad coding practices since for example you are much less likely to use meaningful variable names in a language you don't know well.

Unicode is slowly making inroads into programming languages and tools. What is stopping wide-spread adoption of non-English language programming in non-English countries is:
1. The prevalence of native-English programmers/businesses and the need to work with them, especially in this age of "the global village".
2. Still patchy support of Unicode on older Linux systems still in wide use, e.g. RHEL4.
3. The large head-start English has as a programming language. People have already invented and popularized many programming terms in English. All of these will have to be re-invented for each language and over-come the inertia of people used to the equivalent English term.

Personally, I think English has enough of a head-start over other languages to make it very hard to unseat it as the preferred programming language even for non-native English speakers. But don't be fooled into thinking this makes English somehow better or special. It was just lucky to be first...

Solidstate on March 31, 2009 6:31 AM

Off the topic of English, but on the topic of "The Ugly American"

The term is usually misused.

The PHYSICALLY ugly protagonist of the 1958 book "The Ugly American"

http://www.amazon.com/s/qid=1238506216/ref=sr_oe_1_see_all?ie=UTF8&relSet=0393318672

was a kind and helpful person, maybe even a prototype for what JFK would propose for the Peace Corp. Some other characters were wealthy, snobby, BEHAVIORALLY ugly Americans.

David on March 31, 2009 6:41 AM

With all the different cultures I have worked with, Japanese are a little different. They insist in Japanese and documentation and generally find it frustrating to read English documentation.

And this is one of the discussions where everyone can form an opinion and looks like everyone has :)

Naunidh on March 31, 2009 6:50 AM

I'm from Argentina, I learned english reading books. I lived a couple of years in NC, USA. I'm really good at english and I can tell you I had the oportunity of work with Indians, Frenchs and Italians and english was our universal lang, man..just like GMT. IT IS ENGLISH because today english is universal. Could be chinese, but no, it is english. In my company 95% of guys who work on IT speaks fluent english and it is not a requirement to be hired.

Rodrigo Asensio on March 31, 2009 6:51 AM

What i really hate is when you buy a manual in native language (e.g. Dutch) and try to find your way around an English VS2008. You better understand the concept because of the native language but cannot find the buttons to apply the concept because they are English and the translations are crappy.

Peter H on March 31, 2009 7:04 AM

I'd also agree that English is the majority language of software development, but that doesn't mean all software knowledge is uniformly in English.

Perhaps an appropriate question then for native english speakers is, what second language would provide the most added value for you as a developer?

Mr. Simplex on March 31, 2009 7:19 AM

I tried to go with c# when it was a brand new language, but at the time typing c# into search engine would give you nothing, and it would often break the search (I think it would delete everything after the #).

To find out that this has changed is great. I suppose it was just a case of being a little bit on the "bleeding edge." We definitely bled a little for going with it too soon.

Practicality on March 31, 2009 7:34 AM

I am a Portuguese/Brazilian and I mostly agree with you on this issue.
For me, it all depends on whether you want to belong to a community or not. If you want to belong to the international community of developers then it is straightforward and simple: learn English well. This is also the rule if you want to belong to the international community of science and/or businesses. English is the new Latin, the common language of the world, what Esperanto wanted to be.
If you want to communicate in a different language then you should join a different community. There are many programming communities in Spanish and Portuguese. You can join them. But the fact is that there is much more gold and knowledge exchange in the English communities.

Rui on March 31, 2009 8:01 AM

Apparently you're not going to be much use at operating a GhostNet unless you know Mandarin and Tibetan.

Michael Zajac on March 31, 2009 8:44 AM

Was daran wirklich bescheiden ist, ist das Programmierer normal etwas faul sind.

Gerade bei englisch gibt es recht viele Programme, welche Programmdokumentationen und Methodennamendokumentationen automatisch erstellen (z.B. GhostDoc).

Wer dann einen Kommentar liest, glaubt meist einfach: Das ist in dem normalen schlechten Englisch geschreiben wie veile andere Dokumentation. In Wahrheit sind viele Kommentare nur einfach lausig durchdacht oder automatisch erzeugt.

Schreibt man hingegen die Kommentare in seiner Muttersprache, so merkt man schnell das man erst einmal nachdenken muss, was man da macht. Ein "invokeXYZ" wird eben nicht zu
///<summary>
///Invoke XYZ"
///</summary>
sondern man schreibt tatsächlich mal auf, was das ganze machen soll und erhöht mit muttersprachlichen Kommentaren die Kommentarqualität beträchtlich.

offler on March 31, 2009 9:01 AM

Here in Arizona, we are required to translate all of our code comments into Spanish so that the code is bilingual. It's all part of our standards process. And braille as well.

It quadruples the development time and our company is bankrupt, but we are culturally sensitive.

Matt on March 31, 2009 9:25 AM

Try programming in Klingon. No wimpy messages there. Don't even ask how uncaught exceptions are handled... (shudder).

Charles on March 31, 2009 9:58 AM

In response to the Unicode issue, some languages are better about Unicode than others. Java is 15 years old now and has always used UTF-16 for its char primitives, which propagates to String and other character handling classes.

The problem is partly with programmers assuming that all text is ASCII text.

It's not always the programmers. Despite using UTF-16 internally, Java has some funny defaults for reading/writing characters from/to files. For example, FileReader and FileWriter are convenience classes to read/write characters from/to a file using the system's default character set.

What's the default character set? According to java.nio.charset.Charset.defaultEncoding(), it's windows-1252 on Windows XP, an 8-bit character set based on iso8859-1. You'd think FileReader and FileWriter would use a sane default, like UTF-8 or UTF-16.

If you want to read files in a different encoding, you have to construct a InputStreamReader from a FileInputStream instead.

.NET handles this more sanely. StreamReader and StreamWriter default to UTF-8 rather than to any system default. These objects can be constructed manually or returned via File.OpenText, File.CreateText, or File.AppendText.

R. Bemrose on March 31, 2009 10:22 AM

If you dislike feeling like an Ugly American, just spell "colour" with that extra "u", and suddenly you are speaking a foreign tongue :)

But seriously, you are dead right. Being a native German, people are often amazed by my English skills. They exist because of programming. Programming and Terry Pratchett are those two things that aren't translatable. I even prefer to use an English desktop, because bad translations annoy me so much.

Now contrast this to MS Excel (or OpenOffice, for that matter). It has localized function names, so it's not "IF(...)" but "WENN(...)", and so on. May seem helpful for a business user, but feels extremely weird to me as a programmer, and a source for mistakes as well.

Moe on March 31, 2009 11:28 AM

If you are an expert in only a single language, it might seriously limit your creative potential. Should we neglect creativity, in order to become mechanically more efficient? We sure are becoming dumb. It is probably time to do the reverse, and do programming and write books on programming in languages other than English.

Tathagata Chakraborty on March 31, 2009 12:13 PM

@jake ...

>Americans are not nor will they ever be "native English speakers".

Actually, we have a phrase for this in (real) English: horseshit. "But we invented English!" Yeah, yeah, sure, whatever. So did we. Like, starting about 400 years ago. Ain't no one owns the language, amigo.

mike on March 31, 2009 12:14 PM

You lead a very sheltered life, Jeff. The very premise of your argument and the use of the term "hacker" smacks of a different era. Not everyone writes Visual Basic for .Net and your assertion that great "hackers" use English is delusional at best.

I sometimes think you post garbage like this just to get a reaction.

David on March 31, 2009 12:28 PM

Even when I am coding something I don't ever plan to share with others I still write comments and variables in English. It just makes more sense. All the coders I know do the same, as such it's also easy to share code with others if the need ever arises.

Nita on March 31, 2009 12:29 PM

I haven't read all the comments so maybe someone has mentioned this before...

If I recall correctly English is the lingua franca of air traffic control.

The reason for that would be very similar to the thinking behind this idea.... that in an field populated by people speaking many different languages, effective and reliable communication can only be achieved if everyone agrees to stick to just one.

It's not "Ugly American" or even "British Imperialist" (let's not forget it's not Americanish we're talking about here!), it's just common sense.

Jolyon Smith on March 31, 2009 12:43 PM

I guess it makes sense for developers to have a means by which to communicate collaboratively on an international level. The mathematicians are lucky to be able to communicate via math. It's kindof de-facto so I'm not going to fight it, but we could have used a better language than english. English has rules, exceptions to those rules, and other things that are legal which are against both the rules and the exceptions. It's like PERL.

tack on March 31, 2009 12:55 PM

East End is a great, tiny brewery. The brewer Scott is an awesome dude and quite the opposite of an ugly american. If you like barleywine and can visit his shop, I'd suggest a bottle of this: <a href="http://www.eastendbrewing.com/?q=node/24">http://www.eastendbrewing.com/?q=node/24</a>

Bob on March 31, 2009 1:04 PM

Shouldn't "By any metric you can possibly measure" be "By any IMPERIAL" ?

drukus on March 31, 2009 1:26 PM

I think that English Docs are more accurate. My native language is Spanish, and you have to choose between the great and rich variety or Spanish types (Spanish from Spain, Chilean Spanish, Mexican Spanish, any-latinoamerican country Spanish) or the standarized de facto technical English.

The choice is very clear. And more of the great programmers and engineers talks and writes english so english docs are the more confident source and that are less error-prone.

This are my reasons of choosing English as the language for reading or studying technology.

DementialDuck on March 31, 2009 1:45 PM

English is THE worst choice of a hacker lingo. But it would be even worse not to use a single language.... and English is the language that is prevalent.

It's really, really bad as a thinking language. You can't even express math, instead you have to reinvent separate languages (mathematical notation, programming languages et.c.), you can't express logic, you have to reinvent separate languages for that too. You can hardly express anything without using a separate "language" (diagrams et.c.). English is a dumbed down pidgin language that constantly needs crutches.

English has a very rigid structure. You can't express a trail of thoughts in the most natural order for every idea. Leading to a very long-tounged language where the listener have to remember details about things that where said several minutes ago. And a lot of repetivness, because the speaker have to take artificial care that the listener can follow his trail of thought.

Worst of all, it's boooring. There are "funny" languages that make joking easy, like Jiddish, Finnish, Dutch and Swedish, and there are boring languages, like German, Polish, Esperanto and on the far end: English. "Funny" languages are usually harder to learn (with exceptions, like Finnish) and "boring" languages are usually easy to learn (with English almost as hard to learn as a "funny" language). A brain needs "teh funny" to generate good ideas.

As for Linus using English in his comments. Swedish had a CS vocabulary that was superior to English until the late 80's (mostly borrowed from German and Norse, neighbor countries that also was front runners in CS, logic, math and other science/technology from the 18's century until the 1990s). But US organisations had a bigger home market and US based technology, although technically inferior, won because it had more money behind it. Technology developed in other countries had to support English to be competitive. Nobody updated the technical nomenclatures in other languages and kids today don't learn any technical vocabulary except English. If Linus had learned CS in the 70's, he would have used Swedish, and Linux would have failed, not because Swedish is unsuitable as a hacker language (it's superior to English as a thinking language), but because he wouldn't have been able to get enough supporters.

I bid farewell and good night with a link to a (Swedish) comedian singing about why there is no German comedians (it's a hyperbole of course, but German comedians have to work harder to be funny), English have similar limitations:
http://www.youtube.com/watch?v=-eV15AeBD1A

martin on March 31, 2009 1:57 PM

> Advocating the adoption of English as the de-facto standard language of software
> development is simple pragmatism, the most virtuous of all hacker traits.

Language planning is never "simple pragmatism." There are considerations about language (e.g., Which English do we advocate?), economics (e.g., What will this cost companies? Developers?), education (e.g., Will the educators need to be familiar with technical concepts? Who trains them? Who pays for them?), history (e.g., What is the historical relationship with English by the developer's nation or culture?), demographics (e.g., What natural languages do developers already speak?), culture (e.g., What are potential cultural issues that could impact such a policy?), psychology (e.g., What considerations are given for the relationship between language and identity?), and so on.

I recommend reading a book edited by Thomas Ricento entitled, "An Introduction to Language Policy: Theory and Method." It covers many of the issues related to language planning and policy -- and not only from a nation-state perspective, but also from that of corporations and so on.

The Linguistics Major on March 31, 2009 1:59 PM

One of the previous post allready mentioned that the "lingea franca" changes from time to time, depending on the imperialism of the time and the region.

It also changes with the technical field. Most computer science as we know it originated from the US. Most publications where in (american) english. To keep up, people didnt have time to wait for the (often bad) translations.

Same happend with chemistry in the 19th century, only the the leading language was German. Germany was big and influential enough that a lot of people where aware of it and its developments anyhow. So it was easy to pick up in other countries. Scientist not reading the language where at a disadvantage. This changed after WWII when focus shifted to the US.

Nieuw fields of study will probably aquire a different language. Maybe japanese for robotics ;-)

If China where to dominate a completely new and influencial technology, a lot of terminology would be chinese and a new generation of students would learn the language to be able to read its literature in its original form.

So start learning it now and have a head start ... ;-)

flambard on March 31, 2009 1:59 PM

>what second language would provide the most added value for you as a developer?

Profanity

mgb on March 31, 2009 2:03 PM

It is a good idea for any industry to use an agreed upon standard where security and critical functionality are at stake. It is not racist or egocentric to argue that programming should be taught, documented, and discussed in English. All the World's air traffic control is in English for this reason. All pilots, navigators, and traffic controllers speak and work in English if they did not safety would be compromised. With computers taking over more and more control of the essential systems in our world infrastructure a standard needs to be adopted regarding communications in software and English is the obvious choice.

TW Burger on March 31, 2009 2:08 PM

Another German here. English has been, rightfully (by convention, not merit), mandatory for comments and documentation in every company or project I've ever worked with. I hate nothing more than localized systems (php.net, I'm looking at you! When I use a search shortcut, I don't want you to use a localized version, because my IP says I'm in Germany, my browsers tells you that I want English and nothing else). I can't really remember when I've last installed a localized version of anything either, aside from the keyboard layout, which is a non-issue on my main PC (Das Keyboard), but is irritating if not corresponding to the labels, so I tend to stick with de-latin1...

Robert Kosten on March 31, 2009 2:37 PM

I though lolcat was.

barfo rama on March 31, 2009 3:13 PM

@martin The best part about English is that it is a mongeral language. It has been influenced by many, many languages and has retained a word for almost everything, where each word has a unique meaning. There are many words that are in English but not in other languages. Therefore, it becomes vastly more descriptive than almost any language. And what happens when there is a term not used in English but is used in other languages? It's normal to add that word straight into an English sentence "as is". I think that's Uber flexible.

What's more, for all the complexities of English, it can be distilled into a very small subset of English ("International English"), that can is simple to learn and use to conduct almost any communication between people who don't speak English natively.

This is one of the reasons that this has become the language of commerce in places like Asia. I studied with Indians who say that English has been one of the most handy languages to know when traveling through India! You don't need to know much to communicate in English.

It's these two reasons, capability to describe almost anything and capability to be distilled into a simple form, that have pushed English forward as the "lingua franka".

Also, I'm not dismissing the US influence, but don't forget it was the English that had an empire so large that the sun litterally never set on their soil! It was the English that spread their language to every corner of the globe, but I agree that the US culture has been the promoting force in the last century.

Philip on March 31, 2009 4:55 PM

ATC controllers everywhere use American English. It's not Queen (or the even worse Queenie), it's Quebec.

Small airports will let it slide, but the other pilots will sometimes make fun of you. Large airports don't appreciate a grammatical argument during approach and will "politely" remind you over the air...

"Center, Two-Four-Kilo-Queen turning final."
"Two-Four-Kilo-*QUEBEC* clear, One-Six left."

Frenchmen do everything in French when they can, but they can't design a proper airframe in any case, so I wouldn't want to follow their example - they use lowercase, uppercase, AND greek letters in their wiring diagrams, rendering them unreadable. Work on an A350 and you'll know what I'm talking about...

Foo on March 31, 2009 5:33 PM

que?

Paco on March 31, 2009 5:36 PM

Every time you talk about coding in Visual Basic you lose one nerd point.

But the language point is a good one. Back in the COBOL days my dad was asked directions in San Diego by a couple of Japanese guys who he knew were programmers. They didn't understand him when he gave directions in English... so he translated the directions into COBOL-esque statements, and they understood him.

Bill on March 31, 2009 6:24 PM

Disclaimer: I am an American, feel free to hold that against me.

I would agree with this article. While English may not be the most beautiful language to speak (understatement), it is very well suited to conveying technical ideas. Another strong point for using it is that I believe it is the most widely understood language. I say "I believe" because I have no evidence to back this up... that and the fact that there is a LOT of people living in both China and India. Another reason programming languages tend to have many English words in them is the fact that the English language has lots of short words that convey concise ideas; examples would be: "for", "and", "or", etc. This is not to say that other languages don't have them, though it does pretty much rule out German... sorry guys.

As several other people mentioned, it is good to point out that we are not programming in English, but instead in a programming language that just happens to borrow words from American English language (much to any British programmer's chagrin, I know how frustrating having to change one or two letters on a word you tend to write without thinking about must be). However, after carefully rereading the article I do not think the author was actually referring to programming with any particular language, but instead to writing the documentation and sharing with one another in English.

Not totally related to this article, but along the lines with some other posts: I personally think applying the term "English" to "American English" should not be done. I think we should rename American English to something else, similar to the way the Chinese have mostly unrelated names for their dialects (though my understanding is that Chinese "dialects" differ from the way Americans define dialects). This should make the British semi-pleased as we will no longer be butchering their language and still calling it "English" and I think it would make things less confusing for many people new to English. I still remember how confused some of my classmates were back in Kindergarten through first grade about how "color" and "colour" were both part of the English language. Obviously this will never happen though because people are too resistant to changes, even if they really don't affect them. If it does happen though, maybe we can finally switch over to the Metric system, that would simplify things.

Jacob on March 31, 2009 8:26 PM

I worked for some years in The Netherlands, and while everyone I worked with spoke fluent English, they still wrote their program comments in Dutch, and gave all their program variables Dutch names.

Denis on March 31, 2009 9:20 PM

I guess what I don't understand is why this is even an issue at all, is there some movement to program in something other than English that I just never heard about?

I remember a while ago, somebody mailed me a sheet of bright red stickers that just said "ENGLISH, PLEASE!" I think with the idea that you would stick these over the translated parts of bills or letters in an effort to shame non-English speakers into getting with the program.

But everything was already there in English anyway. And then it's in some other language, too. So who cares?

justin on March 31, 2009 9:44 PM

This is a bullshit article.

First of all, the ones who say they prefer to code in english but dont actually speak it natively, could barely have a conversation about a technical subject where I work in English. Its a fallacy.

I work with alot of foreigners who supposedly speak english (but wont even say hi in the hallway) and cannot hold a technical discussion at all.

Ive been to enough meetings full of the functional equivalent of "downer cows" who sit in the meeting room silent for an hour to know that non-english speaking programmers are useless in an english speaking environment.

And in other cultures where they are speaking "english" they are communicating it in a dialect that is heavily burdened by their native tongue and makes no technical sense in english.

This is a bigoted discussion. Languages would be more effective to observe the internationalization that applications are supposed to.

If they did, technical information would be able to be exchanged more effectively between all parties.

Wankers.

bob on March 31, 2009 9:57 PM

What english speaking programmers are really worried about is that someone will obfuscate code from THEM by using other native based languages to code concepts that english based languages have not even discovered.

It will happen.

bob on March 31, 2009 10:08 PM

@Jacob It isn't the spelling that makes us cringe (I'm Australian), it is the errors.

This IS a case of the pot calling the kettle black, because I make a lot of errors.

You can color or colour your words as much as you want. You can come up with unique words like "Capilarity" (we use the term "Capliary Action") and none of that will phase us. You can throw as many "z" as you want in your words - and we still won't give a rats.

No - the cringe factor is the mangling of grammar and misuse of words.

I'll just use one example: Adverbs almost always have an "ly" after them unless you are in America where that suffix appears to be optional - preferably excluded.

"This program has bad points." Here Bad is a noun.
"This program is running badly." Here Bad is an adverb.
"This program is running bad." Umm??? What's "bad"? a noun or an adverb? Since there isn't a "ly" then it must be a noun - so is "bad" some type of hardware or protocol???

"This program is running slow." should be "slowly", unless "slow" is a thing.

But the most common one that Americans get wrong is real vs really.

"I need a drink real bad" should be "I need a drink really bad". Real is either a noun (as in "Real Number") or an adjective (as in "the real reason we cringe"). It is never an adjective - unless you are in America.

Again - this IS a case of the pot calling the kettle black, because I personally make a lot of errors. I'm just trying to point out what we cringe about.

Philip on March 31, 2009 11:08 PM

In the second last sentence I meant "It is never an Adverb - unless you are in America."

Philip on March 31, 2009 11:11 PM

A point I have found, and not seen in the comments so far is that it is easier to read and write documents which are written in ONE language and not in TWO. The English keywords in the program code essentially means that the code will drift towards being written in English, and this is both variable names and comments. It is simply easier to handle for my mind (and from what I see elsewhere for others too)

It took a lot of experimentation as I believe that you can express yourself most fluently in your native language, but I ended up concluding that it just didn't work for me. Mentally switching between the two languages hindered more than I gained by being able to write in Danish.

Please note that this goes for code and documentation - not communication with non-programmers. I consider English a tool, like Latin is used in the medical world.

Thorbjørn Ravn Andersen on April 1, 2009 12:16 AM

I guess it's nice to have one common language, but many of the arguments that "English is the language for programming" are starting to fall flat. Google is my favourite programming tool - great for finding solutions to problems I encounter, and more and more solutions are popping up in French, German, Eastern European languages and oriental-looking languages that I can't even identify, let alone understand. I've seen code which is neatly documented in the comments... in Chinese, with (presumably) Chinese variable and method names. I've often come across a problem in which the only likely solution I've found online was in some language I can't understand (I'm only trilingual).

We'd better hope that online automatic translation services become better, because we'll increasingly depend on them in the future.

Ramon Casha on April 1, 2009 1:08 AM

"I would even go so far as to claim that english and other non-case languages hold an advantage for those who speak it, since it allows for more flexible though patterns."

English is NOT a non-case language and in no case is a more flexible language. Actually by having distinct word-forms based on case one has more flexibility on the construction of the sentence, consider the German language, it has 4 cases: nominative, accusative, dative, and genitive. Depends in which case a pronoun/article is located it changes its form:

English - German : Nominative Accusative Dative Genetive
the (masculine)der: der den dem des
the (femine) die: die die der der
the (neuter) das: das das dem des
the (plural) die: die die der der

Let's take the sentence: Er gab ihr den Stuhl (He gave her the chair).
Er = Nominative masculine 3rd person singular (nominative: er)
ihr = Dative feminine 3rd person singular (nominative: sie)
den Stuhl = Accusative masculine singular (nominative: der Stuhl)
Based on the distinct words one can build the following sentences with exactly the same meaning (whether one would say that is another story):
i. Er gab ihr den Stuhl
ii. Er gab den Stuhl ihr
iii. Ihr gab er den Stuhl
iv. Ihr gab den Stuhl er
v. Den Stuhl gab er ihr
vi. Den Stuhl gab ihr er
Try the same in English:
i. He gave her the chair
ii. He gave the chair her
iii. Her gave he the chair
iv. Her gave the chair he
v. The chair gave he her
vi. The chair gave her he
As you can see it is impossible in English to have the flexibility base on "non-case". Because these different distinct forms do not exists English heavily relies on the position of the sentence elements, i.e. the object in before the verb is the "doer", the object after the verb is the "receiver" of the action, the object after the "receive" is the "acted upon" object of the sentence.

"Time flies like an arrow; Fruit flies like bananas".

Have a lot of fun...

Roberto Huezo on April 1, 2009 1:48 AM

"Advocating the adoption of English as the de-facto standard language of software development is simple pragmatism, the most virtuous of all hacker traits. If that makes me an ugly American programmer, so be it."

No advocating is necessary, English is already the de-facto language of software development. Advocating it does make you an ugly American. What are you fearful of?

bleep on April 1, 2009 2:20 AM

I think all programmers should be capable of speaking and writing English.
For me English is is my third language but I would be dead without it.
As many pointed out most programming languages are subsets of English so when things are properly named you can read code almost as normal text.

My worst experience with programming ever was when I got a web based Project management system to maintain and modify.
The system itself was great, the only problem was that everything (variable names, function names, classes, comments) was Dutch!
Now let me clarify: The system was local in Holland. No, it was never meant to go out of there. But it DID!

So I think every programmer should speak, write and comment in English at least out of courtesy for the other guy who will get you cryptic code dumped into his/her lap!

Matjaz Debelak on April 1, 2009 2:32 AM

To write code comments only in English is - in my opinion - not a good idea. Here we have developers from Russia, Italy and Germany, some with very mediocre English skills. To read their English code comments is just funny. I have reverted these back to German because at least now everybody understands what a particular method is supposed to do. see "lost in translation"...

Daniel on April 1, 2009 2:53 AM

Hi you all:

I'm from latin america and I live in Spain right now.
It's true that it's hard to find good translations of books and documentation in Spanish, and when you do so, they are mostly outdated.

As a programmer is way easier to learn English in order to read documentation than try to understand those weird translations.

In my work flow, I put names to everything in English, that way it makes more sense to me if I have to review that code later.

elbicho on April 1, 2009 3:28 AM

Esperanto has a lot to offer and is worth serious consideration.

Bill Chapman on April 1, 2009 4:50 AM

The greatest abomination on computing world is the localized functions in Excel.

Rowan on April 1, 2009 5:29 AM

I live in Brazil, Work as programmer for like 9 years. And everywhere I worked ( 5 places) you have ZERO chance of being hired to do ANY level of programming (even HTML) if you cannot do it in English.

And I think its right! These are professions about information and information manipulation. BEing able to understand each other always is simply so basic and undeniable that is something that could not even raise discussion.

Same way no engineer will reinvent math with different notations and expect people on his company or country to use it.

Tiago on April 1, 2009 5:57 AM

While the good things about using english in programming that were mentioned in the article and comments are true, the premise doesn't follow. There is no reason to 'advocate' English. English in programming or elsewhere is not defended by linguistically illiterate advocacy but by the large body of cultural artifacts that have been created in recent history using that language (i mean the term 'cultural' to be as wide as possible, covering even technology). Of course one can recommend another to learn English as a very useful and necessary skill today. But one cannot recommend that, as a broad and international social class as hackers are, we choose to adopt a language, even if it's based on a realization of a de facto condition. Languages are constantly changing and it's up to the individual to decide if he can express himself in one or the other language. Just are there are many reasons for a non-english language native speaker to use english there are many reasons for him not to (they are obvious) but what's important is that individual decisions change the weight of these reasons. So, if for example I decide against using english to comment my code for individual reasons I am going to enrich my language in the process. Part of the reason people find it hard to translate technical documents in their language is precisely because they very rarely try it. Of course, they aren't to blame for that since they are encouraged by real linguistic phenomena that relate to the richness of the English language, but there is no reason to artificially encourage them even more. That is kind of like a subsidy to the English language.

Konstantinos Koukopoulos on April 1, 2009 6:32 AM

Yes, every software developer who cares about his/her career should understand English. You can stick to your local market but this is a low ceiling for your career. In the outsourcing arena you must be able to speak to foreign customers and partners. Communicating well is part of our skills as developers (does anyone still think it is only about how technical you are?).

Besides, if you want to be respected as a programmer, you must write code that is not only well designed but also understandable by other people. It's not like we get a living from obfuscating code (at least we try not to :). I live in Brazil and if I ever write variable names or comments in Portuguese, it is on personal/practice code only, unless this is a project requirement (it hardly is).

My first contact with a computer was like 14 years ago. Everything has always been in English since then, from games to programming languages to decent Internet sites. Whatever the common idiom is, a standard is necessary, and if the current standard changes, we all will have to get used to it.

So let's do our best to improve our English skills and make ourselves understood. :)

Rodrigo Piovezan on April 1, 2009 7:45 AM

Everyone trying to advocate Esperantos should just give up - it's too late. Maybe when English dies, you can try again.

Andrew on April 1, 2009 8:18 AM

I totally agree with the author that programmers and developers should be well versed in english to understand the documentation and articles. Some terms can be very well described in a particular language and computing theory is difficult to describe in any other language than english. I've seen people coming with horrible words/phrases to describe computing terminology in their native language which if we hear we'll definitely laugh. One place in software where native language is suitable is for the end users of your application who are not programmers. They will find it easier to use the application if it's in their native language rather than in english. Although such inclination by the end users is also reducing now a days in come Countries.

MAK on April 1, 2009 9:45 AM

Esperanto is work in progress, pre-alpha (only 120 years). When English dies, it'll be still up and running so that people may use it and enjoy its simplicity. It's almost like a programming language, because it's grammar is very logic, without weird (natural) exceptions (for each letter -> one foneme, etc).

I've decided to program only in Esperanto, from now on. For me, it's just fair enough.

Felipe Castro on April 1, 2009 11:24 AM

The suggestion for english-only programming is a bad one. The reason to refute it is just one word: monoculture.

People say don't use Windows, it's monoculture, everyone uses it and all hackers attack it and so malware wreaks havoc on it. If there were six or so major PC desktop OSes, with 15-25% market share each, the cybercriminals would have to fight in a fragmented space, with much less return of investment and without any chance of a global epidemic outbreak.

Similarly, english programming monoculture hurts, because all coders will think the same enrish-logic way. English, especially the american english variety is a very simplistic language, so coding in english will make your product brutally simple, therefore unsuitable for more complicated tasks.

The japanese are much ahead of the world in robotics, which suggests their culture and language, with a strong emphasis on diligence, cooperation, obedience and senior-junior relationship is better suited for creation of artificial humanoids. If you force all robotics programmers to think and code in english, it will take a good 1000 years to get those fusion-powered miniskirt catgirls you dream about.

Similarly, chinese and russian programmers are leaders in malware development, which suggests their language and culture is better suited for translation their violent and often terribly bloody history into combat bytecode. I mean what is the significance of ruthlessly wrecking a few servers compared to tens of millions of war dead?

Tamas Feher on April 1, 2009 11:45 AM

and France, interviewers, doctors, Nba's etc, you are lucky if they barely express themselves!

reine on April 1, 2009 12:14 PM

and it's NOT an April's fool joke!

reine on April 1, 2009 12:16 PM

I'm a translator (literary, not technical), and I never read translations if I can avoid it, because I know what a dirty trade it is. Translated software manuals are an abomination. Most translators, even specialized ones, are not up to date with the technology. They don't use the words they translate, so they have only a vague idea what they mean, so they use whatever their TM tells them, or what some random person on a mailing list says, or (if deadline is near) what Google suggests. Or they have too rigid ideas what the word in the target language _should_ be. I had a heated discussion with a colleague who insisted on translating the simple word "link" (as in hyperlink) to German as "Verweis". Now a "Verweis" is a reference or referral, it's something under a "See also" heading, but it isn't a link in common parlance. A link is just called "Link" in German, that's the most common and most unequivocal word there is. Maybe 20 years ago someone at Siemens or a German university would have preferred the word "Verweis" or "Verknüpfung", but those times have passed. Only that the translators haven't noticed.

Software l10n is worse. People seem to translate strings without seeing in what context they appear. Translations within one app are inconsistent, help texts point to nonexistant menu entries because the translation has changed. The only solution I see for that is crowdsourcing it: provide an easy interface to suggest a translation/correction without having to register.

But the most important reason why I prefer to use the English version of any software is support. Google for an English error message or post it in a forum, you'll most probably find that you're not the only one with that problem. With a localized version of the same message, good luck.

Everybody should at least understand English. It may not be the best choice for a lingua franca (spelling/pronunciation are more disparate than in any other language I know -- OK, I don't know Irish) but it is the lingua franca.

rng on April 1, 2009 12:55 PM

In the bigger european countries like germany or france, there exists many books in native language, for all sorts of development - many more books for each topic than are actually needed.
Some of these books are even better than any translations from englisch books :-)
Even many blogs and newsgroups with native speakers exist. All television is broadcasted in native language. So there is simply no need for any to use english at all.
Smaller countries like the nordic countries are forced to use english, because there are too less native sources, even in television many series and films are sent untranslated (which wondered me greatly when i was there the first time :-).

Conclusion: If you want sell your tools, offer a a native version. Microsoft does so with nearly all development tools they offer, and thats a key to the success of windows as a platform.
If you do not, you are mistaken and ignore a big part of the pie. Others will do better and get bigger market shares - your decision.

titrat on April 1, 2009 3:01 PM

@chris

>> Next, the english-bias. By selecting blogs and sites written in
>> english, you are eliminating almost everyone who doesn't speak it.
>> If you are USED to using these resources -- after all, they ARE more
>> complete -- then you have applied a bias to the selection of your
>> peers. You don't know many non-english speaking peers because you
>> don't go to the same places.

> This is also known as network effect - most programming sites
> are english biased.

So what? I don't read most programming sites. I read at most a hundred. It doesn't matter if most programming sites are english based if there are enough programming sites in one's own language to provide good support.

But you completely missed the point. What I'm saying is that there is a LOT of non-english programming sites, but YOU don't read them, and you didn't post IN THEM such discussion, so you don't get their feedback.

Go out on NY streets and ask around if americans are nice people. Now do the same on Basrha. You'll get different answers. THAT is my point, you have selected OUT people who don't speak english, so how can you evaluate their skills as programmers?

>> Then, the "english is better for programming" bias. Bullshit.
>> Programming slang gets created by the second. Drop a C++ systems
>> programmer in a Java or PHP/Web environment, and he'll think these
>> people are speaking a different language altogether. Vocabulary is
>> NOT an issue. At worst, people of different languages will just
>> "import" the word, just like it happens with english. And it DOES go
>> the other way, as any proponent of free (libre) software knows. :-)

> What language is 95% of technical publications done in first?

Are you SURE you understand english. What I said is that vocabulary is NOT an issue, because it is constantly changing anyway, no matter what you speak.

And, by the way... how many technical publications on the programming field have you read last year? And this year? How much they have improved your programming skills compared to other activities, such as reading and writing code, reading blogs, or reading books published years ago?

>> I have seen very good programmers who couldn't read even an airport
>> sign in english. They are at a disadvantage because they do not
>> have access to the same repository of knowledge and documentation
>> that their more fortunate counterparts have, but it did not detract
>> in any way their programming ability.

> So what? The point is that english is the lingua franca for
> programming and you'd do well to know it.

No, that is not the point. I'll quote Jeff: "shouldn't every software developer understand English?"

If non-english speaking programmers do as well as english speaking ones, then the answer is no. And if I have EVIDENCE that this is the case, that's relevant to what Jeff is talking about in his blog.


Daniel on April 1, 2009 3:07 PM

The existence of a lingua franca is very useful, but the fact that it became English of all languages is somewhat disappointing to me.

The innate qualities claimed for certain languages have more to do with a cultural bias than with the language itself. These cultural biases are ever changing.

In the late 18th century, the French were thought of as a very rational, decisive people, so the French language was considered a very rational, decisive language, supremely suitable for scientific and technical publications. At the time the German people were thought of as a weak, ineffective bunch of philosophers and hopeless romantics, so the German language was considered to be suitable only for poetry and philosophy. Certainly not for suitable for real men.

Of course times changed, as Germany was united in the 19th century and emerged as an industrial powerhouse, while France declined, the perception of the two languages switched place. Two great wars later, and it has changed even further. The language of Goethe and Kant is now widely considered to be cold and harsh, suitable only for loudly barking orders.

Such dramatic shifts in presumably innate qualities of two languages that haven't changed very much at all in the past 200 years!

I know it is completely impossible for native English speakers to imagine this right now, but the qualities you consider to be innate to your language are not innate at all, but merely a perception reflecting the current power and influence of your culture. A power and influence that is already declining! As Asia inevitably reemerges as the center of human civilization, this perception will likely change. Probably not in our lifetime, so in the meantime it will remain necessary to master your impossibly complex language, with its unintuitive and very much non-phonetic spelling, its inflexible syntax and sparsity of phonemes, and put up with having one's qualities judged primarily by the way they speak English, without the slightest consideration for how bloody impossible it is to attain native level fluency!

Rick on April 1, 2009 11:27 PM

>Hm. Is it really English we're speaking ?

>Think of the terms we currently use to describe a situation to fellow
>coders: "linked list, hash map, set, file, log, database,
>connection..."

Yes it is English we use in between the technical terms.

Rene on April 2, 2009 12:04 AM

Nothing much to add, except I went and made a full translation of the post, linking back to the original entry, obviously :)

http://nullrend.com/2009/04/02/el-programador-gringo/es/

It *is* in Spanish for the benefit of those people whose English en't that good :)

nullrend on April 2, 2009 1:15 AM

Iway itewray allway ofway ymay ommentscay inway Igpay Atinlay.

Mitur Binesderti on April 2, 2009 6:03 AM

English is my second language. And I set my locale to English because it makes everything easier for me. It makes me feel as part of a larger, more referential community. I know, for instance, that I can google error messages and find help easily that way.

I've seen bad attempts at translating keywords and key mappings which completely obfuscate usability when you switch from a language to another. What's the Italian for a while loop? How do you write the SUM() function in Excel in ? What should the shortcut for Bold be in French when the translation for Bold in that language starts with G?

Informatics is its own language. Most of the time, it's based on English. Can we do better? How about Latin? Esperanto? What kind of perspective would a new tongue bring to programming language constructs?

The problem with anglophones is they are used getting their way and stick to it, even when it sucks. Americans continue to impose feets and inches and miles to the rest of the world even though most of it has moved to metric. English holds a monopoly on novelty because it's more widespread, marketable and less likely to go out of its way. At the same time, anglophony is an affluent of many cultures where cross-breeding does happen. In the end, everyone learns to accommodate to English, while English grows better by letting the world come to it instead of the other way around. Some people are worried about that, but that's for another discussion.

Other cultures act as a counter-environment to Americana, breeding new insights. I used the word informatics earlier. In some languages, a programmer is someone whose work is to literally "automate information". I'm convinced native language introduces a bias in the way that we use it, much like Java vs Python does. Sometimes, I wonder what would have happened if the computer revolution happened in a different language...

Luis' Parenthesis on April 2, 2009 7:58 AM

This article is pure comment-bait!
And another thing ... the worst thing about en_US is that there are so many differences in spelling between it and The Queen's English en_GB, which I do not speak as I am en_IE hiberno-english speaker or ga_IE Irish speaker (*)
What bothers me most is that non-English speaking programmers learn a bad version of en_US contributing to more cr*p.

So when you say Pls Lurn ENglish, what you really mean is Please learn American English ; Well I prefer to speak & write proper English and will continue to do so, and use dialect independent keywords whenever I can. I hate the word "color" .

( ga_IE * and No, I wouldn't not choose Irish to program in as it is just not suited to it, but it's a very conversational language, one that you can communicate ideas in except that not enough people speak it fluently)

Fionn on April 2, 2009 7:58 AM

Since you claim to read every comment here goes mine. I didn't read all of them, so apologies if this was mentioned before.

What makes you an ugly American is not the fact that you acknowledge english is somewhat of a lingua franca. It's that you somehow feel the need to go out and decree that every single programmer in the world should know English. It simply doesn't follow from your premise. Yes, programmers in western europe most certainly don't have a choice, but those in, say, China, probably do. Increasingly so as more of their tools will be homegrown in the future. Your inability to see things from the perspective of most of the rest of the world is somewhat typical really.

On a topical note, I can see how it might seem silly to have more than one language to communicate with other programmers in, but guess what, it isn't really rational to have multiple languages in the first place. Things would all be a lot easier if we all spoke the same language worldwide. Don't hold your breath for that changing any time soon though, and certainly don't hold your breath for the universal language becoming English, Esperanto, or indeed any language in the form it exists today.

wds on April 2, 2009 8:30 AM

English websites / newsgroups -> RTFM (even if none exist)
German websites / newsgroups -> good german explanations

English non native speaker comments -> mostly useless, the same as the function names.

So why using english outside US?

Languages change, so use bad english instead useful native comments is lousy.

GADTHRAWN on April 2, 2009 10:29 AM

Bueno, en realidad no creo que usar el ingles para comunicarnos por el Internet o comentarios en los programas que escribimos sea una buena idea ya que todos vivimos en regiones diferentes en el mundo y tenemos que sobrevivir en esos sitios donde se hablan otros idiomas.

Ehrlich gesagt, ich glaube es ist nicht eine gute Idee auf Englisch uns im Internet zu unterhalten oder unsere Kodekommentare zu schreiben. Wir kommen eigentlich aus verschiedene Regionen der Welt und müssen eben in diesen Regionen überleben.

Imaging if all you spoke were Englisch and the texts above were important comments on your code or something like that, you will be busy googling or finding someone to translate.

Isn't ironic how all the posts are coming from people all over the world in English and not in their native tongues (whether for or against)? I guess English IS the Lingua Franca of the Internet (and programming).

Roberto Huezo on April 3, 2009 12:15 AM

Although I don't disagree, I would point out that when saying "English has a richer technical vocabulary", you have to at least wonder about why that is so. Was English better suited from the start (the answer is no), or is it just that we developed and used the new tech terms in an English context? And how about the fact that English is a rich language because it borrows from all other languages? Pointing out the reasons is one way of not sounding close minded about the idea of a foreign language.

Mathieu on April 3, 2009 5:45 AM

It's interesting to see so many people commenting in perfect English for whom English is a second or third language, while half the people who speak it natively can't bring themselves to use capitalization or punctuation.

It just makes me want to gouge out my eyes when I see some of the stuff my fellow native English speakers write on the Internet. I don't claim to be a linguist. I can't diagram a sentence, but I know that "omg, did u see what happned to ur post it got so deleted" is not even near acceptable.

Matthew Morgan on April 3, 2009 6:32 AM

English is not the majority language of the Internet any more. There are more people who speak some form of Chinese as a first language than speak English as a first language. We don't see Chinese text because China has a big firewall, and because (probably) we're not interested in browsing Chinese websites and our search engines do not return Chinese results.

Dan BC on April 4, 2009 11:01 AM

Most people seem to agree with use of English in text - it seems obvious. Now let's discuss those pesky Metric or Imperial units - when are we going to escape from archaic miles or inches or gallons or pints?

This isn't a trivial point. Ask the people who built a wonky Hubble mirror.

Dan BC on April 4, 2009 11:04 AM


Yawn...

Dude, face it - you can't make 2 billion Chinese and Indians learn your lingo.

English is a horrible language for communication - it has too many corner cases.

Documentation shouldb be written in...Esperanto. And, no, I wasn't being ironic or kidding.

jayjay on April 4, 2009 3:09 PM

Hey, I just wanted to say that I'm happy I'm not the only one who think "eo" (Esperanto) is an OK language for technical stuff.

jayjay on April 4, 2009 3:10 PM

English is a Germanic language and most of the simple and short words (words like grass, fox, sheep, stone, water...) have a Germanic origin. However French speaking people invaded England and brought along a lot of Latin words. So most complex and long English words come from Latin via French (words like complex, subject, documentation...) . In most European languages those same Latin words are used for complex words. This means that is for most Europeans easier to read English documentation about complex subjects than reading about very simple subjects. Latin is a common base.

I think it is very different for Chinese people.

Theo on April 5, 2009 1:41 AM

I'm French, and I have to agree with you: all programmers should know English. However, I'd add two caveats.

You say: "nobody (or at least nobody who is sane, anyway) localizes programming languages.", but I don't think the designers of AppleScript were insane (AppleScript initially had French and Japanese dialects, which ended up being dropped), because it falls under the first caveat: programming systems for non-professional programmers (end-user automation, macro languages, etc) should be localised, if not the language, at least the tools and documentation.

Second, while you can assume that programmers can read and write English, do not assume they can (understandably, at least) speak or understand spoken English; this is significantly harder and not necessary for the job. While many do, if only to interact with programmers abroad, many don't. And I do have good spoken English skills (heck, I watch movies in English at the theater and notice the inaccuracies in the French subtitling), but I'm not listening to the stackoverflow podcast because doing so (contrary to listening to something in French) requires enough concentration that I cannot do anything else at the same time such as doing the dishes, navigating public transportation, etc., all sort of situations during which podcasts are usually being listened, and I don't have time to dedicace to only your podcast (that is why I am grateful you posts summaries of your podcasts).

Pierre Lebeaupin on April 5, 2009 9:11 AM

I'm French, and I have to agree with you: all programmers should know English. However, I'd add two caveats.

You say: "nobody (or at least nobody who is sane, anyway) localizes programming languages.", but I don't think the designers of AppleScript were insane (AppleScript initially had French and Japanese dialects, which ended up being dropped), because it falls under the first caveat: programming systems for non-professional programmers (end-user automation, macro languages, etc) should be localised, if not the language, at least the tools and documentation.

Second, while you can assume that programmers can read and write English, do not assume they can (understandably, at least) speak or understand spoken English; this is significantly harder and not necessary for the job. While many do, if only to interact with programmers abroad, many don't. And I do have good spoken English skills (heck, I watch movies in English at the theater and notice the inaccuracies in the French subtitling), but I'm not listening to the stackoverflow podcast because doing so (contrary to listening to something in French) requires enough concentration that I cannot do anything else at the same time such as doing the dishes, navigating public transportation, etc., all sort of situations during which podcasts are usually being listened, and I don't have time to dedicace to only your podcast (that is why I am grateful you posts summaries of your podcasts).

Pierre Lebeaupin on April 5, 2009 9:12 AM

I learned how to program before I learned English. But you really can't avoid learning English when you write code, so the question is moot.

LKM on April 5, 2009 2:39 PM

i am still new to programming in c++ i just won to know in c++ is it posable to have GUI or graphic user interface
if so please send me an exaple
e-mail - kevinos@live.co.za

kevin on April 6, 2009 2:32 AM

I will agree with "English is the lingua franca of programming" if you are more specific: "English is the WRITTEN lingua franca of programming". I was always able to exchange comments and questions of code with american programmers... but have you (non-american programmers) tried do it verbally? It's a pain!! They're even not able to communicate the same ideas verbally among programmers from different regions of USA. I've been witness of discussions about verbal terms between south-carolina and north-carolina programmers. I think that a Hacker and his/her code should be able to coexist with any human-written language because of two simply reasons: 1. Hackers are the most intuitive and inquisitive creatures on earth. 2. Hackers should be interested in the secret files hidden by systems compiled by some chinese or russian genius that know the main disability of ugly american programmers: They only know english.

Felipe on April 7, 2009 10:32 AM

I haven't read all the comments yet so i'm not sure if i'm being redundant.

i'm german and it seems like we're one of the few peoples that like to get EVERYTHING translated. the programmers work on an operating system with the language set to german, with all tools (if available) in the german versions.
it pains me to see just how many german programmers don't speak english (well) and how many of them are looking for german sites when trying to find a solution to the problem.
if they google something (yes i said the evil word) they're effectively discarding over 90% of the sites that might help them. if they're looking to a solution for a reasonably rare problem they might discard the only results that are to be found.

personally, i don't understand it. i also prefer to read anything programming in english and have all my tools in the english version. (which makes it REALLY hard to tell friends/family how to fix a windows problem.... when you don't know/remember thar properties is "Einstellungen" and what settings they have to click on next because they can't translate my setting to german and it's not immediately obvious to me either)

Alexander Knopf on April 8, 2009 7:21 AM

Long live APL

albtraum on April 8, 2009 1:23 PM

After having used the german Delphi 7 online help for 2+ years, I was surprised how clear and precise the english version was when I worked in the US for 2+ years.

Although that is clearly an indication of a poor translation job, I nowadays check german contents against the source (which is english in most cases). I think the problem for translators is that they have to have a very good knowledge in two domains : the english language and the technology they deal with. It does not help you to have very good first and second language skills if you do not have a solid knowledge of the technology / product you are translating for.

Therefore, plain german translations from english just suck - because they are pure "translations" - you can almost smell the original english wording.

As a side note : I returned to using german expressions for my classes and variables after coming back to germany because the german language with its tendency to build "chain words" for technical terms helps me to express in detail what I really mean in my development domain (industrial machinery and automation). If there's one word which really raises a red flag for me - that would be "item". You can use that for almost anything you want and confuse the heck out of fellow developers.

So I don't agree at all that (US-)english is the "best" language to document or to develop software in - quite the opposite I learned that the "everyday US english" language is fairly limited compared to "UK english" as it is (supposed to be) taught in germany.
If the average "ugly american" doesn't believe me : please get hold of a serious UK newspaper and compare the depth of the vocabulary against your US newspaper of choice.

I believe the key of US-english software documentation success is : it's the common denominator which most of the software developers have a good grasp of. Works for me !

SoftwareArtist on April 8, 2009 2:25 PM

French and able to keep up with the few 100 words necessary for programming and talking about it.
And by the way, you can keep english as the de facto language for programming as long as you leave us french for love.
;-)

Christophe G on April 9, 2009 8:26 AM

Hi!

I switch from visual basic to C# because in every forums and tutorials of .net platform doesn't exist help for visual basic developers.

and I prefered use the english languaje for documents and help for coding.

:D!

Rockergarden on April 9, 2009 2:43 PM

Very entertaining post. Thanks!

The use of English as the common denominator for a programmer is the result of a fluke of history that just happens to work out for the best, not by design but by circumstance.

I'd like to point out an analogy to this debate. The location of the prime meridian and the world wide navigation system that is based on it. It wasn't until 1884 that the world settled on Greenwich England as the location of the PM. Before that time, the location of the PM was hotly debated with nationalist pride. The French wanted it to run through Paris. Even last year a leading muslim scholar demanded it be changed to run through Mecca.

In 1675 Greenwich was chosen as the site the royal observatory because (1) it was on top of a hill, (2) close enough to London to get to in reasonable about of time, (3) far enough from London's lights to allow observation of the stars. Over time it became the official Royal Navy Observatory where the Royal Navy produced all of England's maritime navigation tools (charts, almanacs, etc.).

England eventually became a world superpower, and the Greenwich's navigation products were used all over the British empire, more or less. The Americans had their own PM running through Washington DC.

Now here is the cool part. There is only one longitude on the planet that doesn't divide countries or major population areas. That is the longitude that runs between Alaska and Russia, and down the middle of the Pacific Ocean. It does skirt some small South Pacific islands. But on the whole, it impacts the least people and commerce.

That longitude became the International Date Line (IDL). It is where time, as measured by man, crosses from one day to the next. The polar opposite of the IDL (180 degrees away) has to be the Prime Meridian, which happens to run right through Greenwich England, which happens to the the place that the British Empire based their navigation systems.

When the Greenwich Observatory was founded, I doubt that anyone thought for one minute that it would become the cornerstone of the world's navigation reference system. Just dumb luck really.

Ron Larson on April 11, 2009 9:18 AM

This doesn't just go for software development but pretty much any software terminology. While living in Croatia, most university students (who had a good level of English) told me they couldn't stand using a Croatian version of Windows?

Why? Because the translations of things like "copy" and "paste" sound so ridiculous in their language. English is a good language for adopting new words but many other languages are old and not able to adapt as well. If you have familiarity with other languages, just think at how difficult it is to translate the meaning behind everyday computer terms like "windows", "browser", "keyboard (board of keys)", "menu", "click", "point" etc.

In Chinese computer literally translates to "electric brain" and mobile phone translates to "hand machine."

Matt on April 13, 2009 11:50 AM

As a Mexican developer a good fluent English is a must-have. Here the only other option besides getting tech material in its the original unadulterated form is to get the Spanish version(by Spanish I mean from Spain not just the language).

For any Spanish people out there, correct me if Im worng, but there appears to be some sort of law in Span that obligates any Intelectual material to be translated to spanish ( Thats how Bilbo Baggins ends up being Bilbo Bolson and Luke Skywalker turns into Luke Trotacielos).
The low point of this is that Spanish is great for hooking up with female individuals, but it is most certainly not the best option for translating tech slang since it is 2000 words shorter than English.

Until today I haven't meet a single great developer (non native speaker of course) how hasn't embraced English as his second lingua-matter.

Chepech on April 16, 2009 4:09 PM

> And a growing percentage of that knowledge can and should be available in your native language.

That may be true, but still, being fluent in English is incredibly useful whenever using the internet for, well, anything. For example, I'm a native speaker of German, so it's natural for me to search in the German Wikipedia for anything I want to know. But more often than not, the English version of an article is much more up-to-date, informative and comprehensive than any other version, so I end up reading the English version instead of the German version. The same goes true for most UNIX/Linux man pages, the translated versions often lack critical information, so reading the English original is sometimes simply mandatory.

The same is true when searching for any technical problems on the net: When using English search terms, the count and quality of search results is nearly every time much higher.

In university (I'm a master of science in CS) they always told us that being relatively fluent in English is a very important skill in the software industry throughout the whole world, and none of us students questioned that. Many great books that were recommended to us are only available in English, or the translated versions contain just too many translation errors to be enlightening. We also could choose whether we wanted to write our bachelors/masters/diploma thesis in German or in English, both being "normal" choices.

I tried to use localized software for development in the past, but most of the time, it was a painful experience (barely understandable to non-understandable compiler error msgs, etc.), so I've given it up completely, and use the English (=original) version of every software (IDE/Webbrowser/OS/etc.) whenever I've got the chance. We also have the guideline at my current job that our sourcecode (including comments and SVN commit messages) should be 100% English whenever possible, because many of us (including me) think that it's just more professional and makes the code more valuable, because most skilled software developers on earth know at least enough English to understand the code's comments.

Also, there are more than enough great blogs that are only available in English, so I would recommend learning English to anyone that has any kind of interest in the computer sciences.

> But I believe the rules are different for programmers. So much so that I'm going to ask the unthinkable: shouldn't every software developer understand English?

Well, if you don't, that can severely harm your career, at least in Germany. Don't know about other countries, but as I said, they told us that it's basically the same everywhere. Maybe except for France, the french are extremely in love with their language, and try everything to "protect" and "save" it. So possibly, the rules are different there.

> In my opinion there is no reason to translate developer tools and documentation.

I second that completely, more often than not, the original version is incredibly much more understandable, up-to-date, concise and basically the only sane choice. So there are many developers (probably the majority) that just plainly ignore the translated version and use the original. I recommend this to every colleague, and most agree.

The only exception are technologies that are only relevant in Germany, for example, there's a technology called "HBCI" that is being supported by many German banks for home banking, but only by German banks. So the specification and most of the documentation are only available in German. Also, another technology named "ISDN" is quite popular in Germany, but not very popular in most other countries. So much software, tools, documentation etc. are only available in German, too. But this are the only two exceptions that I know of.

rolfhub on April 18, 2009 3:51 PM

I have to agree to this. I've come with a personal vision of what giving up my native language (Spanish) in this are meant to me. And it goes along the lines of someone who said "This is not english, this is codish". We don't go as far as the Finns to speak English among themselves, but when it comes to specific terms, they are always in english. Now, I don't have much of a choice, I live in Washington. :-D

David on April 18, 2009 4:43 PM

Great post! I'm from Ukraine and I have to agree with this.

Sergey on April 20, 2009 1:23 PM

Good :}

Transportadora on April 27, 2009 9:55 AM

Very good man..
cya!

http://www.sexshopvendas.com.br

Sex Shop on April 28, 2009 6:35 AM

Great blog!
Interesing work!
kisses

sites de busca on April 28, 2009 7:47 AM

I just listened to a podcast featuring the keynote from PyCon 2007. In it, Robert M. Lefkowitz discusses the "Importance of Programming Literacy". He hits on this topic among others. It's worth a listen.

Jay on May 7, 2009 4:15 AM

Gravedigging or not, I have to agree with the OP.

As a German I could easily select from a vast range of programming literature translated into my native language, yet I always find myself ordering the English versions online instead of going to the next bookstore to buy a localised copy.

Part of the reason is that translations tend to be bad. Not stylistically, but some translators just don't seem to be aware of the jargon involved and just translate variable names in text (without changing the code samples) or translate technical terms in a non-standard way. On the other hand almost all university-level programming courses seem to rely on a Germanised jargon, although I doubt any major research publications would be released German-only.

I always cringe when I see code with German variable names. Maybe it's because I'm pretty fluent in English, but I just find it bad style to program in a local language. Comments, sure, as long as it's an in-house, closed-source, small-scale project that'll never be released to the public, especially when the application is so specific it has to borrow certain German terms (I've actually found myself using some German nouns in my projects when translating them just didn't feel natural, but show_veranstaltungen() still feels more natural than veranstaltungen_anzeigen() IMNSHO).

One of the requirements for the university subject I'm studying (Informationsverabeitung, split into Linguistic Computer Science and Humanties Computer Science) is literacy in English, the other is literacy in at least one other European foreign language (mostly because it's dealing with linguistics). Nevertheless, most programmers I've met are not exactly fluent in English. OTOH, most of the GOOD programmers I've met are.

Alan on May 13, 2009 1:57 PM

I don't think you realize this, but English originated in England. This is probably why everyone thinks American is stupid.

Let's think about this on May 24, 2009 10:29 PM

The world's English mania: Jay Walker

http://blog.ted.com/2009/05/the_worlds_engl.php

(5 minute Flash video of a TED presentation)

Jeff Atwood on May 29, 2009 12:42 PM

Very good!
great post
kisses

Site de busca on June 17, 2009 12:55 PM

I do understand english, but when it gets into deeper areas it gets difficult for me to understand the help list for the language I use. So, If I was better in technical english I would probably be a better programmer, but that is because there is not any good support for other-languages programmers. The problem is not programming in english but being able to understand the info and tutorials. That is a problem for every country with social and economical differences that does not have universalized english as a second languaje, easy to be perceived when you find english in marketing as a tool to make a reference to an educated group.
That at the end means that younger people first have to get english knowledge for several years, but not a basic one.. a really deep one, in order to then being able to understand the deeper concepts. And that is more obvious when it comes to self instruction.
If you start programming at the university and you did not learn english before.. good luck.
So I guess the hope, at least in third world, is in the future of translating programs and devices to take english tutorials to any languaje, even the obscure terminology in deeper programming.

carvallo domo on June 17, 2009 7:21 PM

Putting effort on translating tutorials is kind of useless, at least the way I see it.

When you're a programmer, you inherently know that you should know english. If you don't, maybe you should change yout mind, right now!
As already said, most programming languages are subsets of English. Also, most documentation is written in English. I would even go as far as saying that writing documentation (for code) in other languages should be a almost a crime.
When documenting in other languages, you are wasting time that could (and should) be using to improve the currently existing english docs, or even fixing bugs in the code.
You might say "but there's this great programmer who doesn't speak english and could really use documentation... He'd help a lot!" Well, if he has the brains to be a great programmer, he can learn english as well.

That said, i will add that my little brother understood basic english by the age of 5, and he never had a single english class before he was 7 or 8 years-old. Oh, and we are portuguese (a completely different language).
He managed to do it because he also watched the Cartoon Channel... Nowadays (he's almost 12) he fully uses english for browsing and such... *good* portuguese webpages are somewhat rare..
So, if my little brother made it, so can almost everybody else, especially if they're programmers.

The bottom line is: in programming, everything *must* be english. You only resort to other languages when dealing with the end-user.

Pedro on July 5, 2009 6:49 AM

I was hunting around specifically for Mandarin technical terms, found your post interesting + have responded here:
http://www.luckymissxu.com/ramblings/?p=629

As for those saying that all blogs should be English + then there would be more blogs... serious? China has 1/3 of the world's population + has a very large set of bloggers, even if they are behind a firewall. Germany + France has a number of very notable bloggers as well. Just because a speaker of one language be it English or anything else isn't literate in another language, it doesn't mean that those resources don't exist.

Wake up folks, it's a global economy.

@MissXu on August 1, 2009 11:45 AM
Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.