6 ms·
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?
- p2t2p 8y agoI 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.
- ecesena 8y agoNo 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.
- helpme420 8y agoitaliaanoooo!
- juangacovas 8y agoMy 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 8y agoYes! 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 8y agoSettare 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”.
- serpix 8y agothe more senior IT people will also question why you are mutating variables :)
- icebraining 8y agoYou can learn programming without knowing English, but being a software engineer implies getting a job; could you get one without knowing English? 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.
- megaman22 8y agoYes, 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.
- wingerlang 8y agoMy 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.
- imauld 8y ago> 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
- jwilk 8y agoIn Python 2, identifiers are ASCII only. In Python 3, non-ASCII identifiers are supported: https://www.python.org/dev/peps/pep-3131/ https://www.python.org/dev/peps/pep-3131/
- tylerhou 8y agoJavaScript 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#examples https://mathiasbynens.be/notes/javascript-identifiers#exampl... d3.js used to also use Unicode identifiers: 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 https://web.archive.org/web/20140802202152/https://github.co...
- phaer 8y agoBoth Javascript and Python 3 do support unicode in variable names
- sneg55 8y agoYes, if you want to become a good software developer.
- Fire-Dragon-DoL 8y agoI agree. It's not a prerequisite, but if you want to be good, you need to.
- MildlySerious 8y agoMore 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.
- olavk 8y agoYou 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.
- mrcodehang 8y agoYeah, 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 :<
- flibble 8y agoYou 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 8y agoNot 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.
- mrzool 8y agoAbsolutely 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.
- geff82 8y agoNot 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.
- realusername 8y agoYou 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.
- alex_duf 8y agoThat 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 8y agoI 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.
- PaulRobinson 8y agoImagine 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.
- olavk 8y agoI think this is not the best analogy. You can still understand music and learn from other musicians and play together even though neither of you can sight read. But any non-trivial piece of code is textual communication and you will simply not be able to make heads or tails of it if you don't know the language.
- PaulRobinson 8y agoYou're assuming the code is the most important part of producing software. 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.
- vbezhenar 8y agoCutting-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.
- Walkman 8y agoYes.
- lucb1e 8y agoEnglish 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.).
- konart 8y agoSome 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/4947638_original.jpg 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.
- Haydos585x2 8y agoUgh, 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.
- tripletao 8y agoThere'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.
- z1mm32m4n 8y agoAn 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-programming.html https://temochka.com/blog/posts/2017/06/28/the-language-of-p...
- kuriho 8y agoYes, 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 8y agoI 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 8y agoYou 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.
- mrweasel 8y agoYes, 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.
- chvid 8y agoI 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.
- fnord123 8y agoThere 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.
- codeonfire 8y agoNo, 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.
- namaemuta 8y agoWell, 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).
- kriro 8y agoAs 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.
- wmu 8y agoSpeaking 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.
- iliaznk 8y agoAs a Russian who speaks fluent English while most of my coworkers don't – YES.
- rurban 8y agoNo, 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.
- deleted 8y ago[deleted]
- BrandoElFollito 8y agoYes. 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.
- ydnaclementine 8y agoI 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
- seba_dos1 8y agoTo 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 8y agoFor 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.
- wettrix 8y agoFrom 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.
- wonho 8y agoI 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
- bewe42 8y agoIt 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).