HACKER Q&A
📣 chestertn

Differences in Programming Style by Nationalities


In mathematics some people say that there are three different styles of doing mathematics: the French style, the Russian style, and the American style. Each one has its own peculiarities and stereotypes. For instance, French-style mathematics tends to be very abstract compared with Russian-style. Of course, these are all generalizations.

Does something like this exist in the programming world? Example: programmers trained in X tend to be more Y compared to those trained in Z.


  👤 vemv Accepted Answer ✓
I've observed from my personal job experiences that Eastern European developers tend to pay more attention to detail.

It's a double-edged sword as it can yield more correct code but also spend time in things that a formatter/linter would do.

Or implement requirements very literally without trying to second-guess them, or ask for clarification.


👤 dcolkitt
IMO the bigger divide is between West Coast and East Coast programming styles.

I think California developers tend to be more forward-thinking, and embrace a “move fast and break things” style. Whereas East Coast devs tend to be more academic, structured and top-down.

Speculatively, I’d attribute this to the lack of non compete enforceability in California. Innovation tends to diffuse a lot faster, and that’s rewarded more of a forward-thinking culture. Then again, if there was a piece of code that could kill me if it fails, I’d go with an engineer in Boston before one from Palo Alto.


👤 iExploder
not sure about specifics in training but I had quite a lot of fun reading regular c++ code with variables in english only to scroll and find pages of comments in foreign language like russian or japanese...

another fun with languages happens when coders for whatever reason insist on naming their variables using fusion of english and other language, such as "HornyWidget" (horny means upper in my language)


👤 asplake
I don’t know how true it still is, but didn’t Russian programmers earn a reputation for doing amazing things within very restrictive constraints, particular in memory?

👤 athrowaway3z
https://en.wikipedia.org/wiki/Conway%27s_law is related to this on a org/architecture level.

And on a further tangent, I read the following (from a 'frustrated' dev) on a discussion about micro-services.

>Micro-services allow us to push our org chart to production.

I still think about that from time to time.


👤 jraph
Programming style could mean different things: architecture, design patterns, spelling, naming, favorite languages, favorite domains, coding styles (tab vs spaces, where to put braces, space or no space before functions).

What probably matters a lot is how programming was learned (self taught, at school, availability of resources from the country / in the language of the person…) as well as the variety of code which the person read / contributed to.

No, that does not answer the question at all because I have no idea :-)

With respect to naming, English being a Germanic language rooting a good part of its vocabulary to the French language, it would be interesting to compare German code and French code both written in English and find out whether German (resp. French) people tend to use more words rooted from the German (resp. French) language.


👤 benjohnson
I did witness a Japanese style in the 1990's - a book of coding blocks was being used with the primary value the coder was adding was glueing then together.

Back then, I thought it was idiotic; how could a professional sit there and copy from others.

I now view it as genius - save your effort for the hard problems.


👤 akvadrako
I first noticed a difference in national styles when I contributed a patch to fastjson, a JSON parser in Java from Alibaba.

Take a look around the repo; it'll look odd to a western programmer. There is a lot of duplication. And the tests don't have names, they are numbered.

https://github.com/alibaba/fastjson/blob/master/src/test/jav...

This was several years ago. I did end up choosing it since it really was the fastest.


👤 sixhobbits
There is a fairly active research field in computational linguistics for Authorship Attribution and Native Language Identification. These try to identify a specific person or a persons first language by idioms in their writing style.

I have seen some people apply similar techniques to code (eg identify authorship of malware) and I assume what you're asking would be a pretty simple variation of that.


👤 dvh
I often use "pom" as a temporary variable name. It's short from "(aux)iliary" in my language. Other words sometimes sneak into local variable names too. Meta-syntactic variables too like "jablko" and "hruška" instead of foo bar. On paper, some people are surprised when I put stroke on 7.

👤 Areading314
This topic seems like a bad idea

👤 beaconstudios
I don't know if it is common and not just a local sampling bias, but I've noticed my Indian colleagues (in the UK) are more often Java programmers. Perhaps java, and thus OOP, is more popular in India?

👤 sunnyque
dumb code are nationless, that's for sure

👤 dave333
I started coding in the UK in assembler on tiny 64k machines and cavalier heroic coding to save space and cycles was the norm. I moved to the US coding in C and while there was no shortage of clever heroic coding, simple brute force approaches were usually tried first. Nowadays, most of the heroism is bundled in the toolset.

👤 dynamite-ready
My experience, is that there is a greater degree of similarity between coders and their mode(s) of practice, when grouping them by their tools/language choices, than by their nationalities.

My sample size is infinitesimal, so YMMV.


👤 legitster
(Potentially apocryphal or true for other countries) I remember a Romanian developer telling me that in the days of communism (as well as shortly thereafter) computer time was so rationed that students learned to program almost entirely on pen and paper and the instructor would grade it before even putting it into a computer.

He said that even to this day, programmers in Romania still have a deep emphasis on book learning and an intolerance for bugs or mistakes.


👤 lindy2021
Have observed a strong correlation between conscientiousness and how developed a country is.

This is undoubtedly due to a self-selection bias in developed countries, where there are a million opportunities, wherein only those deeply interested in programming choose (and stick with) it as a career.

Those in less developed countries don't have the same privilege, with many choosing programming as an easy ticket out of poverty.


👤 throwaway210401
I have noted that chinese guys write code just like others but when they write comments in English, they mess them up. For example almost always, when they to save "imap clients typically request multiple messages at a time", they will invariably write "imap clinent typically request multiple message at a time". Note the lack of plurals.