Hacker News new | past | comments | ask | show | jobs | submit login
The Ugly American Programmer (codinghorror.com)
79 points by worthlessgenius on March 30, 2009 | hide | past | favorite | 68 comments



When I've heard programmers criticised for the "ugly american" behavior it is not about the use of english as a technical lingua franca. The ugly american programmer is one who embeds english chauvinism into the user experience of their software. This includes lack of unicode support, and support for locales and internationalization.


To my knowledge, this is a subject that is rarely if ever covered in US schools (I don't recall seeing anything related to software internationalization listed at my university). I'd suggest that those who want to promote translatable software start by encouraging schools to teach their students how to externalize strings, deal with wide characters, etc.


I disagree. How to do localization is usually pretty straightforward, so why teach the APIs? There's barely enough time to communicate a basic understanding of complex systems to students, teaching them localization is a sideshow.

Anybody who wants their program to be used in another country needs to localize it, and that point, a simple Google search is enough.


I should also note that being a native speaker of the English language does not automatically make one able to write coherent technical documentation in English. Unfortunately.


Being Danish I can attest that this is very true - I write my code-comments in English, my business plans in Engish and do my financials in English. Even my blog is English.

It just makes it easier to communicate, and I've never met a Dane that complained about it.


Same here. English is not my native language but I just do everything in English. Code, documentation, blogs, requirement docs, etc. Really, everything.

Is this even remotely controversial these days?


I don't think so within the EU (perhaps in France ... chuckle), but I suspect it'd be more problematic in for instance Japan, Korea or China.


I suspect it'd be more problematic in for instance Japan, Korea or China.

Linguist David Crystal, who has surveyed world use of one or another "interlanguage" for official use by international organizations, has found that actually most frequent and most exclusive use of English as an interlanguage is in east Asia. It is remarkably "natural" for a Korean person to try speaking English to a Japanese person (even though Korean and Japanese are cognate languages), and it is more expected still for a Chinese person to speak with either of them in English. What I find remarkable, but have observed more than once, is speakers of different Sinitic languages ("Chinese dialects") speaking to one another in English. Online, which is mostly the context Jeff is talking about in his blog, the early inconvenience of typing in the CJK languages (now resolved, as an in-country issue, but still a big barrier to switching among those languages) resulted in much Internet communication in east Asia being in English by default.

After edit: France was mentioned in the reply above to which I reply here, and I'll mention that the Carrefour retail chain has stores in Taiwan, and the signs inside the stores are in Chinese, of course, but also in English, NOT in French. There is no reason of national pride among the Carrefour staff sufficient to overcome the practicality of using English to reach customers in Taiwan. (Taiwan has a large population of English-speaking foreigners, the plurality of whom are Philippine guest workers.)


Is that most frequent per capita or total occurrences?

At least with the limited contact I've had with Chinese and Japanese developers the level of English wasn't particularly high, so I guess I'm a bit surprised by that. In the Chinese teams they even went as far as to try to suck in someone from Hong Kong so that he could be the bridge between the Chinese and German (the team I was on, though communicating in English) groups.


Replying to your reply to my reply to you, my main point is that if a Korean is with a Japanese person, they MIGHT speak Japanese (I have seen that happen), or they might speak Korean (I have seen that happen more rarely), but most likely they would speak English with each other. Add a Chinese person or a Thai to the conversation, and it is overwhelmingly likely that they will all be speaking English to one another. The standard of spoken English varies from one country to another in east Asia. One problem is that many of the better English speakers eventually emigrate. But English is the general language of intercommunication among people from Asian countries, for lack of any other language in which speakers have stronger proficiency that they all speak.


Your observations on English as an "interlanguage" is interesting. I can see this happening.

As to the observation of different Chinese dialects using English as an interlanguage within China (...I assume you didn't mean within China)...this is probably very rare. In my 9 years of living in China mingling with all sorts of regional and ethnic groups, I have never once seen this happen.


English as an interlanguage among Chinese people has become much rarer since the retrocession of Hong Kong strongly promoted the use of Mandarin there. Most of the examples I had in mind date from the era when an educated Hong Konger would be much more likely to speak English well than to speak Mandarin at all.


I understand that the parent poster's point is that most East Asian software engineers don't speak English well.

Now, given that a Japanese and a Korean are to communicate, of course it's more likely that they will do so in English.


It might have something to do with the installed base of the language, so to say. Large languages like French, German, Japanese and Chinese may have an expectation that people should learn their language.

Small countries like Iceland, the Netherlands and Denmark can't possibly expect anyone to learn their petty language that can't be used anywhere else, and thus realise that they have to learn English if they want to communicate outside their borders.


I think it's that plus literary tradition. The Netherlands isn't actually that small population-wise, but it has a long tradition of its best minds (e.g. Spinoza, Erasmus) writing in the lingua franca of the day. Even though there are only four times as many people in France as the Netherlands, I'd guess there's more than twenty times as much written and published in French.

Edit: Interesting note -- if Dutch, Flemish and Afrikaans are all considered the same language, then Dutch has around 30 million native speakers.


Interesting and valid point, but I think it only applies to some countries. Søren Kierkegaard, Niels Bohr and Hans Christian Andersen all wrote in Danish (to my knowledge at least) and the Icelandic Sagas were written in Icelandic. So a portion of small countries that have good English skills don't seem to have that tradition.

Bjork does sing in English though :-)


I'm a french living oversea and so write and think mostly in english... Most of my friends in France work in french and their english level is often quite weak (especially when it comes to oral communication, one of my teacher at university used to read 'done' as do-one, case as 'cahse' and so on, it was rather funny...)

When working in japan, none of my japanese coworkers could speak or read english (even worth than France...) and they only read translated programming books with a 6-12 month latency to get new information....

Now if I hired programmers, I would never hire someone who doesn't read english fluently because I believe that someone, who is truly interested in programming, will try hard to learn English so he can access to the quantity of knowledge written in English.


French was an 'imperialistic' language as well, until not so long ago; France had a strong economic and diplomatic influence. You had good conferences in several domains in French. It's tough to loose this kind of influence, and I think the case is similar for countries like Japan or Italy. Young people in e.g. Poland seem to have it easier to adapt...

But your last sentence seems really harsh. Good communication skills are so much more important in real life to have work done.... I know a few good programmers in France for whom reading english is a lot of (sometimes necessary) pain. I'm sure more contacts with foreigners would give them a incredible confidence/motivation boost.


Even here in Italy, which doesn't have a strong tradition of using English, most programmers use it (although I am currently working on a Rails contract where all the models have been translated into Italian, with the accompanying pain that that brings...)


Don't your customers complain that you write the requirement documents in English instead of the local language?

A big advantage you have as a local developer over an Indian developer is that you speak the native language of your customer. It seems kinda silly to throw that kind of an advantage away.

Besides, you can't really apply the principles from Domain Driven Design if you translate everything to English. You would end up with one language in your code and another language to talk to your customers, instead of a single ubiquitous language. This becomes especially difficult when you have a complex domain with tricky business rules that requires frequent collaboration with domain experts.


The thing is that your customers speak English too, and most technical, financial, etc. domains also lean towards English.


At my previous work (.NET shop) the entire IT department switched to an English Windows and Visual Studio, for the simple reason that it was impossible to Google errormessages in Danish. It was a significant boost of productivity and morale.

Re. Danish - at my first day at Comp Sci at Tech. U of Denmark, I had no clue what this "oversætter" (literally "translator") they were talking about was. Turned out to be term coined in the 1970's for what I knew as a compiler. Esp. among older staff there, they still use the Danish term.


I almost feel like with the lesser spoken European languages that something akin to what's happened in India emerging:

There's one language for the home and the family and friends, and other that's used in formal, academic and business settings.

It wouldn't surprise me if soon even formal regional official documents can be handled in English to facilitate some the free flow of work in the EU.


I am suddenly reminded of how, after a few months studying in an Israeli religious school, I switched my note-taking from English to Hebrew--not because I was terribly fluent in Hebrew, but because the books I was studying (canonical Jewish texts) were in Hebrew and Aramaic, and the terms used to refer to concepts in them were Hebrew, and it was just easier to write everything in Hebrew than to think about how to translate or transliterate all the vocabulary into English. Especially since the equivalent English words all took longer to write.


I live in India and my native language is Hindi, yet I mostly use English for communicating over the web. If I had to explain even a slightly technical concept (say, a simple data structure) to someone in Hindi, I wouldn't know where to begin.

Given a choice, I'd always pick English over Hindi as my language of choice, not because I dislike Hindi, but because I'm much more comfortable with English. Why? Because I read books written in English, read English newspapers, watch English movies and TV shows and read a whole lot of technical content written in English. Thanks to the American tendency of "exporting" their culture, English is all I've been exposed to (and I consider it a good thing).

In real life, most (educated) Indians speak a mish-mash of English and Hindi. Modern Hindi itself is a mish-mash of words borrowed from Urdu, Farsi, Punjabi etc. It's actually pretty liberating, being able to express yourself without even having to stop to think how to phrase a sentence. Can't complete a sentence in Hindi? End it in English.


"Thanks to the American tendency of "exporting" their culture..." Oh come on, surely the British share some of the responsibility there, if not all of it. Last I checked, we haven't yet liberated* India, so if Indians consume American media (movies, books, music, etc) then they are actively importing it, by their own choice. And its not like you don't have alternatives in India, with its thriving native entertainment industry.

Some countries don't have native content-producing industries, and so you could say that the importing of foreign culture squashes these industries before they can develop. On the other hand, keeping it out is basically censorship.

(* This ironic use of the work "liberate" is a sick joke that I'm not proud of, but it does sum up the cynicism most brain-holding Americans feel about their government's foreign policy.)


I'm Turkish and I have to agree for the most part.

Technical CS terms in Turkish get invented by a handful of academics. Since this is a pretty close knit community, the jargon does not get socialized very well and leads to unwieldy, inorganic words. I don't live in Turkey, so I pretty much don't have a chance in hell of understanding Turkish CS speak.

That said, there might be some language communities out there, large enough to be self sustaining. Chinese seems like a good candidate. The fact that there is a Chinese clone of Atwood's Stackoverflow also supports this: http://news.ycombinator.com/item?id=537246


From the Python style guide (PEP 8), on comments:

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.

And that's for all code written in Python, not just the code that goes into Python. Guido is Dutch.


Has this been inspired by CNprog.com?


why I gave up Visual Basic for C#, as painful as that was.

No Jeff, working in VB is painful.


Open a 400 person coding shop in Ningbo and try to get everyone there to write in English, or even understand it. Good luck with that.

Working in markets with large numbers of non English speakers is quite difficult, as the article implies. Very profitable though. Chinese people like games as much as we do, and they will actually pay for them!!!


> Chinese people like games as much as we do, and they will actually pay for them!!!

Yes, the Chinese would never pirate software!


They pirate plenty of software, including games, but they pay big money for the virtual goods you sell inside the games!


This really doesn't need discussion. English is simply the language for science and computer stuff, just as latin used to be in the past (not for the computer stuff, but for science).


Another example of this would be in music composition where Italian is the language used (to describe tempo, dynamics, etc.) regardless of native tongue.

I'm not an expert, but I would suspect there many disciplines have a language that is commonly used, and it so happens that Comp Sci happens to be English.


I don't think it's that straightforward. Loanwords happen overwhelmingly with vocabulary, and not grammar. While this is obvious, the implications are thus: the closer to script of the origin language to the borrower language, it is exceedingly easy to take the target word wholesale. Since the grammar is relatively stable, you can easily make the case that the loanword, whose origin is language X, is no longer language X, but language Y, the borrower's native language.

That is, words like "tempo," "crescendo," and "forte" are Italian in origin, but who's going to say, no, they're not English? They're native enough.

Now, let's take a discipline with non-English terms. Take Go for example. There are many terms in Go that are shared between Chinese, Japanese, and Korean schools. They can be written similarly in hanzi/kanji/hanja, with two catches: 1., the same characters are read differently in different places; 2., Westerners, using exclusively the Latin alphabet for their native needs, cannot read the hieroglyphs.

The result? What term should English speakers use? Pick one! Which one? Whichever! For Go, the Western world picked Japanese. You have ko, moku, seki... So which was the common language? There are now two answers. First, there was a common script, which was Chinese characters. Second, there was a commonized pronunciation, which came from Romanized Japanese.

It's not a "so happens to be" thing. It's a speed and scale of adoption thing, and in this way it is a "majority wins" game. And here, the winner is the Latin alphabet. To come around, I would suspect there are few disciplines that do not turn into a Latin-alphabet-standardized-, and in effect, English-, field.


The terminology used in music composition are in Italian, but are the research papers and discussions written in Italian?


There is a very unfortunate drawback to this, readily evident in programming, at least in my experience.

Just as programming languages are expressive in different ways, so are spoken languages, and the designers of programming languages, when exposed to a few ways of structuring ideas, end up writing code the same way.

You can argue that mathematically they are all the same. The computer doesn't care, but the human-readable code is different. If you have ever structured your code so it reads more like English (example: _why's poignant guide), it reflects this thought process.

Another example: somebody once remarked that lisp is a counterintiutive way of structuring code because that's not how language is normally used. If one has learned a few other spoken languages, it is immediately obvious how intuitive the lisp syntax is.

Of course, again, on the metal it makes no difference, so technically we can all "not care"... but when I see elegant code, it's elegant both to the computer and to the human, and that's where it's art, otherwise it's just raw optimization.


And the Catholic church used Latin exclusively for centuries.


Well yeah, but you rarely write programs about science and computer stuff. You write programs about some business/domain where English might not be The Language.


Sure, but if you want to use current libraries and programming languages, chances are documentation is in English.


The overwhelming majority of programming languages use English keywords

Can anyone tell me any programming language which doesn't use english keywords!?!

English is the common language of communication throughout the world, and consequentially the effect has percolated into the hacker world too I guess !



Can anyone tell me any programming language which doesn't use english keywords!?!

APL?


There are lot of dialects of LOGO in other languages than English


Algol 68, one of the grand failures in programming language history, allowed for multiple representations of the same source code, including allowing for each natural language to define its own set of keywords. You can see a code sample with English or German keywords in the Wikipedia entry:

http://en.wikipedia.org/wiki/ALGOL_68

Just to be clear, I consider this to be an argument against the idea.


http://en.wikipedia.org/wiki/Non-English-based_programming_l... I guess the most famous ones are Brainfuck and the Perl module that lets you write Perl in Latin http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata....


Well the relevant question is do people do serious coding in any non-english programming languages ?! That's why I was so surprised when I heard of them !


Yes, nadesiko: http://nadesi.com/

It would be hard for one to understand how anybody uses it, if you don't understand the language, but that does not imply non-existence. You'd also be hard-pressed to find any, because all your searches will come up in English :)

But if you're talking about cutting edge, then, no.


Not sure it counts, but... the Portuguese version of Excel uses portuguese keywords for all the functions (Soma instead of Sum, etc)

Also "BrainFuck", but that one doesn't use any words at all, just a few symbols.


The template language of spip : http://www.spip.net/@?lang=en


Fjölnir, renowned for its "GRUNNUR"...


This post gives me the overpowering urge to write a rebuttal in Japanese just to prove that an American can.

Let me hum a few bars: if your customers don't speak English, and your colleagues don't speak English, and your business partners don't speak English, then your refusal to use languages other than English cannot be justified by it being efficient. It is hubris to think otherwise -- an arrogant sort of laziness of thought which is entirely different from the productive laziness that programmers generally cultivate.

A programmer who cannot talk to his colleagues and customers, and blames his inadequacy on them, is a failure at his profession : writing code which solves problems for people. If you only get as far as "writing code" without understanding the people and their problems, congratulations, you fail.

On the plus side, the prevalence of attitudes like this means you can do pretty well for yourself if you're bilingual. I got stopped on the train today by the guy who got me my current job (random coincidence -- we live in adjacent small towns). He started the conversation like he always does "Hey, Patrick, how's work? Say, do you know any bilingual engineers looking for employment?"

This week apparently its an aerospace project that needs them. Its always something -- there's hundreds of billions in trade happening between the US and Japan every year, huge portions of it are high-tech, and engineers here are only marginally better at speaking English than engineers in America are at Japanese. (In my experience, though, they're not aggressively proud of being ignorant.)


Did you read the article? He's talking about internal engineering efforts, not gathering requirements and general interactions with the customer.


This post gives me the overpowering urge to write a rebuttal in Japanese just to prove that an American can.

I'd love to try my hand at reading it. Chinese is my stronger language, but I can read a lot of Japanese for meaning.

Agreeing with your point that everyone, especially a native speaker of English, is well advised to learn the language of customers, I still agree with Jeff's main point that if we want an interlanguage (a "lingua franca") for programming, that language will have to be English for the foreseeable future. Not because Japanese and Chinese and Korean people are unimportant, but for the same reason that Japanese and Chinese and Korean people very often use English for conversations among themselves that include no native speakers of English--an interlanguage gains usefulness from network effects, and English dominates all other conceivable choices of an interlanguage in its network advantages.

頑張って


This has nothing to do with what you are talking about. Of course you have to take into account the language of your users. That doesn't mean that the development isn't going to be done predominantly in English. ESPECIALLY if you are working with developers with different native languages is English going to be the fall back. That was his point. And he's not saying that he's proud or arrogant that it is English, just that it is. It's a fact of life.


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

To disagree with this comment from Jeff's blog, see

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

English comes by its huge network advantages honestly. All four of my grandparents were born in the United States, but three were born in households in which a non-English languages was spoken, and two were educated entirely in another language (German). Everybody learned English, and that was no big deal. The majority of Americans have ancestors who didn't speak English before they arrived in America. English is by no means perfect, but it is pragmatic, as Jeff says.



Wow,Jeff Atwood sure knows how to state a position that the vast majority will roughly agree with yet still position himself as champion of a controversial position. He's not necessarily an "Ugly American;" I think simpleton is more to the point.


True, but it's a temporary situation. As an old teacher used to say: you could wake a medieval scientist in the middle of the night, and he would probably curse at you in Latin. Same holds for present day scientist and engineers (myself included), only they would curse at you in English.


Eric Raymond: 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

Or probably English is simply the most easy to learn.


Well, English does have a larger technical vocabulary than most other languages. Admittedly, this is more because English accepts other languages technical words into the language, so therefore (to some extent) is the union of the technical language.

With this in mind, i would not call English easy to learn. There are far too many special cases and bizarre twists to get to true fluency (it might be east to get to a passable spoken version, though).


It's both, I think. Basic grammar is fairly easy and succinct. But then there are 60K phrasal verbs (stand up, stand down, understand, stand under, stand over, but never "overstand") and special cases, connotations, figures of speech, etc.

It's difficult to explain to a learner why it is technically correct but not usual to say "This is my election for lunch", or why a "hot chick" goes to college while a "hot chicken" is dinner.


Being fluent in both English and Chinese, I would have to say Chinese grammar is much easier than English. There are no irregular verbs or pluralization, and very few tenses. The difficulty in going from speaking English to Chinese is vocabulary memorization and pronunciation, but that's true for going from Chinese to English as well.


My opinion is based on a limited sampling but how a language is taught is key. My wife and I each took French classes for 6 years prior to meeting. Her teachers emphasized speaking fluency while mine emphasized writing. She was taught to use idiomatic expressions and to "improvise" while I was made to memorize rules. We decided to take some French classes together for fun. She was much better able to communicate in general. I can read/write French okay in a formal way. When speaking though I tend to stumble trying to think through rules in my head. In contrast, I took 4 German classes in college. The professor had us watch German television shows and speak in "street" German. At the end of 4 classes, I was fluent enough to hold full conversations with German people when I visited. Even factoring in the regularity of German the teaching method seemed more effective.


I don't think english is easier to learn, just more fault tolerant. We are used to translating bad english and have no trouble with statements like this:

In the early part of the 1950's in the USA, a game called "Violence Fight" was in vogue among mafia, reckless drivers and general businessmen. The "Violence Fight" was the game to struggle for "No. 1 Quarreler" with fighters who were gathered from all parts of the USA speaking boastingly of their strength. And of course a lot of winning money as well as the honor were given to the "winner".

(Example taken from here http://www.youtube.com/watch?v=MqnBWgrSt30). Other languages (e.g. french) just don't tolerate stuff like this.

For an example of a really easy to learn language, see modern Turkish. For various reasons (vacations and chicks) I've tried and failed to learn many languages. I came closest with turkish, vocabulary was my only sticking point. Ataturk simplified the language only 70 years ago, and it worked fantastically well.


I think the French language tolerates it just fine. French <i>people</i> don't tolerate <i>people</i> who butcher the language, because it's a social thing, but there's not a human language in existence that doesn't degrade gracefully.

You can walk from Paris to Rome, never finding two neighboring villages that can't understand one another. Somewhere along the way, what they're talking isn't exactly French or Italian -- they just polish up their speech when the government men from France come.

That's less true today than it used to be, of course; more people go to the city for education. But it's still true of everybody's grandma.

My point is that all human languages are fault-tolerant.


That's a very good point! I've never thought of it that way. Most corrections are of that nature. I know what someone means, more or less, but the arrangement or words are slightly off.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: