9

There is a school of thought in linguistics that problem solving is very much tied to the syntax, semantics, grammar, and flexibility of one's own native spoken language.

Working with various international development teams, I can clearly see a mental culture (if you will) in the codebase. Programming language aside, the German coding is quite different from my colleagues in India. As well, code is distinctly different in Middle America as it is in Coastal America (actually, IBM noticed this years ago).

Do you notice with your international colleagues (from ANY country) that coding style and problem solving are in-line with native tongues?

Tamara Wijsman
  • 8,259
  • 14
  • 58
  • 94
Jé Queue
  • 3,937
  • 2
  • 29
  • 37
  • How do you know whether the differences are caused by mother tongue or by cultural background? – mouviciel Jan 31 '11 at 19:16
  • @mouviciel, the two are mostly inseparable, however I anecdotally see the *syntax* of the spoken language drive the *semantics* of the programming language; the German example below in my comments just one. I can quite clarly see the difference in coding style even between the US regions despite a largely similar language which (as you stated) should much more be attributed to cultural differences. – Jé Queue Jan 31 '11 at 22:47
  • There may be some differences, but what I do know is that there are bad programmers from every country. – ozz Jan 31 '11 at 11:57

7 Answers7

5

Till now with my experience I have noticed that my native internationl fellow did the same job compared to the non-native. The issue arises when they tried to explain the concept or the requirement. Else I suppose the syntax name doesn't play much role until you read what excatly they do. Once a programmer acquires the knowledge of the syntax then it doesn't count what is the actual meaning of the word used for syntax.

Zerotoinfinity
  • 358
  • 2
  • 13
  • 1
    See, I find that translation of native spoken language (and thought process) into a different *programming* language has different material outcomes. Not good or bad either way, just quite different. I note a lot of heap/global variable declaration and data preparation and *then* sets of procedure calls by Germans, vs. Americans who tend to inline or anonymously employ variables/functions as the need arises. Final results = same, just different approaches. – Jé Queue Sep 17 '10 at 15:59
  • +1 for the smart summary Final results = same, just different approaches – Zerotoinfinity Oct 01 '10 at 18:07
3

Do you notice with your international colleagues (from ANY country) that coding style and problem solving are in-line with native tongues?

Absolutely. This is a hard fact. The cause-effect chain is however complexer.

The region, its ecosystem, weather conditions, plant and animal life have influenced the development of the local culture religion being a part of it.

The culture and religion have influenced the formation and development of the local language(s).

The culture and the language have left its marks on the society model for this particular ethnic group.

The society model has defined the behavior model - life style, work attitude, social relationships, priorities and values of individuals. That is the part we want.

People of different cultures will be approaching solving a problem with the baggage of their cultural heritage - how they think about it, what attitude they bring to the job, what methodology and problem solving patterns they will apply, what priorities and values they set.


Speaking of examples I can give you two. If we take Germany where I currently reside, there are certain patterns I have observed.

  1. Planning everything in advance and for long-term is the way of the life. Evening meetings with friends can be planned weeks and months in advance. Young people already concern themselves with their retirement (insurance etc.). Mood swing, improvisation, willingness and ability to adjust as-you-go is very low. Naturally it is transferred to the way of work. Planning and order play a big role. Being agile is considered to be an exceptional characteristic to describe a modern person/team with a progressive thinking. However most agile processes which I have observed in German teams seem more like a machine execution of the predefined steps (even if people really try to be agile), but no spirit of agile as such.

  2. Predictability of everything is the norm of the life. People are used to knowing what will happen, where and when. It stretches from everyday life over working style to personal relationships. You can see it for instance when people cross the road. They wait for the green light and start moving without looking if the cars have actually stopped - because they expect them to. People pride themselves on being able to control every aspect of their life. When however the life hits back with something unexpected, when things get out of the control, people sort of freak out. If transferred to programming I've seen that coding is done rather optimistically, no obsession with checking input, foreign keys to verify data integrity and so on. Also no some extra-engineering to keep code to some extent resilient to failures and adaptable to certain future changes, just to satisfy the today's expectations (which aren't likely to change they believe).

  3. Saving money and optimizing their expenditure is extremely important in the culture. It is reflected on the work artifacts. Characteristics and quality do match the planning but do not suddenly exceed them (to make it cooler or just "in case"). Another side of the game is unwillingness to invest into modern hardware and software, to reengineer working code, to refactor it, to make things better just to keep in line with the current state of the things, to prepare for the future. Since there is no immediate winning and nobody is paying for the changes, noone is actually going to get moving.

  4. Entrepreneurship and creativity are rather low in the culture. Unwillingness to take risk on their own account is high. Work outcomes seldom bear the imprints of unusual, unexpected, creative. People tend to follow the trodden path, little experimentation or unusual set up "out of curiosity". People don't like taking initiative into their own hands especially when paired with responsibility. I also heard Germans landing in the Netherlands sometimes have difficulty as people there are used to work independently without tight guidance. Programming-wise it means little experimentation with new languages, tools or libraries, new versions are not adopted for the fear of change. People take design patterns and blindly apply them because they were taught so at university and do not question their applicability.

  5. Function over fashion. It's seen in everyday life. Common urban style, design of buildings, streets decoration, all is down to minimum required for it to function but usually nothing just for the style, the beauty. Programming-wise it's seen in the lack of beautiful UI design. Most corporate and personal sites are rather old-stylish and boring. You also can't persuade the boss and the colleagues to do some polishing because they don't see any tangible benefits.

  6. Complexity and bureaucracy is part of the lifestyle. People take it further and apply everywhere. Personal relationships. work details, decisions and solutions often result in multiple artifacts to document what was done. Programming code often comes out with unnecessary elements, abstraction levels and compositions because it seems to the people more serious that way. The KISS principle is not really popular.

  7. "Saving face" seems to be very important, to appear successful, not to show signs of weakness or failure to anybody else (if you have it's almost certainly will be used against you). In work practice admitting failure comes rather hard, people do everything not to "lose face". Taking critic also comes hard. Criticizing somebody (with the good cause or not) is a sure way to make an enemy. Saying what one has on the mind is not practiced which makes it rather difficult to understand who stands where.

Bottom line is, good executors, planning and schedule top, precision is good. Innovation and creativity are however not to be expected.


The second example deals with the Russian culture to which I belong. It's quite different.

  1. Schedule and planning do not seem to be of particular value. Minor deviations do not concern people unless/until it begins to threaten the bigger outcome. People don't like to live per plan, prefer sort of a mental freedom, do whatever things they like and when they feel like doing them. Programming-wise they may ignore the "non-essential" like writing documentation and doing paper-work. People are much easier with coming and going, if they're bored with the project, dislike the atmosphere and so on. Long-term commitment per-life is not to be expected, people don't want to be bound, don't expect them to come once and stay till retirement. This is nicely seen at the mobile phone market. While in Europe/US it's ubiquitous to have 2-year-long contracts, in Russia this is not practiced. People don't want to be bound for that long and they would probably get bored with their gratis phones in just a few months say nothing of 2 years.

  2. People dislike bureaucracy and prefer informal relationships. Little to no paper work, as few discussions and meetings as possible, simply do the work. Complexity in code is not liked, simple decisions and direct ways are preferred. Boring routine is not favored. Some "non-essential" tasks like commenting and documentation may be ignored. People may put off certain boring stuff and do instead more interesting things or do the boring part in an unexpected way which will keep them motivated.

  3. Costs are not that important. People like to get something newer, cooler, more interesting and more modern just so, without a business case. If it provides satisfaction, they usually won't be unsettled about extra costs incurred.

  4. People are very enthusiastic about everything. Food, music, clothes, artifacts and ideas from different countries and cultures get through the open doors. Programming-wise people would experiment with a new language, tool or library just so, out of curiosity, with a business case or without. Different philosophies and methodologies, all is gladly taken, touched, bitten, experimented with and mixed together in a funky fashion.

  5. Beauty and style are very important. People would spend extra time and money on something that doesn't have any tangible benefits but only satisfies some artistic sense. Often they prefer something stylish over something more functional. Beautiful UI design is highly appreciated. Programming-wise people would reengineer code which seems clumsy and unstructured simply to add more style to it, even if it was perfectly working before, resulting in extra time spent.

  6. Prescription and rules are often disregarded and even despised, people might do something totally different if they're persuaded it's going to be better (or cooler - can't resists that). Many decisions from above will be questioned and argued about. And yes, everybody has a strong opinion just about everything.

  7. Predictability of life is quite low so people always plan for any contingency. The same is often reflected in code, rather a pessimistic attitude, with double checks and fallback plans. Architecture may reflect readiness to future possible changes, but not astronaut-like overarchitecturing. Agile is not a modern methodology but the way of the life. Also people are used to changes and don't try to control every aspect of their life. When something unexpected happens, people just nod, say "will be better next time" and move on without going mental, starting drinking, drugs etc. A project failure doesn't result in suicides, is taken easily.

  8. Political correctness is low so people may just say what they think up front when you're not expecting it. Be prepared.

A different bottom line is, expect the unexpected, something unusual and creative but don't expect machine precision, schedule and following the rules.


Which one is better cannot be easily answered. One work type is better covered by one worker category, the other is by a different one. Bad if people are assigned wrong tasks for their mentality. I suppose it is a challenge for an international team manager to recognize that problem. I'm not sure it's ever been discussed with application to IT industry.

  • 1
    Thanks for the anecdotal comments. I see style affected a lot, and interesting to read your comments. – Jé Queue Jan 30 '11 at 22:02
  • Even though there is some truth in your observation of Germans, I had to -1 it because these are vast over-generalizations you are mentioning (Not all Germans are the way you described them - same for Russians, I presume). – Jas Jan 31 '11 at 14:34
  • Gosh, it sounds like an instantiation of the "Classic" and "Romantic" concepts from the book "Zen and the Art of Motorcycle Maintenance" in to two entire populations! Amazing. –  Apr 12 '17 at 18:53
3

I've not seen much difference other than in the code comments. There sometimes I can clearly tell that this bit was written by someone whose first language is not English.

Marcie
  • 3,009
  • 2
  • 19
  • 21
2

I am not sure about the quality of code, but it is certain that each programmer does its job differently.

It has been said that natural languages influenced our thinking (so I'd guess it would influence programming), this school of thought has led to the development of artificial languages with different paradigms in an attempt to prove it: Loglan, for example. I don't know if much came out of it.

What I am certain of, however, is that education (in which language does play a part, but other things do too) certainly affects one's point of view on a dedicated problem.

I have colleagues who went to "technical" schools, and learn the gut of C/C++ while at school, and they do tend to have a technical approach to the problems, while I have a tendency to seat back, think about it (sometimes for a good time) before I feel I have a deep enough understanding to get to it... and yet we were raised in the same country (mostly), speak the same language, and have more or less the same culture (just a different educational background).

My only experience with "foreign" colleagues has been a Spanish (two years ago) and an Italian (to this day), and they both work more or less like the rest of the team (French). Perhaps if I were to encounter somewhere from a non-latin background could I spot a difference.

As such, I am not sure that language is the primary cause for the differences in style. I think education and character may have at least as much impact.

Matthieu M.
  • 14,567
  • 4
  • 44
  • 65
1

It's not language but some kind of cultural background, "national character". Which seems to work overall (e.g. Englishmen are cool, Germans are precise etc.), but it fails on individual persons.

Anyway, it's up to you to find out measuring system, pick projects from open source repositories, examine code, and make some statistics.

It would be better if you could collect some other attributes of authors: age, education, industry etc.

ern0
  • 1,035
  • 3
  • 8
  • 14
  • I'm not sure the point of some of your statements. Are you saying you do NOT believe native spoken language affects problem-solving approaches in programming? – Jé Queue Sep 17 '10 at 15:55
  • 1
    Yeah, I don't believe that the language affects. I think "national character" counts more. And I think, that this "national character" is not a good name, "cultural influences" should be better (and at not least, less seems/are racist). Just think of village VS metropolis, we're-just-out-of-40-years-of-communism-nightmare VS democracy-for-200-years. – ern0 Sep 22 '10 at 07:50
  • He said you have to take in EVERYTHING, not just the language semantics in exclusion to everything else. Upvote the man at least to counteract the ignorance of some people. – Filip Dupanović Jan 31 '11 at 11:34
  • +1. I live in Austria, we speak German here, but the typical coding style of my German coworkers is radically different than that of my Austrian coworkers. – user281377 Jan 31 '11 at 12:09
0

One's native language does not affect how you code. But being able to understand English however is pretty important, as most programming books, blogs, QA sites, like SO, etc. tend to be in English

Cultural differences may be a factor however. Universities in different countries may teach from a different viewpoint. Some countries may have a stronger agile movement than other countries. For example, Japanese factories are known for their Lean manufacturing, that many are trying to copy, but fail because they lack the understanding of the fundamental underlying values.

Pete
  • 8,916
  • 3
  • 41
  • 53
0

I think education (I mean the style of it, rather than quality) is a much stronger factor. Even basic maths (which one would think is fairly universal) is taught in completely different ways around the world, let alone something as intangible and fuzzy as problem solving.

So if there is a language effect (which I personally doubt, based on my experiences), it is overshadowed by style of education.

biziclop
  • 3,351
  • 21
  • 22