Webプログラマーを志す学生さんがやっておくべきことは、目に見えるアウトプットを公開することだけ
Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事 - Aggressive Style 5
「やっておきたいこと」ではなくてウェブプログラマとして就職したい人向けの話。上のエントリに触発されて(とかいいつつあまり内容を精読してないけど)自分の狭い視野で言えることを書く。
すごい単純なんだけどたったひとつだけで、ウェブアプリひとつ作って公開してソースコードも公開しておくこと。
これをやっておくと面接するときとかに話の種になっていいんじゃないですかねーと思った。っていうかもうこれやるだけで十分な気がする。自分が作ったものを引っさげてそのへん回れば、受託はやりたくないとか変にこだわったりしなければ拾ってくれるところはある。どんなアプリを作ってみればいいかがわからなかったら、学習用に作ったってことで既存のウェブサービスの簡単なクローンでも作ってみるといい。言語はなんでもいい。もちろん会社に合わせておいた方がいいとは思うけど、Ruby使う会社がRuby使いしか取らないってことは無いし、PHP使う会社でもPHP使いしかとらないっていうことは無い。 新卒の人の場合は使う言語よりもその人のプログラミング能力の自頭みたいなものやポテンシャルの方を重視される。
あとついでにgithubでライブラリ公開したり技術ブログ書いたりしておいて面接前の書類に記載しておくとよい。面接で対面する相手に対して自分の声帯から音声を出してコミュニケーションしなくても自分の代わりに勝手に語ってくれるし何度でも使えるので合わせてやっておくといい。
以上ひとことで言うと「目に見えるアウトプットを出しなさい」みたいな巷でよく言われるようなことをわざわざ書いてるわけだけどそれには理由があって、面接に来たけど見せられるコードも無いし見せられるアプリも無いしブログも書いてないし新卒だから実績もないし、で結果落ちるみたいな優秀な人(もちろん優秀ってことは後になってわかる)を見かけてしまうので書いている。
外に出せるものが無くてアピールできるようなポイントが殆どないと、通り一遍等の履歴書をチェックしつつ私は独学で何々を勉強しまして…とか大学では何々を専攻しまして…みたいなことを言ってへー、で面接が終わってしまう。そうなると対面時の風貌とかしゃべりとかだけでその人の未知の実力を判断しないといけなくなるのでリクルータにとっても非効率だし、面接する当人に取ってもきちんとした実力を持ってるけど面接時にきちんとアピールできずに時間を無駄にして終了ということになって非常にもったいない。なので、なにかしら外に出して自分が書いたものです、作ったものですみたいなものはあったほうがいい。コードやアプリを公開して事前に伝えておくと、面接するエンジニアはきちんと事前にコードを読んでくれる。
技術的に優秀なひとだけど面接時のアピールだけだと落ちてしまうのにはすこし事情があるので説明する。
面接を行うマーケの人とか人事の人とかは技術的なことは当然わからないので、面接に来た人の実力は同じ技術畑のエンジニアに同席してもらって技術面はその人に評価してもらう、ということになる。採用面接時に出張ってくるエンジニアの人は、よっぽど大きな会社でない限り普段もずっと人事に関することをやっているわけではなくいつもはずっと開発の方で作業している。それで、なんか人事のひとから頼まれたので今度の面接にもちょっと同席します的なノリでいることも珍しくない。なので、技術のことはわかるけどその面接に来た人の実力を見抜く能力があるとは限らない。面接の30分かそこらでその人の実力を聞き出してきちんと把握することができるかどうか、っていうのは運になる。
さらに採用側の理屈として、偽陽性(false positive)をなるべく排除するという事情がある。採用面接での「失敗」には、「優秀な人を逃してしまう」というのと「優秀でない人を雇ってしまう」という2種類がある。このふたつのうち採用側は「優秀でないひとを雇ってしまう」という失敗をなるべく避けようとする。優秀な人を逃してしまっても目に見えるダメージはないが、優秀でないひとを雇ってしまった場合はその人の分の経費や給料を出さなければならないし、もしやめさせる時にも手間や時間が必要になってくるからだ。つまり優秀な人を逃すよりも優秀でない人を雇ってしまうことの方がより最悪だ、というふうに判断される。
要するに面接時のアピールに失敗して「優秀かもしれないけどなんかよくわかんないよね、優秀っぽいけどなんか不安だよね」という場合は落とされる確率が高くなる。実際そんな感じで落とされる人を常に見かける。
動くコードを予め見せておくとどうなるかというと、予め採用側のエンジニアがそのコードを読んで、勝手にその人の実力を見積もってくれる。面接に先立ってその人への評価の目安みたいなものが構築される。ぼんやりした評価とは違って、こういうコードを書くんだからこの人は最低でもこれぐらいの実力は持っているだろうと考えてくれる。その上で面接するときにはそのコードをネタにして採用側のエンジニアの方から色々話しかけてくれるようになる。なぜなら面接する側は志望者を見極めるための質問に飢えているから。どれぐらいの期間で実装したのとかなんでこの辺こんな感じで実装したのとか、単に履歴書から突っ込める内容とはより実のあるところから色々話せる点が増える。あとは実際に面接がうまくいくかどうかは自分の実力次第になる。
と、ここまでグダグダ書いたけどウェブプログラマ志望の学生の参考になるのか実際不安になってきたのでこの辺で筆を止める。以上ウェブプログラマ志望の学生は外に出せるようなもの(コード、ライブラリ、ウェブサービス)を予め作っておくと諸々の事情で便利ですよ、というお話でした。