GO GLOBAL meetup #1 でLTした内容です。 https://go-global.connpass.com/event/108021/
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholQuipperのWebエンジニア採用におけるコードテストSoftware Engineer at Quipper鈴木 和幸 @kecholGO GLOBAL meetup #1
View Slide
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholQuipper という会社について➔ 教育系の(元)スタートアップ◆ 現在はリクルートマーケティングパートナーズの子会社➔ Quipper とスタディサプリというプロダクトを展開◆ サーバサイドは Ruby on Rails 、フロントエンドは React/Redux➔ インドネシア、フィリピン、メキシコ、日本の4つの国に拠点がある◆ 採用は各拠点でそれぞれ行っている◆ プロダクトチーム全体で60名ほどの規模
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol今日のお話https://quipper.hatenablog.com/entry/2018/10/09/coding_testブログに書いた話を改めてご紹介させてください。
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholWeb エンジニアの基本的な採用プロセス1. 書類のスクリーニング2. 一次面接3. コードテスト4. 二次面接5. VP of Engineering 面接6. オファー面談
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol現在行っているコードテスト➔ 1問あたり2時間程度で解ける問題を3問程度解いてもらう◆ テストがありTODOが明確◆ 1ファイルの編集で完結➔ 候補者には自宅で解いてもらい、解答を送ってもらう形式➔ 言語はRuby/JavaScript◆ 未経験でもキャッチアップできるレベルのもの※実際の問題ではありません
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholこういう形式になった経緯➔ もともとは1つのアプリケーションを丸ごと作ってもらう形式だった◆ コードテストのプロセスだけで2週間かかっていた◆ 提出されるコードが様々で合否判定が難しいものもあった➔ 結果、採用プロセスの中でコードテストでの落ち率が高かった◆ コードテストに時間がかかるため、選考中に他社に決まってしまう● そもそもコードテストを実施している会社が国内では少ない◆ コードテストをそもそも提出してもらえない◆ 偽陽性を避けるため合否判定が保守的になる
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol譲ったところ、譲れなかったところ➔ そもそもコードテストはなくさない◆ 候補者がどんなコードを書くのかを面接で聞き出すことは難しい◆ 書いたコードを公開していない候補者も多い➔ あくまで最低限のレベルを担保することに集中する◆ 最先端の技術やFWレベルのマイナーな知識は問わない◆ (現時点では)判定が曖昧になりやすい設計に関する知識を問わない➔ 1つのアプリケーションを作ってもらうことはしない◆ 要素技術(DB、API、フロントエンド等)を分解してそれぞれを問う◆ テストではより軽いライブラリ/FWを採用する場合もある
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholなぜ(今のところ)純粋なアルゴリズム問題ではないのか➔ 日本ではまだメジャーな手段と言えない◆ 欧米と違い、ソフトウェアエンジニアが必ずしもCSの学位を持っていることを前提としていない◆ 訓練が必要な技能であるが、日本企業がそうした問題を出すことがほとんどないため、候補者が訓練を積んでいない➔ 我々がサービスを作る上でまだボトルネックになっていない◆ 現時点ではDBのアクセス数やキャッシュ戦略がシステムのパフォーマンスに対して支配的なので、そちらをまず確認したい◆ 未経験の新卒を受け入れられるほど成熟したエンジニア組織ではない
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholどのように作っていったのか(1)➔ コードテストで見たい要素をスプレッドシートにまとめた◆ 同時にコードテストで担保できない部分をどうするかを議論
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholどのように作っていったのか(2)➔ 問題のたたき台を作り、社内のエンジニアのフィードバックを集めた◆ 適切な難易度かどうか(難しすぎないか、必要な時間は適切か)◆ 想定していない解答がないか(意図しない簡単な解き方がないか等)
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholどのように運用/レビューしているのか➔ 提出があったら GitHub のリポジトリ上に Pull Request を作ってレビュー◆ 環境の差が出ないように Dockerfile をテストに含めている◆ 普段のワークフロー(自動テスト/PRへのコメント)がやりやすい◆ 採用メンバーのエンジニアがモブレビュー➔ Codility や track などのオンラインテストはまだ利用していない◆ 正直まだちゃんと使ってみた上で判断ができていない◆ GUIを含むコードテストで CodePen を使って提出してもらうのはレビューしやすいかもしれない
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol導入してみた結果➔ 狙った通り提出までの時間が大幅に短縮➔ スクリーニングプロセスとしては機能していそう◆ コードテストで見たい部分の要件を満たしているかに加えて、書いてもらったコードの品質はどうかも見ている➔ とはいえまだ調整やメンテナンスは必要◆ まだ簡単すぎるのではという疑念を捨てきれない◆ 継続的なライブラリのアップデート➔ コードテスト後の二次面接(技術面接)も合わせてまだまだ議論中◆ コードテストを踏まえてどういう観点の質問をすべきか
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol(余談)一方、インドネシアでは➔ 1アプリケーションを丸ごと作る構成を変えずに実施◆ 現地企業はほとんどがコードテストを実施しており、日本のようにコードテストの実施が採用上の不利になることがない◆ 過去、他の候補者のコードを使ってチートしてきた候補者がおり、それなりの量のコードを書いて欲しい➔ アプリケーションの実装の達成レベルを段階的に定義◆ コードテストの結果でオファーが変わる◆ どのレベルのテストを送るかは面接等で事前に判断
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kecholQuipperのWebエンジニア採用におけるコードテストSoftware Engineer at Quipper鈴木 和幸 @kecholGO GLOBAL meetup #1Fin.