The title might be a bit dramatic, it was a bit of an argument between me and my colleague from the US during code review regarding the approach I took. Happens all the time, right? I was somewhat irritated because my colleague didn’t seem to hear my arguments very well. I explained how my solution is conceptually better than existing one, because it introduced a cleaner interface in a sense of “pure function” idea. But instead of attacking my concept my opponent simply pointed out that we could just use existing code here, here and there, and achieve the same result with existing utilities, resulting in a simpler code.
While his arguments made perfect sense and were completely logical, I couldn't help but keep wondering why he was thinking of these implementation details when we did not agree on the core concept! And then I stumbled upon this schema somewhere on the Internet. Note the last line, persuasion style.
The US and Russia lie on completely opposite ends of this axis! And Russia is on the “Principles First” side which means we tend to focus on philosophical ideas, theory and method first and all the implementation details are deduced from them. The US people on the other hand often focus on practical matters, and derive generic knowledge from specific use cases. Of course, individuals from both cultures may diverge from what’s generally accepted for that culture but a colleague and I fell so nicely into our respective statistical averages that it was even funny. Real “Aha!” moment for me.
In the past I had an idea that every software engineer in the world shares a similar background in (computer) science and strives for the perfection of the code we produce and thus all discussions should be automatically constructive, provided that we conduct them politely and logically consistently. I found that it’s true to some extent, and while speaking with engineers from around the world I definitely felt we have a lot in common, but there are a noticeable number of exceptions.
After researching this topic some more, I found that there is a recent book by Erin Meyer - “The Culture Map: decoding how people think, lead and get things done across cultures”. I read it and can absolutely recommend it if you want to know what all the other lines on that schema mean and how to deal with situations like the above in a productive and constructive way. Of course, something seems obvious, many people know about Japanese politeness and German punctuality, but there are also very interesting observations. Even some features of one's own culture become noticeable only when put in contrast with others. For example, I did not realize that Russian style of communication is relatively “High-context” meaning that many things are “in the air” or between the lines. Maybe that's one of the reasons why when I talk to people in Germany I often feel like I'm missing something. I thought it was because of the language barrier and I’m just an introvert (yes, I didn’t communicate with people much in Russia either), but maybe it’s also a cultural thing, and I’m looking for allegories which aren’t there at all.
Wrapping the post up, fortunately for me, nobody’s feelings were hurt during this review and even if I was a little annoyed I did not let it spill over into the conversation. Also, being both engineers, we valued logic and simplicity of code above everything else so we came to a consensus. But if I was aware of these cultural differences at the time of the review it would definitely go smoother.
Top comments (0)