
Ask HN: Is knowing English a prerequisite for being a software engineer? - baron816
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?
======
PaulRobinson
Imagine you'd asked "Is knowing how to sight read music a prerequisite for
being a musician?".

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.

~~~
erfgh
99% of the people who play in bands have no idea how to read a score, let
alone sight read.

~~~
alkonaut
If they want to get hired for playing with someone else they still need to
communicate using a common language with those they are working with. For
someone asked to be a guitarist on a tour that’s likely a combination of
verbal communication, sheets with tabs or chords etc. I’d say most people
playing _claviature_ in bands probably read musical notation, but guitarists,
drummers etc just don’t have the same need (so many pop/rock acts simply have
no need).

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.

------
ecesena
No it’s not a prerequisite. When I started programming I didn’t know English,
and it didn’t matter.

I 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.

~~~
juangacovas
My case: I'm from Spain and I was 6 years old with a Commodore VIC-20: just
"setup" papers were translated, the BASIC manual was in English, so you had to
read English without really knowing the language. Those days I was years away
of English classes from the National Education System.

I would say that we "latinos", including Italians, tend to "latinize" words
like "ping", in my case "pingear" (to ping) in Spanish.

~~~
lou1306
Yes! We do it all the time, even more often than necessary. Like, you could
say "Set foo to 0" as "Setta foo a zero" and IT people will understand you,
although "settare" is not even a verb (the correct translation would be
"impostare")

~~~
tigershark
Settare is an Italian verb:
[https://www.garzantilinguistica.it/ricerca/?q=settare](https://www.garzantilinguistica.it/ricerca/?q=settare)

[http://www.treccani.it/vocabolario/settare/](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”.

------
olavk
You can use unicode characters in identifiers in many modern languages
including JavaScript and Python. So you can write _your own code_ in whatever
languages you like. You could learn the meaning of language keywords without
knowing English. But all libraries are still in English, so I would say it
would be almost impossible to become a productive developer without being able
to read technical English. (Which to be fair is not the same as to be able to
speak fluently, and is much easier to pick up on your own without access to
teachers or other English-speakers.)

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.

------
wingerlang
My comment is all speculation

\---

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.

------
mrzool
Absolutely yes. Virtually every relevant and up-to-date resource out there is
in English. Stack Overflow, GitHub repos, documentation, official
specifications, technical articles, tutorials and blog posts, podcasts,
videos. English is the lingua franca of the community. You need to be able to:
A. Read and understand an enormous amount of written material on complex
matters in English with no more effort than you'd expend reading in your
mother tongue and B. Produce clear, concise and elegant prose in order to
engage with the community (not to mention your coworkers!), learn and exchange
ideas.

I could hardly take seriously a software developer (or scientist, researcher,
teacher for that matter) who has poor English.

------
chvid
I am not a native English speaker and a professional developer. My advice is
get good at English and write your software in English.

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.

------
mrweasel
Yes, you can write code in different langugages and alphabets, in most modern
programming language, but you shouldn’t. If you do open source, then using
Albanian variable names will limit the amount of people able to contribute and
utilise your project. For inhouse code, you restrict you employer to hiring
within a limitted pool of candidates. If you’re in China or Japan that might
not matter, in the EU that’s just hurting your business.

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.

------
z1mm32m4n
An interesting point about programming is that so much of it comes down to
thinking of names. I found this article by a Russian native about programming
and naming things rather fascinating:

[https://temochka.com/blog/posts/2017/06/28/the-language-
of-p...](https://temochka.com/blog/posts/2017/06/28/the-language-of-
programming.html)

------
flibble
You might get more correct answers if you ask on a non-English speaking forum.
I imagine there are plenty of developers in Russia and China who don’t speak
English. We often hire remote developers on Upwork and many can’t speak
(orally) English.

~~~
icebraining
Not being able to speak English is very different from not being able to read
it, in my experience. I know multiple people in that situation, and I'm the
same with French.

------
bewe42
It depends where you live and what company you work for. I have been working
in Spain for some years and only a few of my peers spoke English comfortably
(I'm German). But you limit your options without it. I would not be able to
hire you if you don't have at least a basic grasp of English (you can
participate in our online meetings that are held in English, and you can read
and write somewhat fluently).

------
sneg55
Yes, if you want to become a good software developer.

~~~
MildlySerious
More specifically, I think it's needed to be efficient.

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.

------
kuriho
Yes, knowing English enough to read/understand the latest books in your field
and being able to look up solutions online is absolutely necessary.

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.

~~~
wink
I don't have any numbers, but I'm inclined to claim that in any reasonably
large economy there's tons of software engineering (or maybe programmer) jobs
where you will never touch anything "latest" :)

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

~~~
kuriho
You actually describe my day job pretty accurately. SAP based legacy systems
where everything from system variables to customer codebase is this weird mix
of English and German. Strict project guidelines and code review sessions can
only catch part of this mess before it's rolled into production.

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.

------
geff82
Not knowing English in software engineering is the same as living in the USA
not knowing English or flying airplanes not knowing English. It might be
possible, but it leaves you with a lot pf restrictions and a very small
community. Personally, I got fluent in English by reading a lot of manuals and
documents when I learned programming in the 90s where I had no internet and
thus no way to connect to other German developers.

------
megaman22
Yes, if you want to actually work with teams in the wilder world. English is
the lingua franca of effectively all major programming languages. North
American teams, EU teams, and Indian teams are all on English by default.

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.

------
konart
Some languages (for exemple Golang) allow you to use any utf8 symbols in your
code, so you can name your variables in Russian, for example -
[https://play.golang.org/p/oWs6mc-JOpI](https://play.golang.org/p/oWs6mc-JOpI)

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...](https://ic.pics.livejournal.com/ibigdan/8161099/4947638/4947638_original.jpg)

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.

~~~
Haydos585x2
Ugh, I worked in a code base that had a lot of Cyrillic characters and the
code base got moved to our (English language) team. It was difficult to work
out what was going on and with a lot of Google translate we ended up with an
English code base. Another interesting thing that happened once was that a
German team had a comment with an umlaut in it that would crash certain
code/text editors. It took them a long time to figure out what was happening.

------
rurban
No, absolutely not. Many Germans, Japanese, Chinese, French, ... knew terrible
English in the early days, and translations from English to their native
language were very common. They were still very good engineers, just their
comments were hard to understand for others.

Nowadays it's a business requirement but you still would find a job.

Many languages do support unicode in strings and identifiers, but almost none
of them get them right. It's a security risk. I only know of java and cperl
with unicode identifiers following the unicode security recommendations. Eg
with Cyrillic you'd need to forbid Greek but almost nobody does so.

Also the various libc's cannot handle unicode strings properly, eg it will be
hard to use grep or git grep in such a project. So better use english.

------
kriro
As a non-native speaker I would say it is absolutely necessary. You can get
through university without it and you can probably get a job in your country
without it but you really shouldn't. Never ever write code in non-English. I
hate it when programming is tough with localized variable names etc. Just
imagine a coworker from another country being stuck with your codebase with
all non-English words in it...it's a nightmare.

Also the best tutorials, books etc. are in English and the most new content is
released in English as well. Going a step further if you are interested in NLP
it's very likely that more interesting datasets will be available in English.
State of the art academic research (new algorithms etc.) will also very likely
be published in English.

------
BrandoElFollito
Yes.

This is a problem we have in France and Germany where the law requires you to
have everything relevant in the native language. While I love my language, I
find this particularly dumb because we are just making it difficult for us to
get up to speed.

I know some engineers who do not speak English (or their English is poor) and
they always yell when there is a mail or documentation in English. They are
also whimpering of never being promoted. I think they expect our customers to
work French to accommodate them.

Software engineering is in English, this is a fact of life and there is no
other choice to speak of if you want to progress.

------
wmu
Speaking of using non-ASCII and non-English names in program, I'd suggest not
to use them. People who don't know the alphabet/language will understand
literally nothing; it's much better to use English names.

------
tripletao
There's loads of non-English documentation, open source and otherwise. The
quality is usually not bad. Like everyone says, many languages let you put
Unicode in identifiers. I've never actually seen anyone do that. I've seen
Unicode in comments, or foreign words romanized to [A-Za-z] for identifiers.

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.

------
alex_duf
That question is asked to an English programming community - mainly western-
ish - , the answer is therefore going to be heavily biased towards it.

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.

------
lmiller1990
I work in Japan and most of my coworkers speak next to no English. I also see
them mostly googling in Japanese to find answers to questions, or searching on
popular Japanese-based websites (qiita, hatenablog).

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.

------
seba_dos1
To anyone that this question would apply: just learn it. You don't have to do
it, but it will make your life way easier, even counting the effort needed to
learn it.

------
Jugurtha
For the time being, yes. I'm from Algiers, Algeria. We switch between three
languages at the office (Algerian, French, and English) but the documentation,
issues, comments, commit messages, mails, charting/architecture/naming, data,
etc. are in English.

We all understand and use the three languages (some of us use a fourth) but we
still, for some reason, use English for all the above.

Slack conversations are 99% in French.

------
fnord123
There seems to be a burgeoning Chinese open source community with many go
projects and a few rust projects. They don't always translate things to
English.

------
wonho
I know a program language that can be written in Korean. It only needs
'Hangul' to program. However, it is not used very much and requires knowledge
of basic computers. link is here
[https://aheui.github.io/specification.en](https://aheui.github.io/specification.en)

------
wettrix
From my experience in Japan and C# Unity. Japanese don’t know English well to
be able to communicate. But they’re still good at coding. My mentor didn’t
know any English but he bought English books and looked at the code rather
than reading it. People who don’t know English can do the job but
communication would be a problem.

------
mrcodehang
Yeah, English is the biggest standing in the way that being a software
engineer. e.g. If you are not Enligsh as mother language, you can't smoothly
read doc writed in English. But many docs and papers write with English in the
world. Furthermore, Possiblely you couldn't my words above. Because I am non-
English :<

------
p2t2p
I can tell that things became muuuuch easier as soon as I was able to switch
from Russian to English while looking for docs and help. There are simply so
much more information on various topics. I dunno about Chinese though, with
more than 1 billion people the community might be at least as vibrant as
English speaking one.

------
namaemuta
Well, when you type "If, for, foreach, switch, GoTo, Resume, Continue,
Break..." you are already using English so I would say that if you are able to
code, then you are capable of at least, understand a basic level of English
(which translates into English being a requirement to even start to code).

------
codeonfire
No, knowing English is not required to be a software engineer. There are
millions of software engineers around the world, a large percentage of which
do not know english. Virtually all modern languages and tools support UTF-8
which can encode almost all symbols of all languages.

------
lucb1e
English required to be a software engineer? Of course not. But it helps a lot
to understand many resources online and it benefits everyone if you can
contribute to a larger community (asking/answering stackoverflow posts,
using/creating open source software, etc.).

------
vbezhenar
Cutting-edge technology might be hard to learn without English. With more
conservative technologies it should be possible. I know developers who's not
fluent in English and prefers local resources whenever possible, so it's
definitely not a prerequisite.

------
ydnaclementine
I read once 'the most important language for a progammer to learn isn't a
programming language, but English'.

Easy for me to say being born in the US, but it's just kinda how it is.
Especially if you want to contribute to open source, etc

------
realusername
You don't really need to speak English, having some vague basic notion of
English is more than enough, I did not know English when I started and it
wasn't blocking me much.

------
imauld
> Can you write JavaScript or Python or something using Japanese or Cyrillic
> characters?

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](https://goplay.space/#whU6ErYq_wR)

~~~
tylerhou
JavaScript identifiers can be emoji, I think. This is also valid JavaScript
(you can test it by pasting it into your console):

    
    
      let ಠ_ಠ = "Hello, world!";
      alert(ಠ_ಠ);
    

Some more examples: [https://mathiasbynens.be/notes/javascript-
identifiers#exampl...](https://mathiasbynens.be/notes/javascript-
identifiers#examples)

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.com/mbostock/d3/blob/master/d3.js#L1185)
[https://web.archive.org/web/20140802202152/https://github.co...](https://web.archive.org/web/20140802202152/https://github.com/mbostock/d3/blob/master/d3.js#L1210)

------
iliaznk
As a Russian who speaks fluent English while most of my coworkers don't – YES.

------
Walkman
Yes.

