8

My boss recently went back to our international office in his home country to interview some potential new employees, and we have decided to hire a few as programmers. They are fresh out of college and have very limited experience (similar to me when I first started working here). I am told they are able to read English, however I looked at the code they wrote as a part of the application process and all their variable names, method names, comments, etc are in Spanish. I am having doubts that they have any ability to write English. I hear they are learners though, so maybe they can learn over time as we give them small training projects.

I will be working with them closely, helping them learn good design principles and other things, and I will eventually get to the point where I am producing code with them.

Has anyone dealt with this sort of situation and had it end well? What kind of pitfalls should I look out for? What kinds of tools do you know of that can assist in international collaboration and training?

yannis
  • 39,547
  • 40
  • 183
  • 216
Phil
  • 3,660
  • 26
  • 29
  • 2
    Computer scientists, fresh from college in Spain, should have a good level, after more than 10 years of learning. What makes you think you won't be able to communicate? – Llistes Sugra Jan 27 '11 at 16:17
  • Why can't you hire international workers who are fluent in English (both read & write)? – Fanatic23 Jan 27 '11 at 16:19
  • are spanish variable names so hard to read? – Ewan Jun 23 '15 at 11:23
  • 1
    @Ewan It helps to know what a variable name means without going to Google translate. Especially on large projects. – Phil Jun 23 '15 at 17:03
  • I guess the spanish devs think the same thing – Ewan Jun 23 '15 at 17:10
  • @Ewan Probably true. But we do need to pick a language. Since we've already written everything in English, we can't just write the rest of our code in Spanish. And we can't expect _all_ software devs to be bilingual. And what if we hire a German in the future? Are we going to throw another language in at that point too? So... if you're going to standardize, it's probably best to pick the most common language, which happens to be English. – Phil Jun 23 '15 at 17:13
  • Next you'll be spelling colour without the 'u'. I guess my point is if you have a dev team who speak different languages Code readablity is a two way street. – Ewan Jun 23 '15 at 17:33

5 Answers5

9

The fact that variable names are in their native language may have absolutely nothing to do with their ability to write and understand English. Actually that's rather common (though ugly) habit in many (if not most) countries. I'm German and have seen this often enough. Exceptions are people who work in large international companies.

At least in Germany (where I come from) you can expect students to speak English at least good enough to make up useful names for variables, understand technical documentation and similar. Writing complex documentation may be another issue.

But make a strong point from the beginning, that at least within the code base you don't accept anything but English. After all, even if they don't know it good enough, they should be able to use a dictionary.

thorsten müller
  • 12,058
  • 4
  • 49
  • 54
  • 2
    +1 you wrote it before me :-) It may simply be a matter of communication. If they weren't explicitly told during the application process that they are expected to write English names and comments in their code, they simply did it the way they are accustomed to in their home country. I did the same back at the university, even though I already professed good English then. – Péter Török Jan 27 '11 at 15:55
  • +1 , I agree with @thorsten muller, I worked with several Ukrainian developers in the past and they are among the best programmers and with very few of them I had this problem (but not quite often). Following strict Code Review process helped me and them as well. –  Jan 27 '11 at 17:00
  • 1
    I am from Brazil, and I write all my code in english, including comments. –  Jan 27 '11 at 19:43
8

I'd recommend stop being nice and recruit only those who are able to write English now.

It's pretty much a basic requirement for programmers (second after being able to program), otherwise you end up with a mass of exotic code.

You also can't take them now and trust they will learn English as you need those skills immediately.

Adjust your recruitment process. Issue all tasks in English, require writing only English code and ask to explain programming-specific details in English. General communication skills might be low without prior exposure to an English-speaking environment, but that narrow set that deals with programming problems should be there.

Or you'll have to learn Spanish. :)


Write/talk to the boss immediately before it's too late and make a strong case English skills are required. Not because you want it but because of the industry experience. Nowadays any code can be expected to be taken over by another team elsewhere and if it's not in English, then it will be a long learning curve for the other developers to catch up or perform code refactoring on a large scale to simply make it understandable. It will all cost time and money.

P.S. An interesting story I heard. There was some internal tool or something written in a German department of SAP. When it was transferred to the US division it was sort of left lying in the drawer because nobody could read the documentation. Until a few students from Germany went there for an internship and got on with that tool.

  • I worked with a company that hired some Russian devs, they wrote all the code in English, as required, but all the comments were in Russian. It made maintenance of it quite tricky, we had to hire them back in the end. – gbjbaanb Jun 23 '15 at 10:40
  • User documentation is a different issue. Documentation (and UI) language depend on the targeted market. If the market was only Germany in the past, it's completely fine to have only German docs. But as soon as you decide to target other markets (e.g. English speaking countries), you have to translate the docs (and UI). – Simon Jun 23 '15 at 11:09
  • Having the variable names in a different language is no different than having every variable named a,b,c,d,e etc... It is just a bad practice and should be dealt as such. No need to worry if you express and enforce the use of only english in the code. Also, I expect any decent developer nowadays to have at least some reading/writing skills in english (but no speaking skills though) as most of the documentation is only in english everywhere. – dyesdyes Jun 23 '15 at 12:03
2

If you really are stuck with this (and I hope you're not), it's important to establish written QA rules, communicate them to your team, and enforce them ruthlessly.

For example, I would establish that all variable names, comments, and other artifacts must be in English. Communicate that when giving assignments, when reviewing assignments, and reject out of hand any that does not meet the requirements.

Given that these are new programmers, you should also have a firm list of other QA rules they are reviewed on. I would put specific emphasis on naming, considering the language gap.

C. Ross
  • 2,926
  • 2
  • 26
  • 42
1

I am very fluent in both English and Spanish but almost always name my variables in Spanish since there's a higher chance they won't be a keyword. Having said that, I make sure that code comments are in English in case we ever sell our company and somebody

So yes, make sure beforehand that they or their supervisors can write in English or you will end up with something documented in another language.

0

Has anyone dealt with this sort of situation?

Yes, it is not uncommon in big companies and probably more so in Europe than in the U.S., because over here both worker mobility and culture heterogeneity are high.

Did it end well?

Yes, why not? You have to come to an agreement on what language is your lingua franca, and make sure that everyone understands no part of the code can be written in any other language. Some people tend to understand that comments, or local variables, are their personal territory. This is a bad habit, regardless of the international setting.

What kind of pitfalls should I look out for?

I think the worst problem you are going to face is that you have a compact group of people coming over from the same country, and not a single person or a set of individuals from different countries. Make sure that they work in different projects, at least in the beginning, because there is a very strong tendency to communicate with people in your native language if you can. It takes some time to get used to talking or writing to them in another language; but you get used to that, too.

As mentioned above, some people regard comments as their "personal notes", or local variables as their own "notation"... Understanding that this is not so is just another part of becoming a mature programmer.

Another subtle point is that working outside your mother language limits your vocabulary, and naming things is one of the hardest things in programming. Give your newcomers a dictionary of synonyms, and one or two tutorials on naming software entities.

What kinds of tools do you know of that can assist in international collaboration and training?

I was about to write "alcohol", but since I do not want to end with such a lack of seriousness, I will tell you that "humor" is probably the best tool you can have in bridging the communication gap. Make some jokes about you not understanding Spanish, and maybe how languages sound to foreigners. Only bring up the Spanish Inquisition if you are writing Python.

logc
  • 2,190
  • 15
  • 19