Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QuipperのWebエンジニア採用におけるコードテスト / Coding Test for Web Dev Candidates at Quipper

QuipperのWebエンジニア採用におけるコードテスト / Coding Test for Web Dev Candidates at Quipper

GO GLOBAL meetup #1 でLTした内容です。
https://go-global.connpass.com/event/108021/

Kazuyuki Suzuki

November 26, 2018
Tweet

More Decks by Kazuyuki Suzuki

Other Decks in Programming

Transcript

  1. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    QuipperのWebエンジニア採用におけるコードテスト
    Software Engineer at Quipper
    鈴木 和幸 @kechol
    GO GLOBAL meetup #1

    View full-size slide

  2. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    Quipper という会社について
    ➔ 教育系の(元)スタートアップ
    ◆ 現在はリクルートマーケティングパートナーズの子会社
    ➔ Quipper とスタディサプリというプロダクトを展開
    ◆ サーバサイドは Ruby on Rails 、フロントエンドは React/Redux
    ➔ インドネシア、フィリピン、メキシコ、日本の4つの国に拠点がある
    ◆ 採用は各拠点でそれぞれ行っている
    ◆ プロダクトチーム全体で60名ほどの規模

    View full-size slide

  3. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    今日のお話
    https://quipper.hatenablog.com/entry/2018/10/09/coding_test
    ブログに書いた話を
    改めてご紹介させてく
    ださい。

    View full-size slide

  4. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    Web エンジニアの基本的な採用プロセス
    1. 書類のスクリーニング
    2. 一次面接
    3. コードテスト
    4. 二次面接
    5. VP of Engineering 面接
    6. オファー面談

    View full-size slide

  5. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    現在行っているコードテスト
    ➔ 1問あたり2時間程度で解ける問
    題を3問程度解いてもらう
    ◆ テストがありTODOが明確
    ◆ 1ファイルの編集で完結
    ➔ 候補者には自宅で解いてもらい、
    解答を送ってもらう形式
    ➔ 言語はRuby/JavaScript
    ◆ 未経験でもキャッチアップで
    きるレベルのもの
    ※実際の問題ではありません

    View full-size slide

  6. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    こういう形式になった経緯
    ➔ もともとは1つのアプリケーションを丸ごと作ってもらう形式だった
    ◆ コードテストのプロセスだけで2週間かかっていた
    ◆ 提出されるコードが様々で合否判定が難しいものもあった
    ➔ 結果、採用プロセスの中でコードテストでの落ち率が高かった
    ◆ コードテストに時間がかかるため、選考中に他社に決まってしまう
    ● そもそもコードテストを実施している会社が国内では少ない
    ◆ コードテストをそもそも提出してもらえない
    ◆ 偽陽性を避けるため合否判定が保守的になる

    View full-size slide

  7. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    譲ったところ、譲れなかったところ
    ➔ そもそもコードテストはなくさない
    ◆ 候補者がどんなコードを書くのかを面接で聞き出すことは難しい
    ◆ 書いたコードを公開していない候補者も多い
    ➔ あくまで最低限のレベルを担保することに集中する
    ◆ 最先端の技術やFWレベルのマイナーな知識は問わない
    ◆ (現時点では)判定が曖昧になりやすい設計に関する知識を問わない
    ➔ 1つのアプリケーションを作ってもらうことはしない
    ◆ 要素技術(DB、API、フロントエンド等)を分解してそれぞれを問う
    ◆ テストではより軽いライブラリ/FWを採用する場合もある

    View full-size slide

  8. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    なぜ(今のところ)純粋なアルゴリズム問題ではないのか
    ➔ 日本ではまだメジャーな手段と言えない
    ◆ 欧米と違い、ソフトウェアエンジニアが必ずしもCSの学位を持っていること
    を前提としていない
    ◆ 訓練が必要な技能であるが、日本企業がそうした問題を出すことがほとん
    どないため、候補者が訓練を積んでいない
    ➔ 我々がサービスを作る上でまだボトルネックになっていない
    ◆ 現時点ではDBのアクセス数やキャッシュ戦略がシステムのパフォーマンス
    に対して支配的なので、そちらをまず確認したい
    ◆ 未経験の新卒を受け入れられるほど成熟したエンジニア組織ではない

    View full-size slide

  9. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    どのように作っていったのか(1)
    ➔ コードテストで見たい要素をスプレッドシートにまとめた
    ◆ 同時にコードテストで担保できない部分をどうするかを議論

    View full-size slide

  10. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    どのように作っていったのか(2)
    ➔ 問題のたたき台を作り、社内のエンジニアのフィードバックを集めた
    ◆ 適切な難易度かどうか(難しすぎないか、必要な時間は適切か)
    ◆ 想定していない解答がないか(意図しない簡単な解き方がないか等)

    View full-size slide

  11. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    どのように運用/レビューしているのか
    ➔ 提出があったら GitHub のリポジトリ上に Pull Request を作ってレビュー
    ◆ 環境の差が出ないように Dockerfile をテストに含めている
    ◆ 普段のワークフロー(自動テスト/PRへのコメント)がやりやすい
    ◆ 採用メンバーのエンジニアがモブレビュー
    ➔ Codility や track などのオンラインテストはまだ利用していない
    ◆ 正直まだちゃんと使ってみた上で判断ができていない
    ◆ GUIを含むコードテストで CodePen を使って提出してもらうのはレビューし
    やすいかもしれない

    View full-size slide

  12. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    導入してみた結果
    ➔ 狙った通り提出までの時間が大幅に短縮
    ➔ スクリーニングプロセスとしては機能していそう
    ◆ コードテストで見たい部分の要件を満たしているかに加えて、書いて
    もらったコードの品質はどうかも見ている
    ➔ とはいえまだ調整やメンテナンスは必要
    ◆ まだ簡単すぎるのではという疑念を捨てきれない
    ◆ 継続的なライブラリのアップデート
    ➔ コードテスト後の二次面接(技術面接)も合わせてまだまだ議論中
    ◆ コードテストを踏まえてどういう観点の質問をすべきか

    View full-size slide

  13. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    (余談)一方、インドネシアでは
    ➔ 1アプリケーションを丸ごと作る構成を変えずに実施
    ◆ 現地企業はほとんどがコードテストを実施しており、日本のようにコード
    テストの実施が採用上の不利になることがない
    ◆ 過去、他の候補者のコードを使ってチートしてきた候補者がおり、それな
    りの量のコードを書いて欲しい
    ➔ アプリケーションの実装の達成レベルを段階的に定義
    ◆ コードテストの結果でオファーが変わる
    ◆ どのレベルのテストを送るかは面接等で事前に判断

    View full-size slide

  14. #go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol
    QuipperのWebエンジニア採用におけるコードテスト
    Software Engineer at Quipper
    鈴木 和幸 @kechol
    GO GLOBAL meetup #1
    Fin.

    View full-size slide