シリコンバレーで現役デバッガやってます。

BUG017 - 傾向と対策~ホワイトボード面接の最前線!

»

 シリコンバレーで長くエンジニアとして働いていると面接をする、される、その両方の経験値が嫌でも年々増加します。私もする方、される方を合わせるとかれこれ数十回はやったでしょうか。というわけで本日のお題は「面接」、特にエンジニアなら避けて通れないホワイトボード面接のお話です。

 LinkedInあたりにプロフィールを公開していると、毎週、いや売れっ子のエンジニアなら毎日のようにリクルータからのお誘いメールがやって来ます。その甘い誘いに乗って返事をすると、ハイアリングマネージャ(=実際の採用の判断をする現場のマネージャ、通常は採用後に上司となる人)との簡単な電話面接があり、そこで有望と判断されれば後日、オフィスでの面接に呼び出されることになります。

 オフィスに呼び出されると、半日から長ければ丸一日、小さな会議室に缶詰にされます。そこへ面接官、といっても現場のエンジニア、つまり採用されれば同僚となる人、が一人一時間くらいで入れ替わり立ち代り面接にやって来ます。丸一日だと約6~7人ですね。

 履歴書をざっと見て、どんな仕事をやってきましたか、得意分野は何ですか、一番大変だったことは、やってみたい仕事は、といった基本的な質疑応答を終えると、ホワイトボード面接が始まります。

 よく、どこそこの大企業の面接の問題などといって、奇想天外、なぞなぞのような問題をネットで見かけますが、実際、限られた時間で受験者のエンジニアスキルを見極め、採用するかどうかを判断しなければいけないのですから、誰も解けないような難問や、答えをどう評価していいのかわからない珍問では面接の意味がありません。普通は、コーディング、それもその職場で実際使われている言語、そしてある程度、普通のエンジニアなら時間内に答えられる常識的な問題を使うはずです。

 例えば、教科書にあるような簡単なアルゴリズムをコードに落とし込む問題、バイナリツリーやリンクリストを使って特定の条件の値を探索するとか、ソート、並び替え問題も基本中の基本です。また、組み込み系では、ポインタ操作、データ構造、マルチタスクの同期、といったあたりが定番でしょうか。いずれにしても難易度は情報処理試験の午後のコーディング問題程度、と思って間違いありません。なんだ簡単じゃないか、と思いますが、実際、頭の中でしっかり理解しておかないと、ホワイトボードの前で文字通り真っ白になって固まってしまいます。

 ホワイトボードに一行目からコードを書きなさい、というのもアリなのですが、より受験者のスキル、それに加えてコミュニケーションスキルを計るのに最近定番なのが、コードを「読ませる」面接です。問題のあるコード、例えばポインタの扱いが丸っきり間違ってるとか、アルゴリズムのループ処理が無意味に複雑で非効率だとか、そういったコードをプリントして受験者に一定時間読ませます。そしてそのあと、問題点を指摘して改善策を面接官と対話しながら説明する、という試験です。日頃、自己流のコードを書くばかりで他人のコードと格闘して苦労する機会の少ない人には難関です。

 さて、実際、めでたく採用となれば、職場に入ったその日から大量のコードを理解しなければならず、すぐにやって来る客先からの仕様変更やクレーム対応に巻き込まれるがオチです。ですから、現実には、白紙からコードを書く力はもちろん、緊張した面接の場でいきなり見慣れないコードを渡されて理解するスキルというのは実は重要なものです。

 いかがでしょう。シリコンバレーで面接!なんていっても何も壇上でプレゼンしたり、デモしたり、特別なスキルを要求されるわけではなく、日頃のコードを書く力、そして読む力、経験が何よりも重要であることに変わりはありません。日々是鍛錬です。それではまた。

Comment(2)

コメント

使えるエンジニアを採るにはそういうやりかたがいいのでしょうねえ。日本の人事部主導の採用面接よりも良さそうですね。

Masa

日頃の素振りが何よりも大切だと思います。

コメントを投稿する