ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

【読者質問 02】日本と海外のエンジニアの「平均的な技術力」に違いはあるか?

ご質問ありがとうございます。ではさっそく質問から

ブログを読ませていただいた限り、面接でプログラミングテストをされることが一般的なようですが、海外のエンジニアの方は、普段からアルゴリズムの知識、ネットワークの知識、コンピュータの知識について詳細に語れるくらいの知識を持っているものなのでしょうか。日本のエンジニアと海外のエンジニアの「平均的な技術力」にどのような違いがありますか。

知識の有無に関しては日本と英語圏のエンジニアの間にそれほど違いがあると思ったことはない。優秀な人達やそうでもない人達が混ざり合っているのが社会だからだ。しかし人はそれぞれの環境に合わせて最適化されるので「環境の違いがエンジニアひとりひとりの違いに色濃く出ているなー」というのが私なりの回答になる。

まず質問の前半部分にある「色んな知識を語れるぐらいか?」について。どれぐらい語れるかにもよるが、普通にITエンジニアをしている人でアルゴリズムが一体ナニなのかまったく知らない、なんて人は日本にも英語圏にもほとんど居ないだろう。ひとりひとりのエンジニアと向き合って話せばそれが日本人でもアメリカ人でも「よく知ってる奴も居れば知らない奴も居る」というのが実情。
元Googleエンジニアに「やっぱりGoogle社内ってのはめちゃくちゃに優秀な奴ばっかりか?」と聞いたことがあるが、その率直な答えは「いや、そんなことねーよ。平均すれば技術に長けた人が多い会社であることは間違い無いが、なんといっても大企業だし従業員数が多いんだ。中には『なんでこの人がグーグラーなの?』ってのも居るって」だった。感覚値なので真意を確かめる術は無いが、たくさん人が居ることは様々なレベルの人が居る、ということなのだろう。
したがってひとことで「海外のエンジニア」と言ってもレベルは様々です、が回答になる。

質問の後半部分の「技術力の違い」について。これは技術レベルの高低ではなく、種類の違いを感じる。なぜならエンジニアが置かれている環境が違うからだ。英語圏のエンジニアの労働環境が日本のと異なる点は大きく言うと以下の3点。

  1. できなければクビが普通にある
  2. ジョブスコープが決まっている
  3. SEがいない

それぞれがそのまま英語圏のエンジニアの特徴にも言い換えられる。

1) できなければクビが普通にある
できない人はクビになってしまうので、極端に技術力が無いのになぜがずっと在籍している人というのを見たことがない。こうして文字にすると「なんで技術力が無くてエンジニアチームに在籍してる奴が居るんだよ?」と当然な質問が出てきそうだが、少なくとも私が日本に居た時は確かにそういう方が居た。「ちょっとこの人ってエンジニアに向いてないな」という人が居て、それでも不思議なぐらいにクビにならずに済んでいた。というか日本の会社である朝出社したら同僚がクビになって消えていた、なんてことは聞いたこと無かった。ある意味で日本的雇用のいいところかもしれないが英語圏では普通にクビがある。なんでもお構いなしにばんばんクビを切ってくるなんて無慈悲な世界ではないが、あることはある。したがって英語圏では極端にデキない人というのは無い。

2)ジョブスコープが決まっている
入社する前からジョブスコープという「あなたにはこれをやってもらいます」が決まっているので、まったく畑違いのことを頼まれることは少ない。そのためいわゆる英語圏のエンジニアは専門バカ的な感じがある。ウェブ系の場合、フロントエンドとバックエンドのエンジニアは違う人になっている。iOSとAndroidをひとりのエンジニアが両方見ることはあったが、ひとりでフロントからモバイルアプリ、ウェブ、バックエンド、インフラまで全部やります、って人には会ったことが無い。でも日本のブログなんかにあるエンジニアの経歴にはそういう全方向OKです!みたいな方が居てちょっと感心してしまう。
英語圏でそういうマルチな能力をまったく必要としていない訳ではないと思う。しかし専門性があって、その中で能力を発揮して欲しいという意図は英語圏の方が強く感じる。
日本人の友人で日本の大手衣料系会社で店舗管理をやっていた奴がいて、そいつから「今度、人事部に異動することになったんだよ」と聞いてなんかすごいびっくりした。こういうのは英語圏ではあり得ない。店舗管理の専門性と人事の専門性は明らかに違うし、もし人事部に人が足りないのなら、外から人事の専門性を持った人材を採ってくるのが英語圏のやり方だ。社内の人間を別部署に異動させて補うという発想が元から無い。エンジニアについても一緒。「次からSwiftが必要になるから、勉強しとけ」なんて言われたことも言ったこともない。そうなったらただSwiftが今日からできる即戦力ある人を雇うだけ。
そんな背景もあってエンジニアはちょっと専門バカ的になってしまうのだろう。
スタックオーバーフローにあったエンジニアの給与調査で肩書に「フルスタック」の文字が入ると給与が低くなる傾向がある、とデータが出ていた。その理由もなんとなくこの辺りにある気がする。

3)SEがいない
SEは日本だけに存在する職種で英語圏には無い。こちらの記事に詳しいことは書いたが、それぞれのエンジニアが受け持つ範囲が日本で言うところの上流から下流まで全てになる。コーディングの知識が無い人が誰かに「こういう機能を実装しろー」と言って仕事が完結するポジションは無い。なので「エンジニア=専門の範囲内において設計から保守まで全部見ることができる人」となる。ビジネスよりの人が「こういう機能があるべき」と言ったとしてもエンジニアがコード書いている途中に「おいおい、そんなモン要らん。こっちの方がいいんだ。なぜなら。。。」とやってる場面がよくあるし、そうやらなければならない。

要は環境がこんな感じなのでそこで生活するエンジニアもそれに合わせている。当たり前すぎるので全員が英語できる、というのは省略した。(そこが一番大きな違いかも。。。)
日本と海外のエンジニアの「平均的な技術力」に違いはあるか?の回答でした。

ご質問あればぜひこちらから! しばらく質問箱は閉じることにしました。


海外転職の情報収集はこの本がいちおし。書評も書いた。

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com
tango-ruby.hatenablog.com