各国プログラマーのステレオタイプ的分類

タイラー・コーエンが、なぜソフトウエアでは一物一価の法則が成り立たず、米国や日本企業は自国の高いソフトウエア技術者を使い続けるのか――香港やシンガポールや中国ではもっと安価で雇えるにも関わらず――という一読者の疑問をブログエントリ化した。それに対し250を超えるコメントが付いたが、予想される通り、ソフトウエア開発においては単なるコーディングだけではなく、発注元と発注先とのコミュニケーションが重要なウェイトを占めるのだ、という指摘が相次いだ。その中で、各国のプログラマステレオタイプ的に寸評したコメントが少し面白かったので、以下に訳してみる:

Well, while we are being rude let me speak…
It’s not the individuals of course, but the culture. And culture is why Americans have succeeded in programming. So let me throw out some stereotypes that actually work as broad guidelines. When I speak of culture I am speaking of the ways of doing business and education in native countries. So when you work at a Japanese company, the corporate culture is very different than an American company. When you know how Germans are educated you know it makes a difference in their work ethic.

In Japan, collaboration and steadfastness are cultural hallmarks. Basically, when you work in Japanese terms. you get everybody together on an idea, you commit to the idea and get everyone’s agreement. Failure in Japanese terms means losing that consensus over time, or deviating from the promised goal. This makes for horrible software, because you always learn something new during development. But you must stick to the plan. On the upside, Japanese can be very imaginative and take great risks on long-term projects because of that consensus and dedication, just pick the right project..

In America, you pick a goal, then find a team to work on that goal find a funder to pay for it. If the goal changes, you change the team. That means there are always negotiations going on in the middle of a project. That’s good for software because when you learn something new, or need something new, you can reconfigure people, budgets, goals. On the downside it means a lot of stuff is never finished and sold too soon (to pay for all the change management). Creativity and flexibility are key. Americans jump around too much – which is why there’s only one Amazon.com and Bezos’ approach to his business is exceptional. (Somebody mentioned that jumping from Apple to Google is prohibited, but it begs the question of why do people have such short attention spans that they feel the need to jump). I think the American expectation that there is always derivative income in secondary markets (and in second place, marketshare-wise) has deleterious effects on quality control. But since you can make money selling Chryslers or spinning rims for Chryslers.. The best Americans all know that which is why they have so little patience with second-best, thus Microsoft hate and haters in general.

In Germany, you find a technical boss and everybody follows the boss. That can be excellent, if your boss is excellent. That’s good for software because it’s not easy to be a German boss, and it requires standards and collaboration. You get high quality and consistency throughout. What you don’t necessarily get is something that is intuitive to use or solves a problem people didn’t know they had. The German software industry is growing – they’re starting to do incubators and all that VC stuff. Interesting times are ahead.

My experience with Russians are that they are the best hackers. They trust themselves, they are self-contained and they work with meager resources and really sweat the details. I’ve worked with a few and I would love for all of my code to be eyeballed by a Russian programmer who’d make it work in less memory. I like the fatalism built into Russian engineering, makes stuff robust.

I also agree with what has been said about the Chinese. IP is meaningless. Chinese find monied interests and figure out what they’re going to do. As long as the venture works out to the satisfaction of the owners, the rest are details for the workers to figure out. In China, you are your skill and there is no prestige to be had for anything outside of competence, so find friends and do as much business as you can. Response to markets? What’s that? You work based upon the principles of your principals, period. It’s an extremely competitive approach, but what is creativity?

Indians are something like Russians in that they take pride in delivering at a minimum cost, they are unafraid to take scut work. The best Indian programmers tend to be insufferable and that is because they are actually very good and are often expected to work with other Indians who are simply competent, or worse. And you know this if you’ve worked with large numbers of Indian immigrants here in the states. Class systems are quickly established amongst them, and failure is berated. So in that regard they are like Germans, but much more friendly in general. But as has been said, neither German nor Russians nor Indians put a high value on creativity and flexibility. The communications and class barriers for Indians can be formidable, but a lot of difficulties I’ve observed have to do with the social dynamic of how Indians are employed. It’s complicated.

And to finish insulting everyone, I have never met a great French, Italian or Brit programmer. Great French sales guys, god you do not want to have to negotiate with them…


(拙訳)
歯に衣着せぬコメントが飛び交っているうちに、僕も一言。
問題なのはもちろん個人ではなく、文化なのだ。そして米国人がプログラミングに成功したのも文化が理由になっている。ということで、全般的なガイドラインとして実際に役立つステレオタイプを提示してみよう。ここで僕が文化と言っているのは、各国での仕事や教育の方法を指している。日本企業で働くと、企業文化が米国企業と非常に異なることが分かる。ドイツ人の教育方法を知れば、それが職業倫理において彼我の違いをもたらしていることが分かる。


日本では、協力と安定が文化的特徴となっている。日本の仕事のやり方では、基本的に、計画は全員参加で、計画責任者は皆の同意を得る。日本における失敗とは、時間が経つに連れてそのコンセンサスが失われてしまうこと、もしくは当初の目標から逸れてしまうことを指す。これはソフトウエアの開発としてはひどいやり方だ。というのは、ソフトウエアの開発過程では常に新しい発見があるからだ。にも関わらず、当初の計画を死守しなくてはならない。そのやり方の長所は、日本人は時として非常に創造的になり、上述のコンセンサスと献身ゆえに長期のプロジェクトに対し大きなリスクを取ることができる、という点だ。正しいプロジェクトを選択しさえすれば、だが…。


米国では、まず目標を設定し、それからその目標のために働くチームを見つけ、資金の出し手を見つける。目標が変われば、チームを変える。ということは、プロジェクトの最中では常に交渉事が進行中、ということだ。ソフトウエア開発においてはこれは良いやり方だ。というのは、何か新しいことが分かった時や、新しいことが必要になった時に、人員や予算や目標を再設定できるからだ。このやり方の短所は、(いろんな入れ替えの経費を賄うため)多くの点が未完成のまま製品をあまりにも早期に発売してしまう、という点だ。創造性と柔軟性が重視されているのだ。米国人は離合集散し過ぎる。アマゾンが唯一無二の存在で、ベゾスの手法が例外的である所以だ(誰かがアップルからグーグルへの転職が禁止されていることを指摘したが、そこから生じる疑問は、なぜあちこち移りたいと思うほど関心が短期にしか続かないのか、ということだ)。僕が思うには、いざとなれば二次的な市場で(ないし、市場占有率で見た二番手として)派生的な収入をいつでも稼げるさ、と米国人が考えていることが、品質管理に有害な影響を及ぼしている。クライスラー車を売ったり、クライスラー向けにホイールを売ったりして稼げるなら…、というわけだ。最良の米国人ならば皆、二線級の品質に自分たちが我慢ならない理由がそこにあることを知っている。マイクロソフト嫌いや米国製品への一般的な嫌悪感もそこに端を発しているのだ。


ドイツでは、技術面での親玉がいて、皆がその親玉に従う。もしその親玉が素晴らしければ、それは素晴らしい結果をもたらす。ソフトウエア開発においてそれは良いやり方だ。というのは、ドイツで親玉になるのは簡単なことではないし、そのやり方では規格と協調が必要とされるからだ。結果として、全体を通じた高い品質と一貫性が得られる。ただし、直観的に使用できる製品や、自分たちでも分かっていなかった問題を解決するような製品は得られない。ドイツのソフトウエア産業は成長している。起業家の養成をはじめとしたベンチャーキャピタル関連のこともいろいろと始まっており、これから面白くなりそうなところだ。


僕の経験から言えば、ロシア人は最高のハッカーだ。彼らは自分に自信を持っており、自己完結的で、リソースが乏しい状況でも働き、細部に労を惜しまない。数人のロシア人プログラマーと仕事をしたことがあるが、僕の書いたコードすべてを彼らに目を通してもらいたいと思った。彼らはそれをより小領域のメモリで動くようにする。ロシア人の工学に織り込まれた一種の運命論的な哲学も好きだ。それゆえに彼らは製品を頑健なものとするのだ。


中国についての皆のコメントに僕も賛成する。知的所有権は彼らにとって意味を持たない。中国人は儲け話を見つけ、それを自分たちがどうするかを考える。ベンチャーがオーナーが満足するような結果を出している限り、残りの問題は労働者が自分たちで対処すべき細部のことに過ぎない。中国では自分は保有する技術のみによって表現される存在であり、能力以外には何の特権も持っていない。従って仲間を見つけて思う存分仕事をしなさい、というわけだ。市場への対応? なにそれ? 自分の仕事は自分の方針に従って行うものであり、それ以上のものではない。それは非常に競争的な手法ではあるが、創造性はいずこ?


インド人は、最小コストで製品を作ることに誇りを持っており、下働きを厭わない点でロシア人と似ている。最良のインド人プログラマーは鼻持ちならない傾向があるが、それは、彼らが実際に非常に優秀なのと、そこそこ優秀もしくはそれ以下のインド人と働かねばならないことが多いせいだ。そのことは、ここ米国におけるインドからの移民の多くと仕事をすれば分かることだ。彼らの間ではたちまち階級が形作られ、失敗は罰せられる。その点で彼らはドイツ人のようでもあるが、一般にドイツ人よりは親しみやすい。しかし、これも指摘されたことだが、ドイツ人もロシア人もインド人も創造性や柔軟性を重視しない。インド人とのコミュニケーションや階級の壁は大きなものとなるが、僕が見た限り、多くの問題はインド人が雇われるようになった社会的動向に端を発している。それは複雑な話なのだ。


で、皆への侮辱の総仕上げとして、フランス人、イタリア人、英国人の優秀なプログラマーには会ったことが無い、と言っておこう。優秀なフランス人の営業マンはいたけどね――彼らと交渉する必要に迫られないことを切に願うよ…。


ちなみにこのエントリの最初のコメンターは、「Japanese companies seem to be really terrible at IT」と書いており、日本のIT産業は駄目、というのは残念ながらある程度世界の共通認識になっているようである。