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?
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.
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
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...
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.
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?
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
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.
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.
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.
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.
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.
Shouldn't By any metric you can possibly measure be By any IMPERIAL ?
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.
in communist soviet russia - English programs YOU
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.
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!
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:
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.
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 ... ;-)
what second language would provide the most added value for you as a developer?
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)...
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 ;-)
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.
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
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...
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.
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.
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.
English is a bitch to translate into Portuguese, due to its specificity.
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.
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.
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.
This is what you would have been writing:
statisch leeg Hoofd(tekenreeks argumenten)
This isn't the ugly American. There are a few other countries out there where English is the main language.
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.
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!
@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.
WOW! look at all the comments.....
So american programmers are ugly...
Arrrggh, you arrogant Americans don't even speak English!
this just in...
According to jeff...
american programmers are ugly..
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...
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...
Perhaps also programmers who are not native English speakers are better programmers because they understand languages better ;'0
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.
Not fair. Other natural languages would have equivalent influence.
Python designing by a Dutch programmer is not a coincidence.
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)
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,
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' =).
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.
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...
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
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.
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 :)
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.
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.
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?
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.
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.
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.
Apparently you're not going to be much use at operating a GhostNet unless you know Mandarin and Tibetan.
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
sondern man schreibt tatsächlich mal auf, was das ganze machen soll und erhöht mit muttersprachlichen Kommentaren die Kommentarqualität beträchtlich.
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.
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.
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?
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.
Try programming in Klingon. No wimpy messages there. Don't even ask how uncaught exceptions are handled... (shudder).
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.
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.
@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.
In the second last sentence I meant It is never an Adverb - unless you are in America.
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.
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.
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.
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
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.
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.
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.
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.htmlhttp://an00na.blogspot.com/2009/03/all-programmers-are-english.html/a">http://an00na.blogspot.com/2009/03/all-programmers-are-english.html/a">http://an00na.blogspot.com/2009/03/all-programmers-are-english.htmlhttp://an00na.blogspot.com/2009/03/all-programmers-are-english.html/a
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.
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.
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...
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?
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!
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...
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.
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.
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.
Esperanto has a lot to offer and is worth serious consideration.
The greatest abomination on computing world is the localized functions in Excel.
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.
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.
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. :)
Everyone trying to advocate Esperantos should just give up - it's too late. Maybe when English dies, you can try again.
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.
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.
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!
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?
and France, interviewers, doctors, Nba's etc, you are lucky if they barely express themselves!
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.