Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
QuipperのWebエンジニア採用におけるコードテスト / Coding Test for ...
Search
Kazuyuki Suzuki
November 26, 2018
Programming
5
10k
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
Share
More Decks by Kazuyuki Suzuki
See All by Kazuyuki Suzuki
BtoBプロダクト開発の現場 - forTeachers に最速で価値を届けるには -
kechol
7
3.3k
Other Decks in Programming
See All in Programming
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
160
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
あれやってみてー駆動から成長を加速させる / areyattemite-driven
nashiusagi
1
200
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
From Translations to Multi Dimension Entities
alexanderschranz
2
130
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
720
たのしいparse.y
ydah
3
120
Featured
See All Featured
Facilitating Awesome Meetings
lara
50
6.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Building Applications with DynamoDB
mza
91
6.1k
For a Future-Friendly Web
brad_frost
175
9.4k
4 Signs Your Business is Dying
shpigford
181
21k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Site-Speed That Sticks
csswizardry
2
190
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Why Our Code Smells
bkeepers
PRO
335
57k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Gamification - CAS2011
davidbonilla
80
5.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Transcript
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol QuipperのWebエンジニア採用におけるコードテスト Software Engineer at Quipper 鈴木
和幸 @kechol GO GLOBAL meetup #1
#go_global QuipperのWebエンジニア採用におけるコードテスト by @kechol Quipper という会社について ➔ 教育系の(元)スタートアップ ◆ 現在はリクルートマーケティングパートナーズの子会社
➔ 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 @kechol Web エンジニアの基本的な採用プロセス 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 @kechol QuipperのWebエンジニア採用におけるコードテスト Software Engineer at Quipper 鈴木
和幸 @kechol GO GLOBAL meetup #1 Fin.