a companion discussion area for blog.codinghorror.com

The Ugly American Programmer


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.


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. :slight_smile:
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…


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.


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.


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.


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.


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


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

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


@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?


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.


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.


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.


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!


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!


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.


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. :slight_smile:



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).



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.


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.


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.