こんにちは、シャイニング増田(シャイ増)です♥町中で良くリクルートスーツの就活生を見るようになりましたね。先日後輩の紹介で○○大学の学生からグーグルに入りたいという相談を受け渋い気持ちになりました。○○大学ではTopCoderのRed Coder相当の実績でも残していないと入れないでしょうし、ネームバリューだけでなんとなく「ビッグデータ♡」「人工知能♡」と言っている様は山師スタートアップの「フィンテック事業部を新設しました」のIRと同等クラスの浅ましさです。そこで若者に捧ぐ私が考えるプログラマのキャリア論を参考にしていただければと思います。
http://www.shiningmaru.com/entry/2016/04/29/212824
を見て、あんまりプログラマがどうやって高給取りになれるかというキャリアの話って見たこと無いな、と思ったので書いてみます。
全てのプログラマが給料を一杯稼ぐことを目指すべきだとは思いませんが、私のように、研究職でもなく、マネージャー職でもなく、コード書いてお金が貰えるならなんでも書くよ、という節操のないプログラマ志望の大学生にはとてもおすすめの高給取りになるための方法です。
まずは目標である高給取りになるにはどうすればいいか考えてみましょう。どんな能力があれば年収1000万円もらえるの?と思われるかもしれませんが、そもそも残念ながら給与というのは純粋にあなたのスキルによって上下する余地はあまりありません。
年収500万円のプログラマが頑張って仕事後も勉強会などへ行き、頑張ってスキルアップしても、会社が年収を1000万円にしてくれることはほぼ無いと考えてください。年収500万円のプログラマと年収1000万円のプログラマの一番大きな違いは職場です。大抵の会社はどんなに優秀なプログラマでも給料で大金を払うことはできません。
身も蓋もないんですが、高給取りになりたいと思ったら、自分磨きなんて糞くらえで、自分に給料を一杯払ってくれる会社を見つけて入社するのが一番重要です。
金回りがいい会社が一番です。どういうところがいいの?というと、ざっくり2つのグループにわかれると思います。
1. 世界的にシェアのあるサービス・プロダクトを持っている会社
1の典型的な企業は、ベイエリアとかにある、世界向けのプロダクトを持っていて、競争力のある会社です。とても金回りがいいです。有名どころではGoogle、Facebook、Appleや若干株価が心もとないTwitterなんかがあります。何故これらの会社がプログラマに大金を払い、何故日本の大抵の会社がプログラマに年収1000万円を払えないかについてはhttps://note.mu/whynotgetrich/n/nd71f86a3e0cbを御覧ください。
2はあまりプログラマの人は縁がなく、存在すら知らない会社が多いのではないでしょうか?とても勿体無いですね。例えば金融系の企業はとても金回りがよく、社内システムの開発でもその恩恵を受けることができます。例えば外資金融系ではGoldman Sachs、Merrill Lynchは給与がよく、保険系では東京海上とかもまったりと年収1000万越えるらしいんで、狙うといいんじゃないですかね。あまり詳しくないので、具体的な業務内容はインドに発注と管理するプログラマというよりはSEなのかもしれないですけど。
では他のドメスティックなネット系企業はどうなの?というと、残念ながらあまりいい話は聞きません。
数年前に年収1000万円で新卒を採用(http://news.livedoor.com/article/detail/5997716/)、みたいな話が数社から出てきて、ようやく日本でも人材獲得競争が激しくなってきたな!と思いましたが、どうなったんですかね?全然うまくいかなかったからもうやっていない、という話を聞きましたが、実際どうなのか現場の話を聞いてみたいものです。
私が最近聞いた中ではLineは年収1000万円を軽く越えるオファーを出していて、他のインセンティブもついてたら、上場したあかつきには軽く2-3000万円はいくんじゃないかと思われます。Lineくらいになってくると、1のグループに入ってる感じですね。景気いいですね。うらやましいです。
そんな会社全部よくわからないよ!無理だよ!私が志望しているこれらの会社の中からだったらどれ選べばいいの?と思ったら技術部門の最高責任者っぽい人とかの給与を調べましょう。それより多くは絶対にもらえません。あとは平均給与を調べてみましょう。プログラマは社内の中でも特に多く給料が貰える職であることは少ないと思われるので、平均給与が1000万円越えてなければ、プログラマとしてキャリアを積んで1000万円の大台に達することは難しいかもしれません。
と、1000万円を稼げる企業がおわかりいただけたかと思いますので、次にこれらの企業に入社するにはどうすればいいかについて考えてみましょう。
まず先に2のグループの企業についてですが、私は全く明るくないので、どんな採用プロセスなのか全然わかりません。とりあえず英語憶えてたほうが外資系が選択肢に入ってくるのでいいんじゃないですかね?
次に1ですが、こちらもやはり英語がわかると、海外での勤務が選択肢に入ってくるので同じくおすすめです。新卒で日本法人に入る場合は、企業によってはちゃんと英語習得のためにフォローが入るので、技術力優先だったりもします。
ここまできてようやく技術の話が来ましたが、具体的に何ができればいいの?というと、まずポインタと再帰呼び出しを理解できるか調べてみましょう。
Joel先生が書いてますが、ポインタと再帰呼び出しはどんだけ優秀なプログラマでも何故か書けなかったりするので(http://local.joelonsoftware.com/wiki/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BA)、まずこれらをちゃんと理解してるか見てみましょう。私も世界中の100を越えるプログラマの面接を行ってきましたが、再帰呼び出しを書かせようとすると絶望するプログラマはとても多いです。
ポインタは使う機会は大分減ったと思いますが、再帰呼び出しはまだ現役なので、理解できなくて、プログラマになりたいわけではなく、ただ高給取りになりたいのであれば、別のキャリアを目指した方が楽かもしれません。
採用において重要なのは、履歴書の実績と面接での技術力です。ベイエリアなどの企業のプログラマの採用面接では、「あなた自身を動物に例えると何ですか」みたいな質問を聞いてくることはありません。技術的な質問、又はコードを書かせる問題を出してきます。Top Coderのような競技プログラミングと似てるので、練習しておくことをおすすめします。各種データ構造とアルゴリズムの計算量を憶え、うまく適用できるよう勉強しましょう。
面接官によってはコンピュータ・ネットワークの仕組みについて聞いてきたりするので、ヘネパタ、オペレーティングシステム、詳解TCP/IPあたりは読んどくといいかもしれません。後々色々な技術を学ぶ時に理解が深まりやすいので、どちらにせよ読んでおいて損はないです。
面接対策だけでなく、プログラムはよほど専門的な内容でなければ、レファレンス引きながら問題なく実装できる、というレベルには達しておきましょう。履歴書に華を添えるなら、オープンソースプロジェクトに参加するかソフトウェアやサービスを公開してみてください。githubのアカウント名やプロダクト名、サービスの概要とURLを書いておけばあなたの技術力がより上手く伝わるはずです。
外資だと必要になる英語ですが、技術的な話がを中心であれば、一般会話より必要なボキャブラリが限られており、習得は思われているほど難しくはありません。かつ、メールのテキストベースでのやりとりが中心であれば、最初のうちは大変ですが、ゆっくり時間かけることもできます。
あなたの技術力が認められ、年収1000万円はないかもしれませんが、結構な高給取りになれました。おめでとうございます!さてここから昇給するにはどうすればいいのでしょうか?