エンジニア採用面接の方法について、最近、どしどし面接するようになったという後輩どもと話したことを、自分の経験をふまえてまとめてみます。僕も先輩や上司から教えてもらい、悩みながら考えをまとめてきました。
原則
面接は優劣をつけるものではない。マッチングです。
勘違いしないように。
ほしい人材像や技術レベルを満たす、または超える人を選びます。
そのためには、面接の前にこちらの期待値を確認、定義しておく必要があります。また、何かがこちらの期待に満たない場合、将来的にクリアできそうかを考えるようにしています。例えば、習得に時間がかかる言語スキルや、比較的情報が少ない新技術知識などは、「今」足りてなくても「将来」達成できる可能性がありますから。
一緒に働きたい人を選びます。
面接官が自分の判断に責任をもつため、「あの部署なら行けそうだ」の場合、通過させるのではなく、次の面接官にパスしてその人に見てもらうとよいです。
エンジニアは一緒に働く現場のエンジニアが面接すべきです。
現場リードとそのチームメンバーがいると多方向でいろいろ聞くことができます。「俺、前はエンジニアだったから」と言うマネージャーの意見は、おだててから右から左に流してなかったことにしましょう。
その場のファシリテーションとしてマネージャーが参加するのはありだと思います。でも主役になってはいけません。マネージャーとして参加する場合、客観的に場を見て、面接後のふりかえりで話し合える材料(いい質問、いけてない質問、改善ポイント)を覚えておくとよいでしょう。
迷ったら選びません。
残念ですが、こちらが迷ったまま進んでもお互いにハッピーにならないと思います。
面接の流れ
1. アイスブレーク。
緊張はマイナスではありません。僕も大の人見知り。面接官も緊張しないように場を作りましょう。
2. イントロダクション
まずは自己紹介です。具体的にどういったことをやっているか話して、入ったときのイメージを持ってもらいます。
特に、プロデューサーとディレクターの仕事内容のように、会社ごとに責任範囲の違いがありそうな職種や、テストプログラマといった新しい職種に関しては、仕事内容と責任範囲を念入りに認識合わせした方がいいです。
体制やそれぞれの職種の役割を説明し、どの役割を希望されているかを最初に確認しておきます。
僕の場合は、口頭の限界を感じたので、部署紹介スライドを用意して冒頭数分で説明させていただくようにしました。相手に対してインプットを増やせば、自然と質問の質や精度が高まってくるように感じます。
次に、面接で実現したいことを明確に伝えておきます。。例えば以下です。
- この面接では技術面を中心に確認させてください。
- 合格、不合格も大切ですが、我々の文化や姿勢にマッチするかどうかをお互いに考える場にしたいです。
- 面接の終わりには、お互い不明点がない状態にしたいので、随時質問していただいてかまいません。
個人的に理想だと思うのは、その人がやりたいことができる環境をこちらが提供できて、その人がその実力を持ち、できればそれをやっていきたいと思っていること。「そんなの無理だ」と言われるときもありますが、理想が無理とか悲しいので信じてみます。理想が明確にあると質問も明確になります。
3. 質疑応答
相手に敬意を持って、真摯な態度で対話をします。面接の質問例については後述。
4. QA
ここでも緊張をとくように心がけ、不明点をここで必ずクリアにします。時間が足りないときは延長していいか相手に聞いたり、この場所を延長して使えるか確認して対応します。
5. クロージング
合否をほのめかしてはいけませんが、ねぎらいと感謝の言葉は良いと思います。勇気づけましょう。
ポイントと注意点
- 面接でないと確認できないことを確認する。事前に確認できることは事前にやっておくこと。
- 言葉だけ、知識だけでなく、本人が経験したことかどうかを確認する。
- 質問に対する回答を通して、自身の現場で活躍する人かどうかを考える。
- 自分は一緒に働きたいと思うかどうかを考える(ただし、似たような好きな人ばかりで偏るのも良くない)。
- ハロー効果に注意。ある点が良かったので、それ以外全部良く見えちゃわないように気をつける。
- アンチハロー効果、ホーン効果にも注意。ハロー効果の逆。ある悪い点に引きづられてしまうパターンに気をつける。
- 圧迫面接しない。問いかける前に失礼にならないか考える。相手をリスペクトする。来ていただいている方はお客様である。
- 名刺交換しない。トラブルを避けるためにしない。面接外の質問等は採用担当を通したやりとりをする。
- 握手をしない。合格と捉えられるような行動をとらない。合否は面接内で明らかにしたりほのめかしたりしない。
- 面接に関する質問は、わからない場合はその場で答えず、採用担当に回答してもらう。
- 個人情報を聞かない。住所や親の職業など聞かない。
- 希望年収は別の判断要素なので、スキルチェックがメインの場合、考慮に入れない。。
- 事実確認が難しい回答は面接で聞ける範囲で確認。確認できない部分は採用などに相談。
最後に、守秘義務はとても重要。面接情報をよそでしゃべって会社の信用を落とすリスクがあります。
あるときに、人材エージェントをしている人に聞いたことがあるのですが、面接での内容って守秘義務契約結んでないから紳士協定だそうです。だから、その人の人間力や倫理性が問われますね。
面接の質問事項
資格や能力の期待値を満たしているかが中心になります。以下、ざっくりですがチェックポイントを考えてみました。
- 基本スキル: プログラミング、コードレビュー、テスト、デプロイやリリース
- サービス経験: システム規模、ユーザ数、トラフィック数、SLA。大規模システムを担当するならその経験はあるか? どういった経験をしたか?
- 運用: システムオペレーション経験、Linuxコマンド、24時間監視体制、トラブル経験
- プログラミング言語: 宗教戦争になるので注意。開発言語だけでなくテストコードも。
- ツール: 宗教戦争になるので注意。人間は自分が使っていないツールにアレルギーを持つ。Git、エディタ、タスク管理。
- オープンソース: 利用経験。よい点と悪い点に関する意見。コミットやFB経験。
- 品質: 品質に対する考え方。品質を守ったり高めた過去の経験
- 専門性: 専門知識のいる現場であればそれも。例: 統計、音声を扱う、研究する、データ分析
上記に加えて、人間性に対する期待値や可能性を満たしているか。そして、候補者の仕事の作法や日常の言動を確認します。
- 業務推進能力: 障害を乗りこえて業務を遂行していく力があるか。
- 問題解決力: 課題設定方法、ロジカルシンキング、アクションプラン
- コラボレーション: 経験人数。チームやグループを超えた連携の経験。会社を超えた連携の経験。単独でパフォーマンスを出すヒトか。あるいは、誰かのパフォーマンスをあげられる力があるのか。
- リーダーシップ: チームリード経験だけでなく、メンタリングなどの育成経験も。
経験していくと、考え方が変わるので、そのときはまた更新しようと思います。