Today, Jeff Atwood made a post on his blog titled The Ugly American Programming. In this post, Jeff talks about the the ugly american attitude, in which one presumes that everyone else should speak English. He asserts that while this attitude is unacceptable in all other areas of modern societies, we as programmers are exempt from such scrutiny. He ends his post by saying that,
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.
Here is my take on this subject.
Being fluent in English is a privilege
Knowing English is not a requirement to be a hacker, it's a privilege. As an English speaker, I have access to documentations, tutorials, and communities that a non-English speaker would not. The same is true the other way around, but a disproportionate amount of programming materials are in English.
Coming from an English-speaking country I have an unfair advantage in that non-English speaking programmers need to first learn English just to access the same resources that I do without the extra time and effort to learn a foreign language.
I would not say, however, that every software developer needs learn English. Why? Because it really isn't required. If people can be taught differential calculus in other languages, what makes software any different?
I'll go even further and suggest that if an English-speaker learns another language, then he or she will benefit by being able to take part of a new programming community in which that language is used. For example, there are a lot of cool stuff coming out of Japan, such as Web 2.0 technologies (like this one). And a lot of those programmers do not speak English very well.
English as a global language
There is no particular reason why English, as opposed to other languages, is better suited as programming's lingua franca. Eric Raymond writes in his How To Become A Hacker guide that, "English has a richer technical vocabulary than any other language." I have not seen any evidence for this claim, besides from a few anecdotes about some programmers with English as their second language choosing English documentation over those translated into their native tongue.
The problem here is not that other languages aren't technical enough. It's a simple translation problem, and is definitely not bound to the programming world. Take any technical text written in the non-English language of your choice and you'll have trouble trying to make an English translation that is just as good as the original.
The globalization of English is an historical accident. Namely, that the two dominating forces during the last few centuries spoke English: The use of English was first spread by the British Empire during the nineteenth century, and then further global adaptation took place when the Americans took reign as the world's top political power. Driven by the growing global economy, more and more people needed to learn English in order to take part in the global market.
A common language for hackers
I would definitely agree that there is a huge upside to give hackers around the world the ability to communicate with one another. I also agree that English is currently the best candidate to accomplish this task, simply because more people know English as a second language (myself included) than any other language.
However, to advocate English as mandatory for programmers is a bit too imperialistic for my taste. It is exactly what is described by the term Ugly American. If an English-speaking programmer can't take time to learn another language, but expects others to learn theirs, then that is just ignorance.
English keywords in programming languages
Jeff states rightly that most programming languages use English keywords. I don't really see this as a reason to learn English though. If I showed a non-programmer a peice of code, most likely this person will not understand what it does, even though the keywords are in English.
Take, for example, this piece of Ruby code.puts "Hello World!"
If you're not a programmer, you will not have a clue as to what the above code does. Actually, even if you are a programmer you might not know if you don't know Ruby -- but you might be able to guess simply because of the "Hello World!" string. And why is the string encapsulated between two quotation marks? Try explaining that without talking about compilers.
Another example are the logical operators. If I say, "I'm going to church or I'm sleeping in on Sunday," in English I am implicitly using the exclusive or (XOR). In programming, however, the or operator always implies the inclusive or, which stems from boolean logic.
I think being fluent in English may give someone a slight advantage, but programming languages are so grammatically different from English that it does require a different kind of thinking.
Hackers transcending culture
It's a nice idea that the hackers transcend cultural norms. We'd like to think that we are special, that we have our own special community in which everyone's interests are not bound to any culture or country. However, this is not reality. We are just as bounded to social structures as people in any other field.
Sure, we can say that we advocate English as the common language only because it makes it easier for us to get stuff done. But isn't that the same for everything else in life? If everyone in the world spoke English, that would certainly make it easier for us when we travel. If every physicist in the world spoke English, they'd get a lot more work done. We makes us so special?
The world is not flat. You can pretend it is flat and ignore the diversity of programming communities. However, doing so won't do you any good, and will simply make you The Ugly American.