技術力、どう評価すべき?新卒・インターン採用編

f:id:KKosukeee:20210413143515p:plain

こんにちは!株式会社ハイヤールー代表葛岡(@kkosukeee)です。

本ブログではこれまで、なぜ優秀なエンジニア採用にはコーディング試験が必須なのか、実際にHireRooで使えるコーディング試験の機能紹介などを行いました。

参考記事

本記事では実際にβ版プロダクトを使って頂いてる導入企業様の活用シーンでも特に多い「新卒・インターン採用におけるコーディング試験にフォーカスを絞ってどのように技術力を評価すれば良いか」について執筆したいと思います。

本記事が少しでもエンジニアの新卒・インターン採用における技術力の明瞭化に役立てると幸いです。

新卒・インターンにおける技術力評価の課題

昨今会社の大小問わず新卒やインターン採用に力を入れる会社が増えています。年間数十人の新卒を通年採用しているスタートアップや、Yahoo!の様に数百人採用している会社などさまざまです。

エンジニアの新卒・インターン採用は中途採用と比べて判断軸が少ないため採用に苦労している会社も少なくないかと思います。これにはポートフォリオがなかったり、過去の経歴がなかったりという理由があり、学術論文や履歴書のみでの技術力評価は困難です。

もちろん学歴は大きな判断材料となりますが、学歴だけで評価して痛い目を見たという会社も少なくなく、技術力の評価という観点では不十分な材料だと思います。

これらの理由で新卒・インターン採用は念入りに時間を使い技術力の評価を行っている会社も多いですが、実際私の所属していた会社では人事、エンジニア共に大きな負担になっており、ピーク時期には開発業務の時間を削り、論文・Githubアカウントのチェックなどマニュアルスクリーニングのプロセスを行っていました。

それではこの様な採用下においてどのように効率的に質を保ち、新卒・インターンの技術力の評価・採用を行えるでしょうか?私達は答えは『コーディング試験』にあると思っています。

コーディング試験という選択肢

コーディング試験は技術力を評価するのに最適なソリューションであり、ポートフォリオや経歴がない新卒・インターンの採用では更に力を発揮します。コーディング試験の形式に関しては複数あり、実際に事例として第一弾の記事で紹介しましたが、新卒・インターン採用には特にオフラインでのコーディング試験がスクリーニングとして力を発揮します。

コーディング試験ではカルチャーやバリューに共感と行った非技術的な指標は見れませんが、技術力に関しては嘘がつけないため、技術力がなくても面接が上手くいったので入社できたというケースが激減するためです。

GoogleやFacebookでは意図的に前述の『False Positive』(本当は技術力があまりないけどたまたま入れたというケース)と言われる候補者を徹底的にスクリーニングすることで採用ミスマッチや期待値と実際値のギャップを0に近づけており、多少の『False Negative』(本当はすごく優秀だけど落としてしまったというケース)は許容しています。

新卒・インターンの方にはコンピューターサイエンスの知識があれば解けるようなアルゴリズムの課題をいくつか出題し、解いてもらうといった形式が技術力によるスクリーニング・技術力の評価といった両方の観点で非常に有効的です。実際に例を見ていきましょう。(エンジニアのバックグラウンドがない方は雰囲気だけでも伝わると幸いです)

問題1

数字の文字列 `nums` の和を求める効率的なアルゴリズムを実装してください。

クラスはコンストラクタである `init` と 任意のインデックス `i` から `j` の和を求める `get` をサポートします。

例: nums = [1,2,3,4,5], i = 1, j = 3
答: 9 (2+3+4 = 9)

例: nums = [1,2,3,4,5], i = 2, j = 3
答: 7 (3 + 4 = 7)

このようにクラスを設計していただき、アルゴリズムの問題を解いてもらうといった問題は現実問題に近く、また複数の回答が存在することから候補者の技術力の評価に利用できます。ほとんどの候補者の方が以下のような回答を提出すると思います。

回答1

コンストラクタで `nums` をpropertyとしてアサインし、 `get` が呼ばれる度に `i` から `j` の要素を足し合わせて結果を返す。

この回答は正解ですが最適解ではありません。コンピューターサイエンスの知識やAmortizationという知識を応用すると更に最適な回答にたどり着けます。以下のような回答を提出した候補者は回答1と比較すると基礎知識がしっかりあることがわかります。

回答2

コンストラクタで事前に任意のインデックス `i` での累積を計算しpropertyとしてアサイン。 `get` が呼ばれた際には `cumsum[j] - cumsum[i-1]` を結果として返す。

この様な回答から候補者のコンピューターサイエンスにおける基礎知識や地頭力の判断が行なえます。大事なのはこの様な問題を提出して回答してもらうフローをプロセス化し、候補者の優劣をつけ質を担保しながらスクリーニングコストを下げることです。

技術力の見極めは時間と質のトレードオフです。時間ばかり割いてしまうと優秀なエンジニア採用に繋がるもの、評価者であるエンジニアの負担が大きくなり、逆に質に妥協するとエンジニアの負担は下がりますが、優秀なエンジニアが採用できなくなり結果会社としてビジネスの成功に繋がりません。

また採用においては正解はなく、各会社の規模感や求めている人物像など変数になり得る要素がたくさんあります。一概にコーディング試験が全ての問題を解くわけではありませんが、キャリアやポートフォリオをもとに採用する中途とは異なり、新卒採用における技術力の評価は難しいことは明らかです。

そのためプロセス化されたコーディング試験を新卒採用に適用し、データとして技術力を蓄積させることでより質の高く効率的な採用プロセスが実現できます。日本でもメルカリ、LINEなど新卒・インターン採用にコーディング試験を導入しているテック企業が増えてきています。

続いて前述した質と時間のトレードオフを意識しながら新卒採用に成功している会社の事例を見ていきましょう。

採用に成功している会社の事例

続いて実際に新卒・インターンの採用に成功している国内の会社の事例を見ていきます。ここでは私自身実際にインターン採用に携わらせていただいたディー・エヌ・エーを紹介します。

ディー・エヌ・エー

ディー・エヌ・エーは日本では誰もが知るテック企業の一つです。優秀なエンジニアを揃えており、新卒・インターンの方も初年から大きな成果を残すなど、非常に優秀なエンジニア組織を維持しています。

ディー・エヌ・エーでは夏季と冬季にインターンを募集し、数週間という期間で実際に社内のエンジニアと一緒に働き最後に成果発表会を行うという形式です。

インターンに参加してもらう前には多くの履歴書と学術論文を社内の人間で手分けしてスクリーニングを行い、書類を通過した候補者のみが面接を行い、通過した際には晴れてインターンに参加という形になっています。

インターン用の課題の事前準備としてはエンジニアが事前に数々のミーティングを行い、セキュリティーを考慮した環境設定やお題の設定などをインターン開始までに準備するという形式を取っていました。

期間の異なる夏季と冬季で出題課題は異なり、期間の長い夏季では実際のプロジェクトにジョインしていただき、社内のメンバーと通常業務のように仕事を進めていきます。期間の短い冬季では期間を考慮した上で一週間程度で終わる実務とは直接関係のない課題を出し、チームを組んで期限までに課題を提出してもらうという形式でした。

またインターンにはメンターという制度があり、メンターの方は定期的にインターンの方とのコミュニケーションを取ったり、社内のメンバーとの交流の場を設けるためにメンター以外の方とのランチの場を設けたり、インターン期間中は評価をするエンジニアも実務そっちのけで採用に携わっていました。

前述の通りディー・エヌ・エーでは在籍中に冬季インターンにメンターとして関わらせていただきました。良くも悪くもメンターとしての業務はそれなりに量があり、実務とメンタリング半々くらいの労力を使い通常時と比べると実務の進捗が良くなかったことを覚えています。ただこれほど労力を割き見極めを行うので、採用された方やインターンに参加された方は全員非常に優秀で一年目から成果を発揮していく様な方が多かった印象があります。

しかしこの様に圧倒的に質重視なプロセスはすべての会社が真似できるわけではなく、ディー・エヌ・エーの様に体力があり、非常に強いエンジニア組織を持ちながら人事とエンジニアが共に採用にコミットする環境だからこそ実現できる素晴らしいプロセスと感じていました。

スタートアップやIPO手前の数百人規模の会社では採用における負担などからなかなか実現できないのが現実です。ディー・エヌ・エーやメルカリのような体力のある企業でない限り、多少質に妥協してでも採用するバランスの取れた採用をしている会社も少なくないと思います。

しかしコーディング試験では蓄積されたデータともに、不明瞭な候補者の技術力が明瞭化されることにより、トップ1%だけを取りたい採用(GoogleやFacebookが実践)にもスタートアップやIPO手前のとにかく人を増やさないといけないフェーズでの採用にも利用することができます。技術力が定量化されることにより内部のエンジニアと比較したり新しい採用が生まれるのです。

まとめ

ここまで読んでいただきありがとうございます。本記事では新卒・インターン採用におけるコーディング試験の大事さと事例からみる新卒・インターン採用の方法などを紹介しました。

コーディング試験はエンジニア採用において非常に魅力的なものといったことが伝われば幸いです。ですが、実際にはコーディング試験の導入はコストが高く、面接官のティーチングなど、導入に至るまでには考慮しないと行けない様々な壁があります。

私達は現状課題を解くべく、会社の規模問わず簡単に導入できるSaaSとして『HireRoo(ハイヤールー)』というプロダクトを3月にβリリースしました(プレスリリース)。このサービスを通して少しでも日本のエンジニア採用にコーディング試験が根付き、より明瞭なエンジニア採用が実現できると私達は信じています。

もしご興味を持たれた方や、課題感に共感された方がいれば是非お気軽に弊社LPからお問い合わせ下さい。それではまた!

https://hireroo.io/

f:id:KKosukeee:20210309154741p:plain