The Ugly American Programmer

March 29, 2009

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
352 Comments

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 2:02 AM

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 2:14 AM

jack, want a cookie?

theman on March 30, 2009 2:15 AM

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 2:20 AM

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 2:21 AM

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

http://code.razvanstavila.com/

theman on March 30, 2009 2:24 AM

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 2:26 AM

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

alex on March 30, 2009 2:28 AM

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 2:36 AM

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 2:40 AM

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 2:47 AM

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 2:50 AM

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 2:52 AM

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 2:58 AM

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 2:58 AM

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 3:17 AM

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 3:22 AM

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 3:27 AM

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 3:35 AM

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 3:45 AM

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 3:48 AM

@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 4:10 AM

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 4:13 AM

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 4:24 AM

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 4:26 AM

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 4:27 AM

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 4:30 AM

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 4:34 AM

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 5:09 AM

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 5:10 AM

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 5:29 AM

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 6:21 AM

@ 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 6:43 AM

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 7: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 7: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 7: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 7: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 7:10 AM

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

baxter on March 30, 2009 7: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 7: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 7:15 AM

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

Luís on March 30, 2009 7: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 7: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 7: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 7: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 7: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 7: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 7: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 7:18 AM

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

Sean on March 30, 2009 7:18 AM

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 7: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 7: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 7: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 7: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 7:32 AM

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

ingmar on March 30, 2009 7: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 7: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 7:37 AM

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

doekman on March 30, 2009 7:37 AM

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 7:38 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 7:40 AM

You strike a good argument...

Timothy on March 30, 2009 7:43 AM

What about all those Chinese coders? ;-)

Richard on March 30, 2009 7: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 7: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 7: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 7: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 7: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 7: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 7: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 7: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 7: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 7:53 AM

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 7:55 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 7: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 8: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 8:03 AM

I thought computers speak in ones and zeros. :)

freddy on March 30, 2009 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8:17 AM

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

Greetings from Germany ;-)

Markus on March 30, 2009 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8: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 8:35 AM

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

Mike on March 30, 2009 8:37 AM

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

Jan on March 30, 2009 8:40 AM

More comments»

The comments to this entry are closed.