Do you have to know English to be a Programmer?
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:
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.
About Newsletter
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!)
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.
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.
Quod erat demonstrandum
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
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.
(disclosure: I work at Oberon microsystems, who hosts the open source project)
Regards, tamberg
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 ...
Nu inteleg nimic
(I don't understand anything)
:P :))
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.
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.
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.
It's not only because of the programming languages, it's also because you can Google up much more technical content in English.
It is always better to know another language. but not necessary.
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.
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...
(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.
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.
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?
So I think knowing (at least intermediate) English is necessary for being a programmer.
"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.
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.
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...)
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".
Or <bold statement>maybe they just don't know what they are missing?</bold statement> ;-)
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.
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.
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.
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.
In my country, Programmers get used to work with English version of an application rather than their own language.
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.
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.
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.
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.
Translate as much of the documentation and tutorials as possible, but leave the language alone.
(Every inputform should include a spellchecker, though.. :-)
-Vegar
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
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.
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.
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.
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.
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 !
Gee, kinda sounds like an ad for .NET.
Thanks ... Ed
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.
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.
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?
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.
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
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!
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)
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)
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 )
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.
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...
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.
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
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.
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.
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 :)
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.
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.
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.
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.
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.
Cheers!
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?
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.
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.
>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".
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
"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>
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).
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
English is necessary but not makes you a better programmer.
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.
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!
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.
... 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.
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.
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 :)
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...)
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 :)
That drawback is incomparable to all advantages which gives you understanding English.
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..."
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.
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!
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.
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!)
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...).
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.
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!
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.
Comments are closed.