So, english speakers, be they native or not, posting on english-written blogs and sites, reach the conclusion that most programmers worth their salt know and prefer english.
A further evidence of this is that non-native english speakers (who, nevertheless, read english) prefer english documentation, as documentation on their own language, to put it plainly, sucks.
Can anyone see the problem here?
I’m sorry, but this is WRONG, plain and simple. Guys, you are DEAD WRONG.
First, let me attack the documentation thingy. I always go for the english documentation. It’s more up-to-date and it has less errors (it couldn’t have more errors than a translation, after all!). The conclusion should be obvious: document translations are cheaply done and companies do not invest in creating original documentation whereas english originals exist. This is a problem with the creation of the documents, not with the language they are written in.
Next, the english-bias. By selecting blogs and sites written in english, you are eliminating almost everyone who doesn’t speak it. If you are USED to using these resources – after all, they ARE more complete – then you have applied a bias to the selection of your peers. You don’t know many non-english speaking peers because you don’t go to the same places.
Then, the english is better for programming bias. Bullshit. Programming slang gets created by the second. Drop a C++ systems programmer in a Java or PHP/Web environment, and he’ll think these people are speaking a different language altogether. Vocabulary is NOT an issue. At worst, people of different languages will just import the word, just like it happens with english. And it DOES go the other way, as any proponent of free (libre) software knows.
What programming requires is the ability to analyse, to abstract and to think logically (actually, algebrically – or however that would be correct spelt in english :). And, I’m sorry to say, but some languages are really better for that than english. Some, of course, are much worse.
Let me drop by the keywords, just for a second. I have noticed that it is a somewhat common problem with newbie programmers who are native english speakers that they sometimes expect their code to behave in a different way, based on a english reading of the source code that differs from what the code actually does. I have never seen this happen with people who do not speak english. I don’t mean it’s a problem to know english. My point here is that you learn very specific meanings for the keywords, to the point that the english origin becomes of little importance. For instance, yield in Ruby vs Scala.
And, now, finally, to anectodal experience (unless someone here has statistics?). I have seen very good programmers who couldn’t read even an airport sign in english. They are at a disadvantage because they do not have access to the same repository of knowledge and documentation that their more fortunate counterparts have, but it did not detract in any way their programming ability.
Finally, let me address Eric Raymond. He is completely right. But he is talking about HACKERS, not programmers. In the sense Eric Raymond refers to hackers, they are not only elite programmers, but also people belonging to a specific cultural group. As evidence, it’s easy to imagine an elite programmer (english speaking or not) who, otherwise, does not seem a good fit for hacker. But the converse applies. Someone who would otherwise be a member of the hacker culture will never be part of the group unless he can speak with them.
I expect we’ll learn in the future a word that have similar connotations to hacker, but it will be a chinese word, and it will only apply to people who can speak chinese and engages in conversation with peers in this group.
As an afterword, I’ll throw a bone. A common advise for people looking to improve their programming ability is learning other (computer) languages. People who do this easily have a natural ability to learn other languages, computer or not. They might not know it, and they might even think some other problems they have socializing (let’s not pretend this isn’t common) are problems they have at learning other natural languages.
So, people who have a natural ability learning languages can more easily do one of the best ways of improving one’s programming ability.