最近エンジニアのコミュニティによく足を運ぶようになって、技術者のみならず採用担当ともお話しする機会が増えました。

その中で、色んな会社の方が共通した悩みがあります。それは「案件があるけど、エンジニアが足りない」ことです。

同じエンジニアでも能力によっては生産性が 10 倍の違うもあるため、エンジニア不足が問題ではなく、優秀なエンジニアが不足しているというのは真の問題と私は判断しました。

今回は日本の IT 業界において、エンジニアに関する問題と優秀なエンジニアを採用する方法を考察してみたいと思います。

優秀なエンジニアの大切さ

まず、なぜ企業によって優秀なエンジニアは大切なのかを説明します。 優秀なエンジニアは技術に精通し、凡庸なエンジニアより何倍も生産性があげられることは言うまでもない。また、専門的な観点や広い視野で問題の本質を捉えるため、作り出されるプロダクトは品質と拡張性が高いことが多い。

そして、一番大事な要素は優秀なエンジニアはさらに優秀なエンジニアを呼び寄せ、相乗効果があります。二流のエンジニアは自分よりさらに酷い三流を呼び寄せる傾向にあります。

そのため、テック企業ならば是非とも優秀なエンジニアを一人でも囲みたいところです。

だが、日本の優秀なエンジニアは外資に行ったり、海外に移住したりすることが多く、少し残念な状況です。では、なぜ優秀なエンジニアは日本に留まらないのか、それは日本の企業文化と IT 相性が悪いと私は思います。

日本の企業文化と IT の相性

ここで、日本人の国民性は IT との相性が悪いことを今一度認識する必要があります。 日本人は素晴らしい民族です。勤勉で真面目、互いに思いやり、人に迷惑をかけない、協調性を大事にする民族です。日本の企業文化のそのような国民性から生まれます。

日本企業は何かを判断する際に多方面の意見を取り入れ、最終的に鶴の一声で物事が決まることが多いです。そのような環境の中で、能力あるエンジニアの意見は埋もれても仕方ありません。どうしても斬新なアイディアが生まれにくい土壌になってしまいます。

しかし、IT 業界やソフトウェア産業において、クリエイティブなプロダクトや技術を生み出すのはほんの一握りの人です。アメリカではそういった個性や才能のある人たちを大切に扱い、重要なポストに置き、挑戦的な仕事を任せます。

以前、知り合いから聞いた話ですが、とある海外の優秀なデータ分析のエンジニアはメガベンチャーの DeXX に紹介したが、DeXX 側はそのエンジニアは日本語がそこまで喋れないという理由で断ったそうです。

※ ちなみに、そのエンジニアはデータ分析の分野では第一人者くらい優秀です。

もちろん、仕事でコミュニケーションは大事で、日本語ができないと業務に支障がある DeXX 側の懸念は十分理解できます。しかし、IT 業界で革新をするなら、そのような人材は絶対に採用しておくべきです。今日本語はできなくとも、翻訳ツールが充実しているのでカバーする手段はいくらでもあります。協調性を大事にするあまり、人材を逃してしまうのは実に残念です。

また、これは IT 業界に限られたことではないが、日本企業自体は優秀な人材に与える報酬は欧米と比較すると低い傾向にあります。日本のエンジニアの最高水準平均年収の 710 万円に対して、シリコンバレーのエンジニアの最低水準平均年収は 1000 万円です。

余談だが、私の友人曰く、日本の接客サービス業において、英語ができる人と英語できない人を比べて、大して報酬が変わらない。なら海外で接客サービス業の仕事をして、現地の日本人を相手にしたほうがよっぽど稼げるそうです。

日本企業が出せる待遇

日本企業は金銭の待遇で優秀なエンジニアを採用することが難しい現実を理解したところで、金銭以外の待遇を考えてみましょう。

やりがいのある現場でチャレンジできる業務があれば、そこで働きたいエンジニアは必ずいます。しかし、現実問題として日本企業の DX 化の進みが遅く、泥臭い現場(Excel 方眼紙の設計書、ユニットテストがなく手動でテスト、コード修正はコメントアウト etc…)が多い。アジャイル文化が浸透しており、DevOps チームで働けることは非常に稀です。

金銭も業務もエンジニアにとって魅力がないならば、打つ手はなしか。 いいえ、まだあります。

エンジニアにとって快適な開発環境を整えてあげることなら、どの企業でも可能です。

  • 高スペックの MacBookPro (まぁ、別に Windows でもいい)
  • 生産性向上のソフト(JetBrains, Adobe, Figma)
  • AI アシスタント(ChatGPTPlus, Github Copilot)
  • 学習リソース(書籍購入、オンラインコース受講)

日々の業務で最高の開発環境を使用できることで幸福感が上がるうえ、技術好きのエンジニアならば、これらの待遇に魅力を感じないはずはない。 企業にとって年収 100 万円 UP と比べれば、これらの待遇なんて容易いものです。

そして、エンジニアが技術を研鑽できるように、企業側はなるべく残業を無くし、時間の余裕を与えることが大事です。高スペックの PC を与えても、開発の仕事ができず、Excel 弄りばかりだと勿体無い。

理想の選考フロー

待遇面が改善されたところで、企業側が優秀なエンジニアの採用確立を高める選考フローを考えてみましょう。

最近は採用フローで応募者に実技試験としてコーディングテストを課すことがあります。これは私に言わせればあまり賢明な方法ではありません。

業務でのコーディングも実際にインターネットを調べて参考にすることが多いです。ましてインターネットを参考にしない実技試験のコーディング問題ができたからといって、応募者が業務できるかの判断指標になりません。その応募者の地頭の良さと、プログラミング言語に関する慣れを測る指標にはいいですが…

個人的に応募者の実力見極める方法は以下です。

  • 実際の業務の機能を課題とする
  • 1 週間を期限に応募者に与える (難易度自体は 1~3 日で出来るもの)
  • 機能のブランチを切ってあげる
  • 機能を完成させて、main ブランチへマージが可能が最低条件
  • 合否に関わらず、応募者に報酬を与える

この方法では、Git の履歴を見れば応募者は実際の業務でどういう思想、どういう方法で開発することがわかります。期限を守ったのか、テストを実施して品質担保したか、リファクタしたのか…etc

以下の選考フローは私個人的に理想とするものです。

  1. 人事は応募者の人間性を確認
  2. 課題で応募者の業務遂行力を確認
  3. 現場の技術者は応募者のチームに馴染めるかを確認
  4. 役職者は応募者の志を確認

面接で優秀なエンジニアを見分ける方法

企業側は面接で優秀なエンジニアを見分ける方法としては、「今までのプロジェクトで一番困難な課題は何か、どうやって解決したか。」の質問をするといいです。

本当に困難に立ち向かったことのある人は、その時の詳細内容を事細かく記憶しており、説明できます。一方、嘘ついている人は抽象的なことしか言えず、詳細を尋ねられると返答に困ってしまいます。

エンジニア側が心掛けるべきこと

また、エンジニア自身は日々の努力で技術を磨き、理解を深めることが大切ですが、 自分の考えや成果を他人に伝える能力を磨くことも重要です。

エンジニアならコミュニケーションを恐れてはいけない。他人に自分の考えを伝わらなければ、自分の才能を放棄したことと一緒です。

まとめ

  1. エンジニア不足の真の問題: 問題は単にエンジニアが足りないのではなく、優秀なエンジニアが不足していることです。優秀なエンジニアは技術に精通し、生産性が高く、さらに優秀なエンジニアを呼び寄せる能力があります。

  2. 日本の企業文化と IT の相性: 日本の企業文化は多方面の意見を取り入れ、協調性を重視する傾向がありますが、これが斬新なアイディアや個性的な才能の発揮を妨げている可能性があります。また、日本企業の報酬水準は欧米に比べて低いことも優秀なエンジニアを引きつける上での障壁となっています。

  3. 待遇改善の提案: 金銭的な待遇を上げれないなら、快適な開発環境の提供や業務のやりがい、時間の余裕を与えることがエンジニアにとっての魅力となります。

  4. 理想の選考フロー: 実際の業務に近い課題を与え、応募者の業務遂行力やチームへの適合性を確認することが重要です。

  5. 面接での見分け方: 困難な課題にどのように対処したかを詳細に聞くことで、応募者の実力を見極めることができます。

  6. エンジニア側の心掛け: 技術の習得と理解に努めるとともに、自分の考えや成果を伝えるコミュニケーション能力も重要です。

Written-By-Human-Not-By-AI-Badge-white