Scott Hanselman

Do you have to know English to be a Programmer?

November 21, 2008 Comment on this post [123] Posted in Internationalization
Sponsored By

An interesting comment thread broke out in a recent post on Using Crowdsourcing for Expanding Localization of Products. Someone linked to a post and used the phrase:

"If you don't know English, you're not a programmer."

The post linked to didn't make the statement so boldly, but it's an interesting "link bait" phrase, isn't it? It's defintely phrased to get your attention and evoke opinions. I don't agree with it, but I wanted to dig more into the concept.

This whole conversation caught the eye of Fabrice Fonck, General Manager (GM) of Developer Content & Internationalization for DevDiv. He wrote this email to me and I wanted to share it with you. He's was a programmer before he became a manager, and English is not his first language, so I thought it fitting. I also added emphasis in spots. Fabrice believes very strongly in the usefulness of translation and translated content and has an entire organization dedicated to it, so you can understand why he'd feel strongly about this.

I began studying computer science and programming in 1985 as a freshman in a business school in France, my native country. At the time , localized versions of programming tools were not available and I will always remember when I picked up that version of GW-Basic only to realize that it was all in English. Learning programming seemed already daunting, but doing it in a foreign language only increased my level of fear. Over 20 years have gone by and English does not feel quite as foreign to me anymore, but I cannot help but think that for billions of people around the world, taking on such a double challenge may not necessarily lead to the same outcome.

Over the past 17 years in the Developer Division at Microsoft, I have devoted a large portion of my time and energy making sure our products and technologies are available in as many languages as possible because I believe it is important to make them accessible to as many people as possible around the world. During all these years, I have had the privilege of traveling to many countries around the world and I have talked to many of our customers, a number of which through interpreters. I have met many brilliant developers out there whose English language skills were limited if not practically non-existent. This anecdotal evidence is supported by our sales figures. In Japan for instance, where we have one of our largest developer population in the world, over 99% of our product sales are in Japanese. Entering that market with an English-only product is a recipe for failure. That same is true in counties such as France, Germany, Spain, Russia or China where our localized products represent over 80% of our sales. The list of countries goes on and on.

While it is true that a number of people overseas for whom English is not their native tongue will eventually learn and benefit from the vast amounts of technical content available in English, a greater number will not. That is why we continue to expand the number of languages in which Developer Division products and technologies are localized into. Cost is obviously an important factor here, especially for smaller geographies. That is why we continue to invest in technologies such as machine translation, translation wikis and CLIP, and concepts such as crowdsourcing and community engagement to drive down costs and make these languages a reality for the millions of developers out there (and aspiring developers) that do not speak English. By making our products available in all these languages, we also foster more community engagement in these languages, through blogs, forums, chat rooms, etc.

Here's some choice comments from the previous post:

Erling Paulsen: "Most articles, knowledge bases, books and so on are in English, so if you want to read up on something in depth, you need to have at least basic reading skills in English. Translating tooltips inside Visual Studio could end up causing confusion for at least new developers, as what they would see on-screen potentially did not match up with what the tutorial/book they were following." and "...I truly do appreciate that Microsoft is trying to make an effort, and I believe that MSDN has had a vast improvement in usability the past year or so. And the fact that MSFT are allowing community contribution is absolutely fantastic, but at least to me, the translation effort just seems a bit unnecessary." and "I never said, or meant to say that you need to be fluent in english to be a good programmer. And as Scott points out, the side-by-side translation feature would actually be a great way for learning english."

Paul van de Loo: "Developers might as well get used to learning new languages (even if they aren't programming languages)."

Spence: ""A programmer who doesn't at least understand English is not a programmer" that's an outrageous statement. That's like saying "a musician who is deaf is not a musician" patently untrue and ridiculous. plus pretty offensive to millions of programmers."

Ramiro: "I believe that in an ideal world every programmer should speak and read enough English to be able to work, learn and interact. However (and specially in Latin America) this is still a long term goal. I really applaud the effort being put in by Microsoft and other companies to make resources more available for everyone."

Robert Höglund: "I do think we developers need a common language. When you have a problem, get a strange exception, 9/10 just googling the error message will get you the answer. I have tried developing on a Swedish version of XP but trying to search for those error messages doesn't work. Can't say i agree with the statement "If you don't know English, you're not a programmer" but it does make life easier."

Farhaneh: "I can not speak and write english very well , but i'm taking classes and reading english books in my major to make it better. because i want to be a good programmer."

Filini: "The english syntax that has been used in programming languages for the last 50 years."

John Peek: "To say that if you don't know English, you're not a programmer is a perfect example of ethnocentrism in this country."

What do YOU think? Is learning English the #1 thing a Programmer should do (after learning to type)? Can you be an awesome programmer and speak little or NO English?

The comment that *I* personally agree with the most is from Ryan:

"It would *seem* (totally non-scientific sampling) that the non-english speakers (as a first language anyway) tend to agree with the statement "If you don't know English, you're not a programmer" more than native english speakers."

What do YOU think, Dear Reader?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
November 21, 2008 3:37
A recent project that I worked on had a truckload of legacy code with identifier names in a mixture of English, French and some obscure dialect of Swiss German. Fortunately I know French and German well enough to understand most of it, but there were one or two German-looking words that completely eluded me despite extensive googling. To add to the fun, the entire system was completely undocumented, and comments were limited to "Add 1 to x" type detritus. In French.
November 21, 2008 3:40
I'm curious, when he says that MS markets products in the local language, does that include Visual Studio and the .NET framework? For instance, in the USA a line of my code might look like this: using System.Drawing; Would I see the French equivalent in France? Something like utilisant système.schéma? If so, that that is pretty cool but it would be the first time I ever heard of this. (or did I completely miss the point of this post?)

November 21, 2008 3:47
The sad truth in my experience is that where Latin used to be the lingua franca of science, and Italian used to be the lingua franca of music, and clearly French used to be the lingua franca of something, the lingua franca for computer science seems to be English. From a linguistic perspective, that's a major shame, since English is an appalling language with a ton of failings, and is also probably the second or third hardest language on Earth to learn as an adult.

I've been thinking for years that some form of programming Esperanto would be really useful - an almost-totally-artificial language in which dev's from multiple cultural and linguistic backgrounds could converse comfortably. While folks would still need to learn a new language (or maybe a patois or pidgin), it would probably be easier to learn, with a fixed and regular grammar, and it would be Comp-Sci specific. Hell, "normal people" already think we're speaking an alien language when we gather in public anyway - why not take the extra step and make it official and universal?

(And yes, I know this idea is grossly impractical on a dozen levels - I mean, look what happened to the real Esperanto!)
November 21, 2008 3:48
Good question, Rick - We're talking about localization in general. The namespaces and methods are static, and usually in English. Certainly they are for Microsoft. However the documentation, tooltips, interface, etc are all things that could be localized. The question is, should we bother? Should programmers "simply learn English?"
November 21, 2008 3:50
Interesting enough, this discussion has been raging on for the past two days at the office (regional web application development firm based in Syria/Amman/UAE).

Party#1: Speaking of a programming Utopia where all programming languages would be compiled to an Intermediate Language (similar to that of the .NET framework) universally coherent to all programmers regardless of their native tongue, from an original Syntax based on national languages (alphabet and vocabulary) developed by native speakers of those languages.

Party#2: Every programmer should simply learn English to become a programmer.

As an EASL (English As a Second Language) speaker/ASP.NET developer, I found it imperative for web developers to provide more Arabic content to the web, and as an educator teach developing for Arabic applications, thats what we can do from where we sit, till someone pushes for better cross cultural/lingual integration in the programming industry.
November 21, 2008 3:53
In a world where people communicate more and more with eachother, and where outsourcing is just business as usual, it is my belief that it is not productive if a programmer is not capable of communicating in English. Also... it really doesn't help having localized versions of .Net framework around (who understands localized error messages, and how are you supposed to google them?), or localized programming languages (have you ever tried developing Excel macro's in a different language... that alone made me decide NEVER to use a non english version of Office ever again).
I might be lucky, and grew up in a country where English comes naturally to us (The Netherlands), I try to keep all my developing tools in en-US only (and still... I seem to have gotten a Dutch .Net security patch down the road... and Skype claims I like Dutch better than English, simply because I've set The Netherlands as the region i live in).

So my take on this all is this: a true community communicates in one language. Watching PDC videos are usefull to any .Net developer.. you really miss out if you are not capable to understand that. So will not knowing English make you a worse developer... no. But does anyone else in the world care what you are doing? No to that either.

November 21, 2008 3:58
@Rick, @Scott, MSFT Does that for Excel though. Workbook function names are localized and use an internal name in the background. So if i open an orginally English workbook in Dutch, i will see Dutch function names. Worst of all: in the Dutch version the English function names do not work. IMHO that is taking localization way to far. How the heck am i supposed to know that Sum means Sommeren in Dutch (Mind you I am Dutch ;) )
November 21, 2008 4:03
Het is noodzakelijk de taal te spreken van de gemeenschap waarin je leeft of werkt.
Quod erat demonstrandum
November 21, 2008 4:08
I call BS. This is like saying that if you don't talk fluent greek you cannot do any maths at all. I learned to program long before I learned english. Actually my worst programming experiences have been when using Excel. Its macro language is localized, so dependening on whose computer I am, I have no idea what the friggin keywords should be.
November 21, 2008 4:11
I am Dutch but I would not be able to find / program anything in Dutch translated software, but that might very well just be me ;) Currently I live in Norway and I am still very happy with the English software. All the code that I write is in English, has always been that way, I am sure that will not change.

Anyway the world is getting smaller every day, more and more people are moving to different countries to start working there, they will definitely not all speak the native language. Also software doesn't really know borders any more so it is very likely that your software will be used by people that speak a different language then you do. Then there is the out/off shoring business. It is also about being professional, in my eyes it is not professional to deliver software to clients and have them do f.ex. database maintenance on a schema that they cannot understand. So anything that may be exposed to other people that don't speak your local language should be in a language that they should reasonable be familiar with.

So I believe it would be good practise to develop in a major language, in Europe I believe that would be English other parts of the world might chose other languages, as long as it is a well thought of choice.

-Mark
November 21, 2008 4:15
I don't think you need to speak English but it certainly helps. The argument has nothing to do with superiority of some culture over others. Look at the number of languages being produced in non-English-speaking countries that still use English keywords (Ruby and Lua come to mind at the moment)
Speaking for myself, I'm pretty sure I would not have continued in this industry without speaking English. I would not allow myself to be stuck always trying to catch up... I'd have probably started working in another field.
November 21, 2008 4:18
Check this girl from Belarus programming Oberon. The Initiative Informatika 21 aims to make programming accessible to russian speaking kids and came to life at the time the Oberon IDE BlackBox was made open source and extended to allow Unicode identifiers.

(disclosure: I work at Oberon microsystems, who hosts the open source project)

Regards, tamberg
November 21, 2008 4:18
It's interesting to note that 'English' is a pretty common trade language as well. Watching two EASL business people meeting each other can be weird when they drop into English - and subsequently use sentence forms and grammar that no native English speaker would use - yet understand each other well enough to do a deal.

The Wikipedia entry on the English language has an interesting table showing the number of speakers of English. There are more English speakers in India than the United Kingdom!

There are many countries where English is the official language, but is not the most spoken language. That table also shows there is a difference between English speakers and English users. When I visited Sweden a couple of years ago, everyone seemed fluent in English (Wikipedia says 85% of Swedes claim to speak English).

English has a great advantage over many other languages, which is that the source and correctness of it is not controlled by any one country. Whilst the USA has the greatest number of native speakers, and a cultural hegemony in TV, movies and music, it is not the only source of English - which means that many words and expressions have been added to the language from elsewhere. There is another section from that Wikipedia page that discusses this. Here is an interesting quote:

"English easily accepts technical terms into common usage and often imports new words and phrases. Examples of this phenomenon include: cookie, Internet and URL (technical terms), as well as genre, über, lingua franca and amigo (imported words/phrases from French, German, modern Latin, and Spanish, respectively). In addition, slang often provides new meanings for old words and phrases. In fact, this fluidity is so pronounced that a distinction often needs to be made between formal forms of English and contemporary usage"


English speakers have frequently been reminded by non-English speakers that they should not assume everyone must speak 'their' language. This has created an emotional reaction whereby English speakers seek to avoid appearing biased by assuming that another's language is just as useful in any given area. Anecdotally this is not supported by non-English speaking programmers.

Personally I support the localisation of developer tools, but the pragmatic approach to technical documentation is that most readers are likely to be able to read English, and the others can get it translated reasonably well by tools or friends, so I expect most people to still document their technical ideas in English - even if they are a EASL speaker. It is hard to argue with the momentum that English already has in this area ...
November 21, 2008 4:27
@ "What do YOU think, Dear Reader?" :

Nu inteleg nimic

(I don't understand anything)

:P :))
November 21, 2008 4:28
I mean even this blog is in English :P
November 21, 2008 4:28
I disagree that you have to know English to be a programmer. To be a programmer you have to be able to write a good algorithm. Although if you're going to write an API, then your English must be good so that people can understand when they use it.
November 21, 2008 4:28
In regards to Rick (and Scott's reply) I agree that this conversation is about localization in general, and not about localizing the language itself. Feel free to stop reading if you agree but I've elaborated a bit below.

I'd say that localizing everything surrounding the language (documentation, etc...) is very logical. But localizing a language itself (and I'm basically just agreeing with sentiments expressed in a recent StackOverflow podcast) is not very logical. These words may be English but they are language keywords and do not necessarily translate literally in English, much less into another language. I think that once you create a programming language, you've (to a certain extent) branched from the spoken language on which its based and re-defined the meaning of the words for your languages context.

Here is the show note regarding this section of the podcast from StackOverflow Podcast #29


One of Joel’s favorite Stack Overflow questions this week is Coding In Other Spoken Languages. The discussion is great, but it does beg the question — as much time and money as companies spend localizing software, why don’t we localize progamming languages? Joel points out that the Excel macro language is perhaps an exception, as the function names are localized. This is quite rare, but there are non-English based progamming languages out there.
November 21, 2008 4:31
If English speakers can make sense of LISP then there's hope for us all.

I think that translating actual code and library keywords is a recipe for disaster. Matt Campbell's answer, although it may seem ethnocentric, is really the only workable and maintainable solution.

(Never start a sentence with...) But I also feel that comments and documentation (in code & help files etc.) should be readily translatable. In Visual Studio it is trivial to refactor a property into a resource thereby pooling them for easy translation. Other IDE's and languages also support this. It is also not impossible to parse code files and automatically translate comments in them. Perfect - no: usable - yes.

Besides, if you had to speak perfect English to code, explain the presence of the industry in Asia, particularly China & India.

As for Excel - anything that accepts MID(120345,3,1)&"kthx"&8&"i" and returns 0kthx8i (with no error) is bound to be a trouble maker.
November 21, 2008 4:32
Yes every programmer should be able to read English but it is not the problem.

Everybody should be able to work in its native language, even programmers. It's a matter of choice. That's why localization of tools and documentation is very important.

"Thou shall work only in English !" Just try that in France for fun.

BTW I'm French and I work in English most of the time. I consider myself lucky because I chose it. It's not possible for most languages, sadly.
November 21, 2008 4:49
My first language is French and I cannot even contemplate being a developer without knowing English.
It's not only because of the programming languages, it's also because you can Google up much more technical content in English.
November 21, 2008 4:55
I think that you don't necessary need to know English to be a programmer. you can find documentation in your language. But it really helps to learn English even if your not a programmer, for the social aspect. Knowing another language enable you to understand a lot of more content in the web and participate. I can read your blog and comment in it because I know a little English.

It is always better to know another language. but not necessary.
November 21, 2008 5:04
Edsger Djiskstra has already been there, done that:


Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.


If it was good enough for him, it's definitely good enough for me.

November 21, 2008 5:25
This quote is one of the most arrogant and outrageous things I've read in years. Fabrice makes excellent points. It is our duty to make programming accessible to anyone. Discriminating on culture is just plain wrong, maybe even racist. English should not be a pre-requisite and it's quite obvious that the qualities required to learn a foreign language are quite different from those required to learn programming.
Now one of the first languages I was confronted with was a French dialect of BASIC (couldn't find the name) and curiously it was somewhat more difficult than the actual BASIC language. The documentation is much more important to localize. The language of programming keywords is actually quite irrelevant (at least if you use a latin alphabet) as the mapping is made directly between the word and the programming semantics it represents without going through the culturally loaded entity that is the English word. To take a striking example from Douglas Crockford's post from this morning (http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=932), the programming concept of string has nothing to do with its meaning in English. That is no more a problem for foreign programmers than it is for English-speaking programmers. Hell, I'd bet you hadn't even noticed...
November 21, 2008 5:27
Pozwolę sobie nie zgodzić się z powyższą tezą.

(I will allow myself to disagree with the statement above.)

In all honesty, the people who's answers would be most interesting in this context can't understand the question, and this blog in general.
November 21, 2008 5:47
Are we sure the poster who made the "outrageous comment" wasn't simply thinking about how Namespaces and keywords are all in English? We're taking that for granted and wondering about help files, tooltips, tools, etc.

The keywords in programming languages like C# *are* English words. I'm sure I'd be quite annoyed if someone told me if I wanted to write a program I'd have to learn how to use a keyword like, uh, CestLaVie. It would definitely feel weird. In some ways it does seem true to say English is the common language, the Latin of our day, and if you grow up happening to speak it, you're just - lucky, at least as a potential programmer.
November 21, 2008 6:19
Remember, folks, that anybody reading and commenting this post understands English, thus is biased. The comments sampling will never reflect the reality.

Also, we cannot generalize to ANY language, but only to those we know. Thus, I can only say I prefer reading and searching for English technical information rather than French technical information, for the quantity and quality of what I find, and relation to what I see. But other languages may dominate English, how would I know?
November 21, 2008 7:02
@Martin: anybody reading this post *now* understands English, but didn't necessarily always. For example, I started programming before I had a good understanding of English.
November 21, 2008 7:19
As a Persian programmer I totally agree on that I must know English well enough. And let's put it this way: the language of this science / technology is English and what is the problem with that? I mean for example no one in the world - no psychologist - will try to translate psychological phrases to his language or the medical phrases; because he/she will loose contact with the background (the folk, organizations, experts, ...) in his field!

So I think knowing (at least intermediate) English is necessary for being a programmer.
November 21, 2008 7:26
"A programmer who doesn't at least understand English is not a programmer" that's an outrageous statement. That's like saying "a musician who is deaf is not a musician" patently untrue and ridiculous. plus pretty offensive to millions of programmers."
I call BS on the above. The language of Music has nothing to do with being deaf, and everything about reading and writing musical notation.


On the topic at hand - localize the interface/ide all you want, you will still be writing in English when you actually write code.
November 21, 2008 7:29
I suppose perhaps a bit of a dichotomy is in order, English may not be necessary to be a good programmer, but it could be necessary to getting a good job programming, and required to get a job in America/UK. Which is as it should be.
November 21, 2008 8:26
Part of being a programmer is interacting with other programmers. Googling for help. Asking questions on forums. Advanced programmers read and write blogs. And for that, you need a language many programmers understand.
So if your native language is French or Spanish, you can survive without English (and the French still believe their language is the global language). But if your native language is spoken by few people, like Swedish, you have no choice.
Also, if it uses a non-Latin script, you can't use it for identifiers. And if it's written in a direction other than left-to-right, you can't even write comments in it. Even coding "in" French looks quite ugly.
Lev
November 21, 2008 9:41
Keywords in the programming language are almost irrelevant -- there's what, three dozen of them? Regardless of whether you know English or not, you'll know what "if" means in C# soon enough (the meaning is, by the way, different then it is in English).

The problem is the entire universe of IT/software development/CS knowledge and ideas -- books, online courses by leading universities, newsgroups, forums, blogs, conferences, podcasts, specialized websites, magazines, etc. The overwhelming majority of this stuff is in English. Can you live without this HUGE body of knowledge? Of course you can. Is that an obstacle on the path of becoming a better developer? A BIG one. I agree that localizing windows/office UI is a no-brainer for MS. Not having Russian/Chinese/Japanese/German/whatever versions would make those products useless to the large majority of the general public. But translating the entirety of MSDN/TechNet/KnowledgeBase into couple dozen languages? This sounds like a daunting task. And, it also fragments the knowledge -- there are obviosuly brilliant folks in every country, and if we don't make them learn English when they are just becoming developers -- we'll not be able to benefit from their ideas later on (imagine googling for one of the lovely COM error codes, and finding a blog post in Chinese. It might have a solution, but you'll never know...)

max
November 21, 2008 9:44
(It's probably obvious from my writing, but I'll point it out explicitly just in case: I am not a native English speaker myself)
max
November 21, 2008 10:43
> localize the interface/ide all you want, you will still be writing in English when you actually write code.
No, you will be writing in C#, Basic, Ruby, you name it. Not English. The words just happen to *also* have a signification (but most of the time not quite the same) in English.

> the French still believe their language is the global language
One more outrageous, arrogant and disrespectful claim.

Of course it helps to know English, nobody would deny this seriously (although there are excellent developer communities in most countries), but that's a strawman. The original claim was not "it helps to know English if you want to be a programmer", it was "if you don't know English, you're not a programmer".
November 21, 2008 11:06
I think it's safe to say that the majority of the programmers that can't read/understand these posts will disagree with the whole "YouHaveToKnowEnglishToBeAProgrammer" thing, and are biased as well, right?

Or <bold statement>maybe they just don't know what they are missing?</bold statement> ;-)
November 21, 2008 11:09
I am a Romanian and when I started learning programming I knew French quite well and almost no English. I was taught programming in Romanian and the teachers coined funny Romanian equivalents for the corresponding English terms (something like "şir" for "string" where "şir" usually means "line of people or objects").

I recall how much I strove to find a French version of Turbo C 1.0 from Borland and how satisfied I was when I found it - because I didn't know English. I did not know English even when I entered the market and I was quite competitive, like many others colleagues of mine who did not know English well.

But those days are over. Nowadays, if you want to be on top of things - and new things appear every quarter at an accelerated pace - you MUST know English. It is the language of this technology, period.

Can you be a programmer without knowing English? Sure you can, but not a GOOD one, because you don't have access to information as it appears. Without English you have to rely on others to translate the information into a language you know and the localization will ALWAYS lag far behind and cover just a tiny fraction of the information you need to stay competitive. Without English you are simply handcuffed.

One can be smart and potentially a brilliant programmer, but with no English under his belt he might end up just a mediocre one.
November 21, 2008 11:51
Although my blog is in ROmanian, and it is aimed to provide information about programming stuff for beginners, I also consider that, if you do not know English, you can not make a job for living as programmer. More, all programmers from RO that I know are proficient in the "Internet English". More, all programmers that develop are writing code in English (naming functions, variables, classes, etc)
November 21, 2008 12:02
Apparently my first post got lost in the dark dungeons of the interwebs ;-). Which reminds me to take backups.

I don't know where all this is comming from the last few days, but I to made a post about this a couple of days ago Why English is really important to us non-english speakers..

So I think that you at least should have a grasp of english to be a programmer. How else are you going to find your way in it the biggest API in the world called .Net?

And yes MS has done the syntax translation before like I said in my post. Try looking at Excel 5.0 VBA. It makes for very interesting programming if "if...then" becomes "als...dan" in dutch.

And we all know that the trend for the moment is to write DSL's and fluent interfaces for this you either need a good grasp of English or you just guess.

And I think the English speaking community can not judge this like the non-english speakers can.
November 21, 2008 12:05
I think it's crucial to at least be able to read english. How would I be able to understand APIs else? What with documentations and books? It often takes years before they get translated.
November 21, 2008 12:08
"However the documentation, tooltips, interface, etc are all things that could be localized. The question is, should we bother? Should programmers "simply learn English?""

Scott, that's another question from the "Is learning English the #1 thing a Programmer should do (after learning to type)? Can you be an awesome programmer and speak little or NO English?" ones.
I'll take the questions one by one:
I am Greek and live in France. In University in Greece we were taught almost everything in Greek (normal forms, networking tiers, HR etc etc) and now I am in a country where most people use to write code in French.

"Do you have to know English to be a Programmer?"
II can assure you, having many examples, that you can be a programmer with only a minimal knowledge of English, that you rarely use. I've seen it. I've seen tons of code written in French. But, knowing that the interfaces are in English, SOME knowledge of the language is needed in order to explore a framework.

"Can you be an awesome programmer and speak little or NO English?"
Even though I hate English for its lack of structure, incoherent pronunciation and almost complete inability to make an understandable long period (many sentences between a period and the next), I still think that the answer to this question is NO. An awesome programmer at some point will have to publish an interface to be reused outside his country, and he has to write it in clear English. An awesome programmer will need to ask the widest group of forums for some obscure questions, and there are never enough in the home language. An awesome programmer needs to write code that makes some linguistic sense, and mixing an English framework with code written in another language is a recipe for disaster (As anyone who has ever seen code of the type Environment environnement = new Environment(température, elevation); will assure).
I haven't yet met a single really good programmer who doesn't write and read at least good English. (He doesn't have to SPEAK English though. He can still pronounce height "Aeet")

"Is learning English the #1 thing a Programmer should do (after learning to type)?"
English is something people should learn before programming. Until recently, before learning to type too, but people nowadays learn to type at 6 or 7.

"However the documentation, tooltips, interface, etc are all things that could be localized. The question is, should we bother?"
That's another question. Yes you should, because you are not targeted to awesome programmers only. You are targeted to everyday programmers, students who haven't yet exercised well their language etc. Good documentation always is more understandable in the natural language of the reader (and IMO, English is great for computers, but often not grammatically reach enough to make for an interesting and flowing long entry).
Of course, knowing the state of Greek localisation, I just avoid most of it.
November 21, 2008 12:47
I am one of the editors of www.devportal.hu, the Hungarian MS developer community portal.

IMO, the real question is that whether you be a good programmer without being able to find and read all the documentation, tutorials and samples that is available in English - and only in English. And - technically, you can. You can invent amazing new algorithms, put the existing pieces together (if you can find them without English), and learn by experimenting.

But in reality, and in the real business life, lack of English reading skills is a showstopper. We are working on making the most basic tutorials available, but those are only enough to create interest. To go deeper, you have to read and learn - a lot. Rapidly evolving technologies, such as the world of .Net demands a constant learning - and it is so huge, that no living human can know it all. Not speaking English is just like developing without online search and documentation. And no sane business owner would hire someone who has such a disadvantage.
November 21, 2008 12:48
I think English can be useful but it's not a requirement. Most of developers in my country don't know English or their English knowledge is very low.
In my country, Programmers get used to work with English version of an application rather than their own language.
November 21, 2008 12:49
You don't need the English language to be a good programmer, but with English you can be a better programmer and a faster learner.
November 21, 2008 13:26
I know plenty of programmers who can't utter a complete sentence in English but they still write code for a living. Some of them write really good code. Sure, all keywords and namespaces/classes/methods etc in the BCL are based on English words but you can use them without being able to read/write/speak human-understandable Engrish.

That said, Microsoft's "Oslo" MGrammar will potentially open up for sometihng interesting here. How about MGrammar templates that can translate C# code using Thai/Japanese/Korean/Chinese/Russian/Bengali keywords/BCL names into standard engrish-based-C#?

Unfortunately not possible with the CTP version but all documentation I read says "unicode" over and over so I'm guessing that is just a childhood disease in the CTP. (I posted something about it in the MSDN forum yesterday but I later withdrew the thread since I felt it was not justified to bring up that kind of stuff for a CTP release). I hope the final version will be 100% unicode compatible in all layers - that will open up for a whole new group of analysts and programmers: the literally billions of people who read/write/type using symbols and characters not just not-english, but not even using A-Z.
November 21, 2008 13:29
Well, I certainly agree that the knowledge of English is a must for a programmer. You have to deal with a lot of information in English, even if there are localized versions of Visual Studio now, there are still far more information in English than in Russian, for instance. I think the presense of information is the deciding factor. If there are more information in English, then you should learn English, I think.

Besides we live in the world without borders, so your clients or customers can live in another country and speak different language, however English is considered to be the only internation language, even though much more people speak Chinese and Spanish, so it's a reasonable choice to communicate with people from other countries by speaking English.
November 21, 2008 13:43
It is a harsh statement. What I have experienced is that the language you speak doesn’t matter. I have met good programmers, especially from the forums like www.donetfunda.com and www.codeproject.com that dont write or speak good English, but what they can do. It’s beautiful. But we will never run away from a fact that Microsoft languages have English logic inside them , that is why its more easier for a person who understand English to learn faster in the languages. The first thing a non-Programmer will tell you about programming is “IF Statement” that’s English,. But still it does not mean that a non-English speaker cant understand that.

November 21, 2008 13:46
"A programmer who doesn't at least understand English is not a programmer" that's an outrageous statement. That's like saying "a musician who is deaf is not a musician" patently untrue and ridiculous. plus pretty offensive to millions of programmers."

Taking the most famous historic example: when Beethoven became deaf, it didn't stop him from being a composer, but it sure put an end to his career as a performing musician, so I don't think that's a valid argument.
Although I'm not a native english speaker, I'm with the "you don't need to speak english to be a programmer, but it's a big obstacle if you don't" crowd.
November 21, 2008 13:48
I think the main issue here is what do you define as being a programmer, is a programmer just someone who writes lines of code (skill) or does a programmer also need to have communicative skills to be part of a team/understand what the client wants (profession). Back in school we had a guy who wrote absolutely stunning code but had the communicative skills of a brick wall. Not being able to be part of a team, not being able to express himself properly did make him 'less' of a programmer. If your defination of a programmer is just writing code then this guy was one hell of a programmer, if you tried talking to him however...
English is not my native language but untill we get something like the Star Trek's universal translator we as a (programming) community need a way/language in which we can share ideas and information. I think an English speaking lesser (skill-wise) programmer might actually produce better code simply because he has a gigantic knowledge base out there the 'better' programmer doesn't have access due to the language barrier.

Looking literally at the statement: no abolutely not, writing lines of code does not require any knowledge of English what so ever. Practically: if you're not able to understand 80+% of all knowledge out there you need to figure it all out by yourself, making you a less productive programmer for sure.
November 21, 2008 13:52
Someone compared this to greek and mathematics, and I think that comparsion is a good one. Obviously we demand localized textbooks at school. Here in Norway we even demand books in three different nativ languages, even though two of them are so similar that you can easliy interchange them. But never ever would we think about localizing π or μ, would we?

Translate as much of the documentation and tutorials as possible, but leave the language alone.

(Every inputform should include a spellchecker, though.. :-)

-Vegar
November 21, 2008 13:59
I am not a native English speaker, and I think that English is very important for a programmer.
I had to help a friend of mine with some source code written from italians. IT WAS HELL
all the variables were in italian, all the comments were in italian. I was able to understand
the main keywords, but not the actual code. I agree that the spoken language
is not connected with programming skills, but if you deliver source over the globe,
you MUST do it in english, otherwise, you deliver an encrypted shit, it is not usable
November 21, 2008 14:19
Scott,
Microsoft won't localize if it doesn't sell! You should know that there are countries, like Italy, where the Visual Studio sales really start the moment VS and MSDN are translated.
Programming languages are formal like math: you take the symbol (keywords) are something given, so they don't really need translation. Quite different is the user naming.
I too had the experience of reading German written source code (you know variables, methods etc in German); if you look at Chinese names for variables you'll be in trouble finding dots and equal signs, but today compiler permits to use Unicode, and this is a good thing.

Nowadays we still suffer from another problem: Americans programmers. In Europe we are constantly hit by date format bugs of american code. May be one day globalization will be a mandatory study... may be not.
November 21, 2008 14:25
The areas where it is possible to be a programmer without knowing English are shrinking. I would have liked that Russian were that language but nowadays English fluency is a must for a good developer.

The main problem is that all good programming books/articles are written in English. Most of them are not translated. And if they are selected for translation they appear rather late. N+1 edition of the book may be already on the Amazon.com when translated edition Nth is released. Last but not least translation quality is terrible.

Mistakes in translations of technical books are a disaster. Added to the original errors they make it very hard to read the book for a beginner developer. And beginners tend to read books in their native language.

By the way, you just cannot read Draft of C++0x in your native language. And if haven’t seen that you are not a real C++ programmer.


But I have to agree that it is very important for MSFT to release localized versions of development tools. It’s all about market share and owing developers minds. And for kids it is very good to begin having fun with programming without knowing English.

November 21, 2008 14:47
The main idea is right. However it is better to point out that "If you don't know technical English, you're not a programmer."

My native language is Russian / Belorussian, but I have to learn English to deal with the problems more effectively. All the new staff and pre-release documentation are in English mostly. The great amount of useful software are in English and as it was pointed programming languages are in English. I was working with some comp languages with a russian-based syntax. Believe me it was so weird and inconvenient. We get used to English from the very beginning. And in my opinion English is a good choice for computer language. Some thoughts in English are twice shorter than in Russian, e.g. Again I mean technical English.
November 21, 2008 15:02
Not knowing English shouldn't be seen as a negating factor in programming but nonetheless, the language does play an important role. As the lingua franca of science and of a large section of the global population, it just cannot be ignored, especially in a field where collaborative development is a common practise.
November 21, 2008 15:13
I develop on Vista Ultimate the Dutch localized version. Big mistake very big mistake I can tell you. Whenever I get a framework exception and I need to dig deeper into it and I need to Google it most of the time. Bang, I get ZERO hits, big suprise. In my attempt to correct this I installed the Vista language pack. Everything in English now except for the .NET exceptions... duh ! I probably have to thank Fabrice for this? Thanks buddy.

Localization of software is fine (and let keep Fabrice his job) but keep ALL the error messages in English so EVERY developer can at least Google for it. (Or make Fabrice garantee us that all error messages can be Googled with the same result as the English ones).

The statement: "If you don't know English, you're not a programmer" is of course ridiculous. But if you have a good understanding of at least reading English your changes to be a better programmer wil be way higher. Definitely.
November 21, 2008 15:15
I'm Brazilian and I know a lot of programmers that don't understand English, or have a very limited grasp. The ones that want to become good programmers know that they must learn English, simply because the information on programming is shared in English. The other ones, that don't know English and don't learn it, just lag behind.
November 21, 2008 15:17
"Programmer must learn basic English or not"
This depends on programmer's need.

The best thing is bringing this issue here and triggering programmers to learn English and triggering producers to make local documentations or interfaces.

Thank you Scott !
November 21, 2008 15:19
All the non-english speakers in here seem to have a very good grasp of English ;-)
November 21, 2008 16:06
Programmers *should* learn English. But it always better to have a choise not to learn it :)
November 21, 2008 16:08
My thoughts on the subject are pretty simple ... bits are bits. If you can pound em out right I don't care what language you speak.
Gee, kinda sounds like an ad for .NET.
Thanks ... Ed
November 21, 2008 16:23
I think there are 2 reasons why native english programmers don't think, that english is a must - first is political correctness and the other one is the fact, that they were learning programming already knowing english.
English is not my first language and I was programming probably since forever. I remember, that I could read technical articles much earlier than I was able to communicate or read any other texts in English. And I didn't consider english as something that I have to learn - I just wanted to learn something and the only valuable materials were in English.
I don't think you have to spek English fluently to be a programmer - but to be a good programmer, you have to be able at least to read technical stuff.
November 21, 2008 16:26
I'm from Romania, but I think that any average or good programmer should be able to understand, read and write in english, even if only at a medium level..
Maybe somebody who is doing programming as a hobby at home, or as a beginner, can manage with only very basic English knowledge, but for a professional programmer, English it's a must.
November 21, 2008 16:59
A few people have commented here about the problem of non-English error messages not being easily searchable / googleable.

I wonder if in non-English versions of development tools, error messages could optionally be presented in BOTH the developer's preferred language, and in English, side-by-side?
November 21, 2008 17:21
SDKs, API documentation, samples, tutorials, training materials.

If those were readily available for non-English folks - one for one - then it is not necessary to know English to program.

{
i = j++ / (x + v);
}


that's not english, yet I am ok with that.
November 21, 2008 17:27
All programmers need a community. Whether that community speeks English is irrelevant.
November 21, 2008 18:15
hi ,
English is not my first langage nore my prefered but
most of ressources for programers are in english so
we're obliged to understand a minimum of English to achieve some job using any public lib
November 21, 2008 18:15
English is the lingua franca of the programming world. For most of the new stuff the example/books/tutorials are all in English, other languages trickle in later because they get translated from English to something else.

That said you cannot program and live in the US/UK/AU/CA and not know English, how will you read the requirements? This is not as important if you live for example in the Faroe Islands and code for a company that just does internal stuff. The moment you have to interact with a foreign entity it will most likely be English!
November 21, 2008 18:18
I am from Ethiopia and it's very hard being a programmer without knowing/understanding English. One cannot find programming related materials in Amharic; main reason for this is not having equivalent words in Amharic, so that you usually end up using English after wards.

If finding resources, documentation, books or articles is difficult in your language then learning English is a must.

The main challenge though is using frameworks which have little/no support for your country/culture; in that case you will be forced to re-invent the wheel.

We had a project which used Amharic as a means of input and UI interface; we ended up developing our own implementation of EthiopianCalendar, currency, formatting, which came close to implementing a new culture.(Project was in .NET 1.1 so we were doing many hacks to get it working like selecting another culture for building satellite assemblies)
November 21, 2008 18:19
I am from Ethiopia and it's very hard being a programmer without knowing/understanding English. One cannot find programming related materials in Amharic; main reason for this is not having equivalent words in Amharic, so that you usually end up using English after wards.

If finding resources, documentation, books or articles is difficult in your language then learning English is a must.

The main challenge though is using frameworks which have little/no support for your country/culture; in that case you will be forced to re-invent the wheel.

We had a project which used Amharic as a means of input and UI interface; we ended up developing our own implementation of EthiopianCalendar, currency, formatting, which came close to implementing a new culture.(Project was in .NET 1.1 so we were doing many hacks to get it working like selecting another culture for building satellite assemblies)
November 21, 2008 18:22
I don't think you need to speak any language specifically well to be a good programmer. You do need to know your audience, the business objective and communicate well with your peers. If a project is to span borders it needs to be localized not only in language but in business differences too.

I have worked on projects with a team in India, Guatemala, and the Philipines. To me the programmers were just web, database, and financial. I was the Senior guy that could talk to the web guys and the db guys. We all got along and the project was done on time.

None of the programmers on that project spoke good english including this Hoosier. ( I'm really a Buckeye, I just live in Indiana )
November 21, 2008 18:24
The simple fact is that most of the technical terms and phrases are in English anyway. The translation attempts are usually tedious, nobody uses them and are a huge problem in writing standard code...
After I picked up the basics in the elementary school (English or German is thankfully a required class in elementary/high school here) the way (and the reason) I learned to read English is trough documentation. After that I spent some time on the forums and now it's quite natural and I can (hopefully) convey the message I want without a problem (most of the time). Point is that the whole process was parallel to my learning how to program, and I don't think it was slowing me down that much.

I think it's futile to try to work as a programmer without knowing the basics of English, as globalization process progresses and programming jobs get sent all around the world there simply has to be a standard since a application developed by a company in Germany for eg. might be transferred for maintenance in India.

I think the goal is to write clean and maintainable code. English has already been accepted as a standard and there is simply no point in changing that, so why encourage bad practices at the cost of lowering the entry point for new programmers ?

One option I would like to see in VisualStudio is spell checking turned on by default in comment.
November 21, 2008 19:06
I read an article about people who speak the same (non-English) language still using English to talk about technical topics! Because it's better suited to it.

Next time I see "thread" (as in parallel processing, or as in "forum thread") translated to Spanish as "hilo", I'll take my eyes out...
November 21, 2008 19:13
Like it or not, the language of programming is English and will probably remain that way...although
programming can be done in other languages that are based on the A-Z, 0-9 characters sets
(Japanese, Chinese and others like it are probably not going to be supported anytime).

I've dealt this code written by Italians, who named everything in Italian. It took a little extra
work on my part to figure out what the algorithms were, it wasn't impossible. A good developer can
deduce the algorithm.

So, while one can be a good programmer and not know English, it's going to be much more difficult, not
just for the developer (all documentation in English), but for subsequent developers who have to then
modify/maintain their code...but if the code is too difficult to maintain, it will get scrapped and recoded...

This situation is not that unique...I believe English is mandated for airline pilots...although for much
more serious reasons.


Rod
November 21, 2008 19:23
I take the quote "If you don't know English, you're not a programmer." differently than most people here. Of course I don't have the context to know what the author really meant, but I know what I would mean if I said it. To me, a fluent knowledge of English is an absolute requirement when writing code meant to be read by English speakers. Code isn't just for the computer, it is for other developers. It is false to say that we are only writing in C#, we are writing in English C#. I have far too often found code written by non-native English speakers to be unacceptable due to an inability to name classes and methods appropriately and to organize their code properly around those ideas. I am not saying because they can't speak English fluently they can't organize code, but rather the organization they come up with doesn't make sense to an English speaker. So in that sense, these people who "don't know English" really can't program in English C# or English with any other programming language.

All that being said, there are certainly incredibly intelligent people who don't know English and I am sure they can program. However, they can't program in English, they can program in their native language (all class, method and variable names in their language even if keywords are not). I think that brings me back to the Edsger Djiskstra quote someone else mentioned:

Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.


Jeff
November 21, 2008 19:55
My personal opinion is that you don't really have to speak and write in English, but you definitely have to read it.

Books, webcasts, online learning, articles, communities, conferences are just much better in English. When localized versions of these appear - technology they describe is already not cutting edge.

So, if you don't know English you stay behind.
November 21, 2008 20:36
I blogged on this because I didn't feel like a response would be enough:
http://www.tigraine.at/2008/11/21/you-have-to-know-english-to-be-a-programmer/

But here's the main message of the post:

I am from Austria – so my native tongue is German. There should be about 100 million people speaking that language and so it’s rather natural that there are many sites discussing programming topics in German and also there are many books that get translated.
So, while I know that you could be a rather successful programmer in Germany/Austria without English, I really believe it’s utterly impossible to be a good programmer without being fluent in English!

Why? Simply, because being a good programmer is not about knowledge, ability or technology but about your ability to acquire even more knowledge and constantly improve and refine your skills.

And you really can’t do that if deny yourself access to 90% of the internet’s resources. You’ll miss out on great articles from people like Scott Hanselman, Ayende Rahien, Miško Hevery, Rob Conery, Carl Senguin and many more who have contributed great articles that have influenced my skill directly.

Not accepting that there English is the predominant language in software development only fragments the community and hinders sharing of knowledge.
November 21, 2008 20:52
As I commented in your other post on the subject, I think programmers should know the basic English syntax used in keywords and framework functions. Imagine trying to program/read something like this in Italian:

perogni(Biscotto p dentro DammiDolci()) { Piatto.Appoggia(p) ; }

Then, imagine it in a language Foo:

sdfs(Bsfth p ou GarbTyower()) { Lsqve.Nsef(p) }

Then, imagine it in katakana :)

As a plus, English will help you a lot in discussing things with other programmers worldwide and googling for information.

BTW, the real code would be:

foreach(Cookie p in GetDesserts()) { Dish.Put(p) }

...yes, it's 6pm here, and I'm quite hungry :)
November 21, 2008 20:52

How many English speaking programmers can follow this code, and predict function, without Google and a bunch of time deciphering?

-------------------------

name "vga"

org 100h

jmp code

w equ 10
h equ 5

code: mov ah, 0
mov al, 13h
int 10h

mov cx, 100+w
mov dx, 20
mov al, 15
u1: mov ah, 0ch
int 10h

dec cx
cmp cx, 100
jae u1

mov cx, 100+w
mov dx, 20+h
mov al, 15
u2: mov ah, 0ch
int 10h

dec cx
cmp cx, 100
ja u2

mov cx, 100
mov dx, 20+h
mov al, 15
u3: mov ah, 0ch
int 10h

dec dx
cmp dx, 20
ja u3

mov cx, 100+w
mov dx, 20+h
mov al, 15
u4: mov ah, 0ch
int 10h

dec dx
cmp dx, 20
ja u4

mov ah,00
int 16h

mov ah,00
mov al,03
int 10h

ret

-------------------------

-------- Now Put in English Comments: --------
name "vga"

; this program draws a tiny rectangle in vga mode.

org 100h

jmp code

; dimensions of the rectangle:
; width: 10 pixels
; height: 5 pixels

w equ 10
h equ 5

; set video mode 13h - 320x200

code: mov ah, 0
mov al, 13h
int 10h

; draw upper line:

mov cx, 100+w ; column
mov dx, 20 ; row
mov al, 15 ; white
u1: mov ah, 0ch ; put pixel
int 10h

dec cx
cmp cx, 100
jae u1

; draw bottom line:

mov cx, 100+w ; column
mov dx, 20+h ; row
mov al, 15 ; white
u2: mov ah, 0ch ; put pixel
int 10h

dec cx
cmp cx, 100
ja u2

; draw left line:

mov cx, 100 ; column
mov dx, 20+h ; row
mov al, 15 ; white
u3: mov ah, 0ch ; put pixel
int 10h

dec dx
cmp dx, 20
ja u3

; draw right line:

mov cx, 100+w ; column
mov dx, 20+h ; row
mov al, 15 ; white
u4: mov ah, 0ch ; put pixel
int 10h

dec dx
cmp dx, 20
ja u4

; pause the screen for dos compatibility:

;wait for keypress
mov ah,00
int 16h

; return to text mode:
mov ah,00
mov al,03 ;text mode 3
int 10h

ret

-----------------------

So this is 8086 Assembler source (for everyone born after 1985), one of the earliest languages and also one of the hardest to "read" without extensive commenting (and knowledge of these magic things called "registers" (again for the post-85'er programmers)).

Perhaps non-English coders should focus on Assembler since the link to English is VERY limited, and in the end their code would run circles around any RAD-created bloat. It just may take them 3-5 years longer to finally release their application, and it'll be Ugly. :)

But even still, it's easier for an English reader to figure out that "MOV" means Move, "JMP" means Jump, etc.
November 21, 2008 20:53
In college we learnt Algorithms and Data Structures only programming in pseudo-code with pencil, paper and flow diagrams, that was in 2001. Using Pascal was just an option to test the algorithms and English was not required. Programming languages have a few English words (IF, FOR, DO, WHILE, EXIT, SUB, FUNCTION, etc) and learning them doesn't mean learning English. I think English becomes needed when using development tools, frameworks or libraries wich doesn't have a traslated interface or documentation. So yes, I believe you can be an awesome programmer and speak little or NO English.
November 21, 2008 21:04
In Oracle all messages have an error number, that makes it possible to Google the error.

for example:

SQL> select 1/0 from dual;
select 1/0 from dual
*
FOUT in regel 1:
.ORA-01476: Deler is gelijk aan nul.

Google on 'ORA-01476' and I can read all I want to know.
November 21, 2008 21:12
I've spent a lot of time around physicians and researchers from every country in the world. When two of them interact, there is usually a handshake moment where they will downgrade the language that they are speaking until they reach a common language that they can both feel comfortable communicating with.

For instance, I have heard a doctor who speaks French as their first language and a doctor who speaks Portuguese default to "standard" Spanish -- but I would say that 90% of the time, they fall back to English.

Since most scientific journals are published in English, if you are going to publish the results of a study, you are going to need to write in English.

I would never go so far as to say you couldn't be a good programmer without understanding English but I think it would be much harder to expand your skills if you couldn't take advantage of the huge amount of published literature.

Understanding English also makes it possible to contribute back to the community and as you know, we all stand on the shoulders of each other.
November 21, 2008 21:12
I think this discussion fails to define what minimum criteria are to be a "programmer". At the binary level, someone could generate programs with no knowledge whatsoever of english. I'm sure there exist translated documentation of the x86 binary opcodes for most languages. At this level they would not even have to see the english based mnemonics that assembly contains. How many truly ground breaking programs come out that were written in binary opcodes though?

Even assuming that someone can get past or localize mnemonics and key words to the point where they can program in assembly, c, c++, etc. they will not be able to rely very heavily upon any framework or api, which is a big hamstring unless it is thoroughly documented in their native language, and each update to those apis or frameworks would need corresponding updates in their translated documentation.

Ask yourself this, could Linus Torvalds have created Linux from scratch, or without speaking a lick of english? The answer is obviously no since he borrowed heavily from the work of others.

Point is, programming has been around for awhile, and great works borrow from the accomplishments of others. If you're going to develop great products or innovations, you'll need to speak the language of the old work.
November 21, 2008 21:21
It is not the language itself, when you write code. You do not
write it for the CPU, it does not understand the code you are writing.
You write it for the you and the others that will need to work with your code.
It is not the programming language itself, its the whole
programm, comments, structures, variables that must be understood
from the people. I do not have nothing against the other languages
but if you want to write professional code, including the right names of
the actions the right names of the functions etc. you must do that in english
otherwise, this code will stay on your PC or in your language community.
Why do you bother to write it at all than???

I am not a native english speeker, but I think that trying to translate the programming in everithing other than english is stupid. I am working in a German company, I know german, but it isn't my mother language.
I have to use a VStudio in german and I just can not get used to it, I can not even get used to the windows OS in my own mother language. What are we talking about at all It is not the knowledge, It is windows not Fensters, it is cut not Ausschneiden etc.(I use german example because of the PC encoding, I have no cirilic font around here)

For me this is just the way it is, and just the way it has to stay.
November 21, 2008 22:06
i think that when you learn english you can upgrade your skills after learn good tech articles, lists and etc, when i start to program i already know english (a few and basic). so when you get the error and try to find a answer always the better solution comes in a english article or forum. Here in Brasil, if you want to become a nice programer you have to learn english first!

Cheers!
November 22, 2008 0:56
Interesting question. Other questions worth considering:

Do you have to be a Programmer to know English?
Do you have to know a Programmer to be English?
Do you have to be English to know a Programmer?
November 22, 2008 1:29
As a native English speaker living in the Netherlands (where a lack of fluency in English might be regarded as a sign you aren't educated), I would like to note that here there are two kinds of software company: those whose working language is English, and those whose working language is Dutch. Maybe I'm biased, but it seems like the Dutch-speaking ones are second-tier. Part of the reason for this is the large number of immigrant programmers who speak English in addition to their mother-tongue. I've worked with Ukrainians, Lithuanians, Romanians, Israelis, Germans, Swedes, Russians, Indonesians, Indians, Pakistanis, Australians, South Africans, French, Spanish, English, Scottish, Irish, Canadian, US-ian ---- oh you name it.

Meritocracy comes from not having to limit your recruitment to speakers of a single language. The fact that English is the de-facto world language enables that.

p.s. Why is it that although Dijkstra famously opined about the mastery of one's own language, all his most important writings were in English?

p.p.s. Having said that, I wish my Dutch was better, and I try to practice it as often as possible, even though I could get away with English-only in everyday life too. Mijn Nederlands is niet echt slecht, zeg maar redelijk, maar beter kan altijd.

November 22, 2008 2:01
I don't think that reading/writing english is required to be a programmer. I think that it helps an awful lot if you know how. Subsequent developers will also probably appreciate "English C#" or "English Ruby" or whatever.
November 22, 2008 2:37
I actually consider programming more of mathematics and less as a language. And I think English is not the best language to learn maths with, simply for the reason of phonetics of the numbers in English.
And truly, I've seen languages written with French or Japanese, only the 'if' 'else' are in English. It makes is less likely for non French speaking or Japanese programmers to take over the codes. But it is only convenient if the code needs to be portable to English speaking coders. It doesn't make them less of a programmer.
As to not knowing English makes it harder to keep up upgrade skills, I also lament the fact that I don't know all sorts of languages and am probably missing out of all the non-English discussions about programming out there. If the skill is important to have, it can certainly be found translated.
November 22, 2008 3:46
>To say that if you don't know English, you're not a
>programmer is a perfect example of ethnocentrism
>in this country

There's nothing inherently wrong with "ethnocentrism".

Most pioneering computer development was done in the US, an English speaking country, and so most of the material and coding languages are in English.

Latin is used for common scientific terms all over the world. Can the scientific community be accused of "romacentrism"?

English is my fourth language so please don't accuse me of being "anglocentric".
November 22, 2008 4:28
I think its fair to assume that everyone who reads and comments on this blog speaks a fair amount of English, so I guess we are not the ones to ask :-)

But I do remember the time where I had a Lambda 8300 (2k of RAM!), and the only way to load a game was to enter some lines of BASIC code from a sheet of paper into it, and enter RUN. I didn't know any English back then, but started making my own games anyway. Bottom line is that you just need to learn some keywords, not a whole new language. Combine that with some sense of logic, and you are a programmer.
Does anyone speak like they write BASIC ?
If Not Wife Is Nothing And Beer Is Nothing
MessageBox Show "Honey go get beer"
End If
November 22, 2008 5:32
Someone earlier posted

"I've been thinking for years that some form of programming Esperanto would be really useful... I know this idea is grossly impractical on a dozen levels - I mean, look what happened to the real Esperanto!"

I doubt that the poster knows enough about Esperanto or human language in general to effectively discuss such issues. For one thing, nothing has "happened" to Esperanto, at least no more than has "happened" to Hebrew.

As for a practical analysis of Esperanto for computing, I agree that Esperanto would not be a good basis for a programming language, due to morphological difficulties. Lojban would be much more useful for a computer, but less useful to people--an unfortunate but nearly constant trade-off.

There can be no completely neutral human language, because the variety of language features is too great. I guess the best approach to designing an "international" programming language would be to create a committee of people who can think like computers, but even the result of this would be far from perfect.

Incidentally, I (a native English speake) believe that English is very well-suited for some aspects of computing but horrible for many others.

</rambling>
November 22, 2008 6:23
Not to be a programmer, but to be a good one I do agree.

All the god documentation comes first in English, EUA is the Rome of programming.
All the god blogs are english, all the big companies, so are the majority of google results.
All the good books on the subject are english and they are ( at least in portuguese-br ) already
old when translated.

English is also a common language to the majority of people who are native from two different idioms.

The best developers that I've worked with spoke or could read english efficiently.

I'm from Brazil by the way ( but you must have noticed by the spelling errors).
November 22, 2008 16:46
I agree with Robert Höglund's statement, altough the language of my Windows version and all kind of software on it including VS is German. I think it has something to do with feeling comfortable with it, which I don't with an English interface even though I think about a switch to English every time I reinstall one of my computers.

But English is without any doubt the language which rules the (programmers) world. My partner and colleague (a German, too) even speaks better Russian than English and has some difficults by learning programming with C#, .NET and so one because he is limited to German resources.

By hiring someone for my company, suitable English skills would always be required even with the background of failure with my colleague.

Best regards from Nuremberg, Germany
November 22, 2008 22:08
Hi I'm from Ecuador,South America ,first at all English is a West Germanic language originating in England (http://en.wikipedia.org/wiki/English_language), second hey! the Republic of China is first in the list of the countries by population , so lets speak Mandarin "I want it to be useful for the largest possible audience" (http://hype-free.blogspot.com/2008/10/should-we-use-english.html second thought) , to be a programmer first you have to be a enthusiastic , then study and always learn to code better.

English is necessary but not makes you a better programmer.
November 22, 2008 23:06
Hi!

I'm a programmer in Israel. I happen to be English, but I work with a mixture of Israelis and Russians.

I didn't read through every single post above. However, I believe the question here is: should we translate help files, documentation, etc. for non-English speaking programmers?

To answer, the programmers I work with are all willing to learn English, they are willing to type code in the currently available languages, and I haven't ever heard anyone ask why there isn't a coding language that is not in English (or English based).

What they do look for, are resources in their native language that can help them be better programmers. That is, they want the native language because it is easier for them to grasp the concepts mentioned. Once they have the (at least) the basics, they are quite capable of finding further information, even if this requires using resources in English.

So basically, English is not a problem, but having resources in one's own native language is a great help.

Schmuli.

P.s. As an aside, the college (in Israel) where I studied programming had an emphasis on teaching only in English, so that all the workbooks and exercises where in English.
November 23, 2008 3:29
It's not a must, I've seen really good programmers (not great) who can't read english, but it's a huge benefit, and not learning english would be stupid for any programmer.
November 23, 2008 15:33
On one hand, I think that translating documentation into different languages is a good idea. Although we are probably over-estimating how useful the help files can be! Joking aside, if there is a culture where people read in their own language then perhaps forums will be created also in a native tongue. We may find that there is a solution to an problem we have, on the web, but not one that we can understand! We would be minimizing the amount of accessible information that we could use.
November 23, 2008 17:07
Hi everyone,

I'll give you my point of view as French Student.
I started learning Computer Science about 4 years ago and at that time, my english skills were not that good (I hope I don't talk that bad now ^^' ).
I tought it's a good thing that programs are localized because if I had to be english fluent when I started learning, I would have lost a lot of time.

But it's true that now, few years later, reading documentations in English or in French makes no difference to me. It's just a big help when you start. When you're a professional, I consider it as a requirement!
November 23, 2008 22:20
If naming variables meaningfully is that significant, so yeah .. I agree with that phrase .. You have to learn English to be a programmer.
November 24, 2008 0:03
Although it is interesting to consider whether or not a person should 'know English' to be an effective programmer, to me a more interesting question is what features of non-English languages are not present in computer languages.
November 24, 2008 1:55
Interesting topic Scott

Think, learning english should not be a mandatory to be the best programmer. But it does help like Robert suggests while googling error messages and it will defenitely help to gain knowledge in the field because most of the bloggers(atleast the ones I follow) in the .NET community blog in english and only very few bolgs like ScottGu one is available in other languages.
November 24, 2008 6:55
This is like a conversation I've been having at the school ... "white" people are often all concerned about "diversity" percentages and numbers, whereas most parents "of color" just want the best school for their kids ... it plays out again and again in conversations and assumptions ... and listening to well-meaning "white" people make a big deal about desiring "diversity" always makes me wince because they are defining what "diversity" means ("everyone except us") ...

... if non-native-speakers are feeling put upon, that is something to listen to. If non-native speakers are OK with having learning English as a stepping stone or a major accomplishment to lift themselves to whatever level ... well, I think it's a uniquely American stuck-up-ness to assume that (other) people ("who don't have our advantages") should have life made easy (by us). Very WASPy assumption that we Know What's Best. Not that we should deliberately make life hard, and not that we cannot reach out and help people who ask for it, but to assume people want or need help is denigrating, within our society and worldwide.
November 24, 2008 10:10
English does seam to be the lingua franca of software development. I think it would be un-realistic to attempt to change this but I can't agree with the statement that one must be an english speaker to develop software. A developer should be judged by the quality of code and knowlege contributed to the community

Google does not discriminate, good code and helpful contributions will quickly find their way to the masses regardless of how they are expressed. Any contribution made to the collective knowlege of developers and people everywhere can only be a positive thing in my opinion.
November 24, 2008 12:00
for the most part, development just makes use of keywords, I live in South Africa and have a lot of Afrikaans friends who are awesome developers but their spoken and written english is terrible!
November 24, 2008 12:03
I think English is a VERY important language for a programmer, a programmer doesn't only need to code, he has to make some documentation, put some useful comments in code plus most importantly he needs to communicate with the client to get an idea what actually client wants in his product.

We all know that getting feedback from a client is no fun, "Zero Fun to me" and it only adds to the problems if you don't understand the language client speaks, so yes i being an offshore software engineer who needs to talk to the clients and developers in US and UK feel that i only wish i could be better in my English, even if its not entirely about programming, it does feel bad when you don't catchup a funny joke or phrase in group discussion in Skype :)
November 24, 2008 15:31
I'm from Argentina, and own a consulting company here.
I can tell from experience (and from our vast majority of customers who are from outside the country) that not knowing english seriously limits your job market, if not your chances to grow within a company. Being able to communicate with customers at least in basic english is a serious handicap.

Also, it's a serious disadvantage when you can't comment/document your code in a language your customer will want to do code-reviews in. Naming methods and classes in "spanglish" looks very unprofessional and can cause a bad impression on the customer even if the actual behavior/code is a work of art.

Reading and writing english is more important than speaking, but again, in a world where globalization is a reality and customers can be from wherever in the world, where english has become the common denominator for communicating, I say you'd better get good at it.

(not that you won't find work on some smaller local shop developing apps that will only ever be used in your country and where your career ends at your country border...)
November 24, 2008 15:32
NOT 'Being able to communicate ...', that is
November 24, 2008 21:11
My statement is the following:
People who do understand English have temptation don't bother about algorithms and programmatic concepts only because they able to recognize certain words in a program text. This is a big source of bad programmers.
Disclaimer: English is my second language :)
November 24, 2008 21:38
Just to make it clear.
That drawback is incomparable to all advantages which gives you understanding English.
November 24, 2008 23:52
2¢ for anyone still reading...
Most (if not all) of the major thinking in computer science has been and will be translated into many languages, even if it's not verbatim translation of a publication; the information will be disseminated.

If you write software professionally for an entire career and never come across libraries with namespaces/class names in English, then you are the exception that proves the rule - simply because English is so pervasive in computing today.

Dominant languages are the result of dominant cultures throughout history. Chinese, Latin (Romans), Greek, French, Spanish, and English have each been languages of choice for the arts and sciences. Is it ethnocentrism to suggest that in order to operate within a dominant culture that speaks a different language?
"When in Rome..."
tb
November 25, 2008 11:07
Several commenters have mentioned having to maintain code written in Italian but none of these tried to imagine what it feels like for an Italian who doesn't speak English to read code written and commented in English.
So should you speak English to work efficiently with English speakers? It sure helps. But you should also speak Italian to work efficiently with Italians. Maybe *you guys* go and learn Italian? This is actually quite irrelevant and is true of all trades, not just programming. And again this whole thing is a strawman as the original quote was "If you don't know English, you're not a programmer".
This only further shows the self-centered inclination of many Americans who won't even try to learn about anything non-American.
It would be a much more important improvement to the world if all American programmers learned about localization and globalization than if all non English speakers learned English.
November 26, 2008 1:58
Well, I guess that it's really hard getting material on new stuff when you don't know english...But saying that you must know english in order to program is a little too much...
November 26, 2008 2:19
I'm not sure if English makes you "a programmer" but it definitely make it easier. When I started to program a few years ago I had some problems with my English, I was 17 and I’m not a native speaker, but syntax in programming languages such as C#, Java, etc is not that complicated, programming languages have a limit amount of reserved words and if you search the meaning of those you don’t understand in a dictionary, you can handle it.

The problem is that if you grow up, refuse to improve your English, and became a professional developer without understand technical documentation in English, you are in hot water!
November 26, 2008 15:21
Knowing english does not make you a good programmer.

Knowing english helps you to understand the tools made by english people in a microsoft (us-american) dominated market. Most programmers will never know, if there are useful russian or arabic tools, because they ignore them.

You have to understand the people you deliver your product to too. I believe, keeping yourself in touch with the community using your product is more important than being the king of programming gadgets.

November 26, 2008 18:19
Programming languages were designed to aid the programmer. Machines themselves speak numbers, in fact just binary. Given that angle, it really doesn’t matter what language you speak as long as you speak the machine’s language. In my book, that makes you a hell of a programmer! ;)
November 27, 2008 13:18
Different professions have their own jargon: you can make a hell of a dish, but to be identified as a truly professional chef you need to understand *kitchen French*, talking to another medic - or proving yourself to your clients that you have education in medicine (as I sadly found out) you need to throw at least a few words of *medical Latin* even if the client doesn't clearly understand what you are saying. By the same token English is the de facto language of computing: you can get by - and be a good programmer - without it, but to be recognised as such by large businesses, I'm afraid you'll have to know enough of the lingo to communicate with peers and impress your bosses/clients - even if they all ever speak the same language as you...

And why not - like jargons in general, programming language is not exactly a proper language - only limited amount of words are English (which doesn't have too many suffixes and change drastically the way it looks because of it - as in some languages), instead of binary - and I would think documentation or variables can be of any language as long as it is understood by the audience. I mean, just the same way as a non-English speaker may have to look up the meaning of a variable written in English, in theory at least, it should be just as easy to the other way round...

But I think that when learning to program, it will be much easier to understand the concepts if the learner can get training/read books in his/her native tongue, rather than trying risking misunderstanding of the concpets because of poor knowledge of the language - not being able to do so, might put off someone with real potential. Instead, anyone who is bitten by the programming bug or wants to become a good programmer, will soon learn English by his/her own volition, because of the advantages it brings. Even though I am sure there are many forums in other languages (Japanese, anyone?) which at least give the explanation in local language, even if the example code is written in quasi-English of some programming code.

And talking about having to use localised GUIs: someone here complains having to use Dutch version of Windows! Well, of course it feels odd but it is meant for users, after all, who are not all professionals - not for programmers! Besides, Windows is the same underneath whatever the GUI language: I just came back from Finland, where I downloaded and installed some downloaded drivers using device manager in Win 98 and did some basic house keeping for a retired couple. Now, I have not used Win 98 for zonks, I have never heard of the terms in that language before and I don't even have a job in IT (i.e. I'm your average home user) but I had no problem with the processes (e.g. 'disk cleanup' becomes 'organise' but nevertheless, the button is the same, in same place), so to me, for a IT professional complaining having to use a different language version only shows inflexibility of mind: I suggest an avantgarde art or acting course. ;-) However, the elderly couple's life would be without the benefits of a computer if there wasn't a local version, so MS has got something right.

I do admit that I had no idea of some of the programs that were installed in my Korean boss' computer but I had no problem of finding MS Word because the logo was still the same (though writing with Word, especially editing text , that was set for a user of Arabic - I changed the font to a western one - with text appearing from right to left was quite odd at first. I got used to it, after I sussed it out in couple of hours though: I have the advantage of being dyslexic!)

December 01, 2008 3:34
Who knows english knows what is happening. Who doesn't know english know what happened, but sometimes we just wanna know, it doesn't matter when. :-)
December 02, 2008 14:37
I distinguish between localizing mainstream software (Windows, Office,...) which is definitely a must-do and developers tools. I really prefer using English versions of Visual Studio, VSS, ... than the French ones: it's far easier to find information about an error message on the web when using English versions... Unfortunately, my .NET framework install is a French one. And when I get an exception trace with French messages, I have to try translate it back to English (based on the knowledge I have of the underlying classes and methods, I usually manage to do it) so that I can find information on it on the web...

But I agree that some developers may prefer a localized version of their favorite tool.

What I really hate (and doesn't seem to exist anymore apart from WinDev - which is a French RAD) is using a French programming language. VBA used to exist in a French version (Excel 5, Word 7, ...) If EndIf becoming Si FinSi, ... Awfull!

When I'm coding, I trying to use English names for classes and methods (and sorry for British people, but I'm using the american syntax: simpler and more a standard), and I even xml-document in English (well, just modifying ghostdoc text). Not because I'm that fond of English, but because :
1. my code may be read and used by non French speakers, and now English has superseded Latin as a "Lingua Franca".
2. I like cohesion, coherence. And so, I try to have my code and documentation look as much as possible at what already exists in the .NET framework and in MSDN documentation. Even in English, I try to use Microsoftian idioms: "Gets or sets..." instead of "Obtains or sets..."
3. English language is much more suitable for programmers (and programming languages) than French. Because of the fact English sentences are built, it's so easy to even generate English doc (ghostdoc is really good at it, and I think it's engine is only a big regexp switch...) or names (I will choose my database table names just in a way so that LinqToSql will generate correct names). At the opposite, French is not suited at all for these tasks: it is far more verbose than English, adjectives can be anywhere in a sentence, you have to place plural and feminine marks on them, plural rules are very complex, imperative and infinitive forms of verbs are different, ... A nightmare, if you want to have something coherent.)

When seeing "French" code, I have a strange feeling I can't really explain, maybe due to the fact I'm using my own language to speak to the computer. It doesn't seem natural to me. When using English (well rather the very little subset of English computers recognize) I don't have this feeling. I suppose English speakers may feel the same way when they write foreach or goto, but to me it seems much more natural (and readable) than PourChaque and AllerA...

So maybe you don't need have an English literature PhD to be a good programmer. But I'm sure it certainly helps knowing a bit of "Programmer's" English if you ever think you'll have to share some code or documentation.

PS: Worst of all is mixing languages in your code (even if sometimes you can't avoid it...) I definitely hate GetFacture or InitializeMoteur (Facture is invoice and Moteur is engine...).
December 03, 2008 23:17
I don't agree that you have to know English to be a programmer. I would say that it does make it easier due to the multiple reasons that people mentioned like a lot of the information available is usually in English. However, I think that if you can follow and understand code then you do not need to know any specific written or spoken language. The fact that comments make understanding what a piece of code does or why someone did it easier there are plenty of translators on the web that could possible change whatever the comment is in to whatever language that you need it to be in. Personally I rarely work with source code that is commented or where the comments make sense, so I have spent most of my programming life being able to break down programming languages and following the flow of a program to understand what is going on.

Being able to communicate efficiently with your team whether it is an English speaking team or a non-English speaking team is more important and better for the program development then forcing the development and project management team to saying that everyone has to do something specifically. There are exceptions to the situation however where teams will need to find a median to communicate, but I think a team of English speaking programmers and non-English speaking programs can work very efficiently.

I guess to me a Programmer is someone who can write syntax in a common way to allow communication and understanding by other Programmers.

My thinking might be way out in left field, because of how I learned how to program and how I still learn, but I guess that is why it is great that everyone can have their own opinion.
December 06, 2008 8:14
What I thinking ?
Tomorrow I'll kill my self.
December 08, 2008 2:32
I'm Dutch, and have mixed feelings about this. On the one hand, yes, you're able to benefit from a large development community if your English is good enough. On the other hand, look at the numbers. Pretty soon there will be more Chinese developers than American ones. Nothing really stands in the way of putting up good development community sites in local languages - especially on the beginner and intermediate level. On the advanced level, however, I feel that besides learning advanced development skills, learning at least some of THE lingua franca of computer science is a must.

As for the programming itself:
I have worked at a company where policy was to have all documentation, comments, filenames and identifiers in Dutch. To my surprise, that actually works. Most significant advantage: concepts you talk about with the local "business", ie the non-developers, are reflected 1:1 in the code, without dubious translation. Likewise, the mapping between elements in the code and elements in the (non-english) user interface is easier.
Obvious downside: not being able to outsource to India or ask colleagues from Spain to help out. And that is precisely the reason why all other companies I have worked for insist on using English in the programming environment. And I tend to agree here.

Ofcourse, it must always be kept in mind that code is something entirely different than user interfaces. In general, I'm all for localised interfaces. But to keep things google-able, and supportable by the helpdesk, user-visible numeric error codes are a MUST in any multilingual or localised software. I workend in Belgium for a while and got pretty angry with all the french language error messages.

Localised programming languages that all compile to an intermediate language (like msil or java bytecode)? Heck, why not. Might be good for educational purposes in areas where english is really not on the curriculum...
Personally, I feel localised documentation and tooltips make more sense in this case.

For all of you native latin speakers out there, there's already a perl module that will allow you to code perl in latin, using case endings instead of braces and brackets, and verbs instead of operators!




December 19, 2008 11:15
I've seen excellent programmers that don't speak English.
I've also seen not so excellent programmers excel at English skills (non-native English speakers).

As somebody said before, knowing English does help a lot but it does not discriminate between programmers and non-programmers.

Variables can be named significantly and easily understandable in any language, as long as all programmers that set their hand on that code speak that language.

January 03, 2009 19:56
I read your post and was inspired to write a similar one regarding the use of Indian languages for programming.

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.