Before I joined the coding community, I worked primarily in the service industry, more specifically house cleaning and roofing. Working in HR and management in both these industries, I focused on making on-boarding and training documentation accessible to people who’s native language was something other than English. Not only did having a clear description of their role help define and manage employee/employer expectations, the individual felt more included in the work environment. It opened these same people to ask more questions about almost every aspect of the business, from what our sales documentation said to asking about advancement opportunities at the company. It gave these people more power and ownership in their work that I am not sure they had at other companies. Once I started learning the basics of Ruby syntax, I could not help but notice that it seemed English dominate. I knew that this had to be a larger barrier faced by non-native English speakers trying to break into the technology sector, and wanted to learn more about what I could do to help bridge that gap.
It’s no secret that English continues to be the dominate language for science and technology. Most popular programming languages and their corresponding official documentation are almost always written or designed in English. This even is seen in popular discussion sites, like Stack Overflow, and English continues to be the official language of many open-source educational software available for free online. From my research, there are translations available, but these are perceived from the end user as lower quality than the source material. A survey conducted by Professor Philip J. Guo at UC San Diego confirmed as much. The survey also highlighted that traditional communication barriers with general reading comprehension greatly effect a person’s ability to grasp concepts, especially so if the text became more colloquial. As one native French respondent noted, “The technical vocabulary linked to programming can be complicated to assimilate, especially in the middle of explanatory sentences if you don’t know the equivalent word in your native language. Sometime a single technical word can blur the meaning of an entire sentence (Guo 5).”
Another common issue for most non-native speakers is English grammar, specifically the subject-verb-object relationship. Words like if, unless, while, until are prevalent in most complex computer programming languages, but are often difficult for non-native speakers to fully grasp as there is not often a literal translation. This can also cause issues for non-native speakers to fully grasp the difference between core coding concepts such as the difference between objects, classes and instances. This also leads to issues with colloquial variable naming conventions. As noted in Professor Guo’s survey, “I’ve seen folks struggle with the naming of variables – opting for simple names like ‘a’ or meaningless (or worse misleading names) like ‘table’. Otherwise the folks I’ve seen who are not native English speakers but are coders tend to do quite well with the structures and grammar of coding. It is where the natural human language meets the code that there are issues... :-) (6).”
For more first-hand insight, I recommend checking out the video below from a talk regarding 3 working programmers personal experiences.
Non-native speakers often have to simultaneously learn programming concepts and English, and often rely heavily on translation programs like Google to actively work out what individual words mean. To help mitigate this, English speakers can avoid using slang or local expressions that are not easily understood outside of that individuals culture. Also using more complete variable naming conventions can help alleviate comprehension issues. An example would be to avoid shorthand such as num_list for a numbered list. Also writing in short, and direct sentences in comments can help non-native speakers to fully understand the function of the program. Again, it is important to avoid using colloquial phrases in comments.
More broadly, it is important to understand if someone on your team has language limitations and at what level. Without fully understanding the starting point, it is hard to build a strong learning path and likely difficult for those individuals to feel fully integrate into the team. These learning paths also should be custom tailored to the individual. No two people learn or comprehend material the same way, and one technique that worked from someone in the past may not be effective for someone who speaks a different language or come from a different cultural background.
Professor Guo also took the time prior to this survey to build out a coding visualizer called Python Tutor. This innovative platform not only helps non-native speakers to understand what each line of code does, it also has a live help chat feature that can bring together individuals of different backgrounds to troubleshoot code issues. It is a fascinating tool that I used early on to help solidify core concepts like how certain operators work. Below is a quick tutorial video to help understand how this service works.
If you are as interested in this topic as I am, I strongly encourage checking out Guo’s research and current advancements in the industry. I also would greatly appreciate hearing from people actively working in the industry with their own thoughts on this topic!