I got into an interesting discussion on twitter today on what language you use when coding. We weren't talking about programming languages, but the actual real world language that is used for class names, method names, variable names, comments, etc... My take on the matter is to just always do it in English. And for the record, i'm a native Dutch speaker and i work in Belgium. Our official languages are Dutch and French, not English.
A few years ago, i worked at a large financial institution in Belgium where we developed software for internal use in the main offices. The UI was pretty much always done in Dutch, but most of the time we wrote all of our code in English. There were a few projects where the developers had used Dutch in their code though. At first, this wasn't an issue and seemed to be more of a personal preference thing (though mixing within a project is just horrible). After a while, the company got involved in the outsourcing game and suddenly, they were sending a lot of the projects that were in maintenance to a group of Indian developers. It's hard enough to get developers who use a different language and are part of a different culture on the same page when working on software, but it's obviously even harder if the code they are supposed to read, maintain and extend is in a language they don't even know.
At my current job, we also have a branch in Hungary. We often mix teams so naturally, we all write our code in English. We not only write our code in English, but we also use English as our language in any kind of documentation. Now, we do have one customer who insists that the functional designs are all done in Dutch. Maintaining 2 sets of documents is something that we won't do, and since our development process requires developers to link our code to our functional designs, we'll never be able to use our Hungarian developers on the projects that we do for this customer. To me, that is a huge downside to having to write the documents in Dutch. And it's the exact same problem we'd have if we would write our code in Dutch.
Both those examples should tell you why i'm so much in favor of just writing code in English all the time. Generally speaking, if you pick a non-English language to code in, you are limiting the pool of possible future developers to those developers who know the language you've chosen. It's that simple. The more people who know the language, the bigger the pool of future developers. And when it comes to languages that aren't used by a lot of people... well, that's a pretty big restriction on your future options.
Another downside to using non-English in your code, is that you're effectively already mixing multiple languages in the code base. Your programming language already is in English, and using non-English in your code leads to something that just sounds (or reads, i guess) wrong.
The biggest problem that people bring up with always using English, is that you obviously need to translate business concepts. Especially for people who are doing DDD and who want to leverage the Ubiquitous Language, this isn't always an easy decision to make. For one, your domain experts might not be willing to take on the translation burden. If they are unwilling to do so, you can still use a translated version of the Ubiquitous Language but then the entire team (except for the domain experts) has to deal with that burden on a daily basis.
Now, i'm not sure if that's really that big of a problem. For starters, English terms are becoming more pervasive in 'business language' every day. I'm not saying that everyone is already using English for their business concepts/terms, but i would argue that it is increasing, that it's only going to increase more and more and most importantly, that more and more business people don't really have a problem with using English terms anymore.
And lets not forget that the percentage of teams that is truly doing DDD and leveraging the Ubiquitous Language is probably still small. After all, most true DDD experts will say that DDD is only a good idea for 10% of all projects
, so i can't help but wonder how big of an issue the translation burden really is.
Thoughts?