Ask HN: Is knowing English a prerequisite for being a software engineer?
Languages, libraries, and frameworks are pretty much all open source. Is there anyone out there translating docs? Can you write JavaScript or Python or something using Japanese or Cyrillic characters?
63 comments
[ 2456 ms ] story [ 2218 ms ] threadI actually learned the meaning of some words in English because I knew them from programming.
One example is while (mentre in Italian), I knew the difference between a do/while vs a while loop in C, and that helped me with the meaning/use of while in the spoken language.
From time to time I discover that some words have a meaning in English, other than tech. For example ping, I thought for many years it was just a network command. In Italian we “Italianize” many words, for example I often say “pingare” (to ping), that has no meaning in my mother tongue, so often I don’t think it has to have a meaning in other languages as well.
As for typing in non-latin alphabets I don’t know. My 2 cents on the topic are that I buy US keyboards and set international layout to be able to type letters with accents (needed in Italian) vs I hate Italian layout with accents but no parenthesis for programming. So my guess would be no: you need a US keyboard and thus alphabet to program.
I would say that we "latinos", including Italians, tend to "latinize" words like "ping", in my case "pingear" (to ping) in Spanish.
http://www.treccani.it/vocabolario/settare/
It has been derived from the equivalent English verb, but nowadays it is a real Italian world.
“Mouse” is another word borrowed from English while in Spanish for example it’s called “Raton”. In Italian you will never find anyone calling it “Topo”.
I'm from Southern Europe too (and we also adapt words like "ping" :) but I can't imagine working with someone who can't read documentation of the libraries we use, or read an SO discussion or issue on the repository. I guess translation software may help, but still, I have to admit I would probably not hire them unless they were very good at other stuff.
I'm not totally sure how worthwhile supporting internationalisation really is. Localization is a bitch, and doing things in ISO formats as far as possible is best anyway.
---
I have always assumed that you can need to know either English or Chinese to be a software developer.
Mainly because the bulk of resources are in English, except China which has a large enough population that it can sustain it's own ecosystem internally.
I think the smaller your country is, and the software engineer population within it, the more you need to rely on English. E.g. I could see Russia and Japan having non-english speaking software developers, they have relatively small populations (<150M) but seemingly a lot of tech stuff going on.
You can also see which languages technology blogs / documentation are usually translated too. Which is usually Chinese, Japanese, Russian. Unless I'm wrong, because I can't point to any examples off of the top of my head.
I believe identifiers in those languages have to be ascii characters but I'm not 100% sure. Go however allows any valid unicode character for variable names. The rest of the language is in English though.
Valid Go w/ variable in Japanese: https://goplay.space/#whU6ErYq_wR
In Python 3, non-ASCII identifiers are supported:
https://www.python.org/dev/peps/pep-3131/
d3.js used to also use Unicode identifiers:
https://web.archive.org/web/20140802202152/https://github.co... https://web.archive.org/web/20140802202152/https://github.co...
Sure you can get things done in some other languages and become good at it, but being used to read source code written for an english speaking audience, read english docs and browse english Q&A sites and forums makes a huge difference from my own experience.
A few programming languages like "turtle" have been translated to many human languages because they are intended for the education of children. I know VisualBasic for Office also have some translated version (and translated documentation). There are some other historical examples. But I don't know of any mainstream general purpose language where this is the case.
I know of some workplaces which wrote all their own code in the local language - but standard and third-party libraries were still in English of course, so you needed to understand English anyway.
So I will say you can learn to program without knowing English, but you will not be able to be a professional developer, except in some niche areas.
I could hardly take seriously a software developer (or scientist, researcher, teacher for that matter) who has poor English.
I'm sure there are many non English programming communities, but somehow the pieces that are used to build the syntax of a programming language are mostly English (with a few rare exception)
So I don't think you _need_ it, I think you need to speak the language of your closest programming community (mandarin, french whatever) and you'll happen to use English keywords.
A lot of the popular frameworks have community maintained, up to date docs, at least in the stack we are using (Ruby, RoR, Vue.js, and Jest all have good translations, and tons of non-English resources).
I have never seen anyone writing actual code using non-English characters, but usually comments are in Japanese.
You can make music without knowing how to read a score. You can perhaps even make a good living from it - many musicians you know and perhaps are a fan of have never learned how to read a score.
But you're not going to get a job working for somebody else to produce music, who will expect you to use the lingua franca of music: the score.
If you plan to be the Michael Jackson, Eric Clapton, Jimi Hendrix or Kanye West of software - producing your own thing and expecting others to fit in around you - do your thing.
But if you want to do the equivalent of join a band or an orchestra, well...
The largest employers of software engineers, the highest salaries and the most interesting work right now, all require you to communicate well in English.
The early Ruby community was a self-contained ecosystem conducted entirely in Japanese. It seems to have stumbled along for a few years and only got traction when it became accessible to English speakers.
You can write your own code in any language you want - UTF-8 is widespread and non-Latin character sets are accepted in several language interpreters/compilers/transpilers. You will get work without speaking English, I'm sure.
However it will be a struggle compared to those who know English. It will mean your income is capped unless you become a breakout start (and the odds are stacked against you). It will mean you might not get to reach all of your potential if you're treating this as a career.
It's your choice, nobody will force you, but the benefits of knowing English are considerable, not just for this career but in business in general.
Frequently it's the communication within the team, the documentation and the third-parties you will deal with.
You can be a rockstar on your own without English. You can't be a team player and expect to do well without English. That was my point.
You can perhaps be a "rockstar" in a very specific niche e.g. scripting or customizing inside some vertical platform which is fully localized. Those do exist. But show me the mainstream language where the standard library API have been translated to a non-English language.
Another example might be working completely without third-party libraries. Again this would be possible but a very niche scenario in this day and age.
The thing with notation in scores is that it’s nearly a complete mysucal description; someone given a score could play in a orchestra without sharing any other language.
For programming there is no other way of communicating than a shared verbal language. A team can easily use any language but it needs to be a common language.
Tooling and documentation will also most likely be in English. So while it’s possible in some parts of the world to software development without knowing English, it’s clearly a handicap.
We use English for communication even though we have another shared first language.
There is a russian platform 1C:Enterprise that has it's own scripting language that uses syntax similar to Visual Basic and Cyrillic characters too.
You can develop your own language that can allow you to write in Church Slavonic if you wish so: https://ic.pics.livejournal.com/ibigdan/8161099/4947638/4947...
But the thing is - we write in english because it's a defacto standart right now.
Is it a prerequisite for being a software engineer? No. Is it a prerequisite for when you decide to work with an international team or contribute to an opensource project? Pretty much yeah.
For a high-end customer-facing role involving complex business logic, you probably need something close to native ability. I've seen (and hired) lots of developers with B2 or worse English doing mathematical stuff. Their language skills were an impediment, but not a serious one.
https://temochka.com/blog/posts/2017/06/28/the-language-of-p...
While I don't recommend it, you can definitely use Japanese and Cyrillic characters in Unicode compatible languages. There are people out there translating docs of popular libraries. Heck, even 3rd rate Blender books get translated into Japanese but they rarely make it into stores before the version used is already out of date.
In Germany there are quite some developers whose English is very basic (very often older than 40 or 50) and especially those who grew up in the East (some or most had Russian in school and not English). I mean, usually it's not -zero- but really basic on a reading level, even less writing. I'm not in any way saying they're bad at what they do - if you work in some fields you can absolutely get by just sticking to German variable names (or guesswork English) and those 50 keywords of your language aren't usually a problem. For looking stuff up online there's google translate.
On the other hand I would not -advise- against trying to be the best at English that you can, because if you happen to need to read some complicated stuff like advanced books or papers.. Let's just say I wouldn't look forward to reading even anything medium-level in another language where I only have basic proficiency...
Fun fact: I've actually seen one codebase where all the domain knowledge was German and everything "normal" was English - and it was the right thing to do. Was an application for a bank and they had a technical Glossary with obscure financial technical terms where a) the meaning might get lost in the translation and b) not even the domain experts would know them off the back of the hand. Also the chance you'll have international people working on this intra-country level stuff was deemed very slim. Not sure if the bank got bought by an int'l one later though :P
We have junior devs come and go that simply look problems up online, because they are able to translate their questions into proper English, that the senior German-only devs would spend days trying to work out by themselves. Or they somehow find the same solutions online but can't make sense of what Google Translate spits out for them. It's equally hilarious and sad to see a junior dev being used as a seniors LetMeGoogleThatForYou.
I know that many will say that English isn’t required, but I can’t imagine how hard I would make my job if I only spoke Danish. The ability to read almost any English text is In my mind an absolute must en the field of computers and software, you simply can’t keep up otherwise.
Not only is all technical documentation in English and speaking English will give you access to the whole world in terms of jobs. But software in general is better written in English. English has well-established and broadly shared naming conventions other languages simply do not have.
Occasionally I see software written in Danish and generally it is a mess. How do you break words? What do you name collections? What about the terms that are used to structure the overall application (service, repository, factory etc.)? Is it Leveringsadresse, LeveringsAdresse, LeveringAdresse? Or what about leveringsadresser, leveringsadresseListe or maybe leveringAdresseList?
While the corresponding naming in English is clear to any programmer: DeliveryAddress, deliveryAddresses.