学び直しと就職に関して

非常に狭い範囲での観測で恐縮なのですが、いま僕の周りでは一度ドロップアウトや就職してからの大学復学、大学院進学などの「学び直し」が空前のブームとなっております。これに関しては非常に喜ばしく感じている一方、我々どうしても食っていかねばなりませんから、

  1. 働きながら夜間・休日に修学できる環境で学ぶ
  2. 腹をくくってフルタイム就学し、その後再就職する

という人が大部分かと存じます。これに関して個人的に思うところがあり、ちょっと筆を執りました。本エントリでは次の話題をカバーしたいです。

  1. 実際に「学び直し」てみてどうか
  2. ソフトウェア技術者として再就職するにはどうすればよいか

1に関しては個人的に率直に感じていることを取り留めもなく書きたいと思いますので興味のある方はお読みいただいても構いませんし、就職の部分だけを読みたい方は全部飛ばしてそちらから読んでいただくとよいと思います。
2を書きたい理由が「やりたい夢が見つかったので大学に進学したものの、卒業する頃には30近くなってしまっている。自分の興味のある分野で新たに職を探すことは無理なのか…?」という悩みを複数拝見したからです。これは、もし興味のある分野がソフトウェア産業であれば、端的に言って何とかなると個人的に考えています。僕の就業経験はいずれもソフトウェア開発関連なので、もとよりそれ以外のことはお話しできませんが、該当する方には何らかの示唆になるかも知れません。

実際に「学び直し」てみてどうか

最初に自己紹介をさせてください。現在37歳のソフトウェア技術者です。米国に本社のある会社の日本法人でソフトウェアを開発しています。学部では情報科学とは似ても似つかない英文学を専攻していましたが中退し、5年ほど大学の先輩の会社でインフラエンジニア/ソフトウェアエンジニア見習いとして働いていました。その後、思うところあって26歳ごろ復学し、1年半かけて卒業し、また同じソフトウェア産業で10年近く仕事していました。ただ、ソフトウェアエンジニアとしてもう一段回成長したいと考えるにつれ、アカデミックな知識がすっぽり抜けていることを足かせに感じ、昨年36歳のときに情報科学系の大学院に進学しました。今日現在で単位はほぼ取り終えて、あとは修士研究をやりきれば修士号に手が届くところまで来ています。修了後も変わらずソフトウェア産業で働きますが、大学院で学んだ専門をより活かせる形を模索するかも知れません。

大学院は実際にどうだったかというと、これはもう素晴らしい経験でした(まだ在学中ですけど)。今は不況で状況が変わってきているかも知れませんが、僕が現役の学部生だった頃はまさに「大学全入時代」で、確たる夢や目標を持って大学に進学する人の方がもしかしたら少数派だったかもしれません。少なくとも僕はそうで、目が覚めたらまずビールのフタを開けてから、いま窓の外に差し込んでいるのが朝日なのか夕日なのか確認するような自堕落な生活を送っていました。これに対して、学び直しはモチベーションからしてそもそも違いますよね。身銭を切って、なんとか時間を捻出してから勉強するわけなので、取り組み方がまったく異なると思います。不思議なもので、大学は常にそこにあり、同じものを提供しているのです。学ぶ人の姿勢一つで大学は有益にも無益にもなるわけです。大学無用論は、おそらく大学から大したものを持ち帰れなかったのでしょう。とにかく、触れるものすべてが新鮮で、新しく知ることすべてが瑞々しく、自分の脳のホコリを被っていた部分に新たな水が注がれているのを感じることができます。

それから、大学は職業訓練校ではないという点も紹介しておきたいです。僕の現在の専攻は情報科学ですが、ここで学べる内容はたとえばプログラミングスクールとは大きく異なっています。たとえばI217 関数プログラミングという授業1では、関数型言語を使って何か作ってこれをメシのタネにするということは主眼ではありません。型システムを使った数学的抽象データ構造の表現であったり、評価順と無限数列の考察、計算可能性などアカデミックな内容を扱います。これがすぐに日々の仕事に活かせるかと言うと、そうでもないのですが、さりとて「大学の内容は仕事には使えない」かというと、これはまったく正しくありません。僕は同じく大学で学んだCPUのパイプライン処理などはすぐに業務で活かすことができました。知識というのは道具箱のようなもので、すぐに使う10mm, 12mmレンチだけ持っていればよいというものではなく、使用頻度が少ないものも含めて道具箱すべてを使って最終的に何を成せるかということが大事だと考えています。大学はそういう知識が身につく場所だと思います。

ソフトウェア技術者として再就職するにはどうすればよいか

いよいよ本題に入りたいと思います。読んでくださる方の時間の無駄にならないように再掲させていただきますが、ここではソフトウェア産業に限って話させていただきます。残念ながら僕はソフトウェア産業でしか就労経験がなく、たとえば考古学の学位を取った後にどのような就職をすればよいかというような知識を持ち合わせていません。

大学に行きたいという動機は人それぞれで、それが情報科学でも考古学でも純数学でもどれも等しく素晴らしいです。中々歯がゆいのが、学問の純粋な喜びとは裏腹に、我々の多くは卒業・修了後は口に糊するために働かねばなりません。「学び直し」の後に働くパターンは大きく分けて次の2つがあると考えています。

  1. すでにある分野や産業で職歴があり、知識を「強化して」元の産業に戻る
  2. ある分野や産業に興味を抱いて就学し、卒業・修了後に初めてその産業で就業する

このうち、1が問題になることはほぼないでしょう。すでに産業経験があり、人によっては就労を継続しながら勉強できます。しかも現在の知識を強化して同じ業界に戻ってくるわけですから、これはイージーモードです。これに関しては一切触れないことにします。

さて、大変なのは2です。誰しも、本来大部分の人が学部・院を卒業する年齢から10年20年経ってからほぼ未経験で新たに職探しをするのは不安でしょう。しかし、敢えて安心させるために言い切ってしまいますが、ことソフトウェア産業において、大学のドロップアウトや専攻変えからほぼ未経験でソフトウェアエンジニアとして就職することは、端的に言って可能だと考えています。むしろ、それができる数少ない業種だと認識しています。
僕はドロップアウトしてから学部を卒業(この時点では英文学士)した時点で27歳でした。たしかに先輩の会社で5年ほど見習いとして働かせてもらっていましたが、このときの僕はまともにプログラミングなどできていなかったと思います。実際に、「ああだいぶコードレビューで指摘されることが少なくなってきたな…」という程度にコードが書けるようになったのはほんの5年前ぐらいだと思います。これは卵が先か鶏が先かという話になるのですが、やはりソフトウェア技術者として力をつけるにはどうしたってある程度それを仕事として毎日書く必要があると思います。ただそのためにはソフトウェア産業で就職する必要がある。ソフトウェア産業で就職するためにはソフトウェアが書けることを示す必要がある。なんとかして最初の就労先を捻出する必要がある。それをどうするか。

今から書くことは、僕が実際にやったことです。人によってはこれを読んで、なんて無神経で傲岸不遜な人間だと不愉快に感じるかも知れない。また、たかがN=1であり、再現性などないと思われるかも知れない。しかしながら、僕はこれは今でも有効な方法だと思っています。10年前の僕が2020年に放り込まれても同じことをやれる自信があります。

さて、最初の就職をどうするか。これはどんな方法を使ってもよいので、次の条件を満たす会社に200個ぐらい応募してみる。

  1. 経験や職歴に関わらずすぐに手を動かしてソフトウェア開発ができる
  2. それなりに有名(できたらマザーズ上場)

これが満たされるならばSIerでもいわゆるウェブ系企業でも大丈夫です。理由を述べます。
まず、すぐに手を動かせることは必須条件です。ソフトウェア技術者の存在理由はソフトウェアの開発であり、スタート時点でビハインドがある以上、この能力を一刻も早く身につけなくては生存に関わります。先に述べた通り、どれだけ大学で勉強しても、自宅で手を動かしても、ソフトウェア開発の現場でしか身につかない力というのは間違いなくあります。もし最初の職場でエクセル仕様書を書く職務に就いてしまうと致命的な遅れになりえます。

次に、それなりに有名な会社に入ることは非常に多くのメリットがあります。こういった会社には仙人のようなソフトウェア技術者が必ず洞窟の奥に控えており、彼らはその深い知識と洞察で必ずあなたをソフトウェアエンジニアとしてひとつ上の段階に引き上げてくれます。彼らと一緒にするプロダクト開発が、彼らのコードレビューのひとつひとつがあなたに新しい力を授けてくれます。これを読んで、「未経験でいきなりマザーズ上場企業に就職できる前提かよ?解散!」と思われた方はちょっと待ってください。マザーズ上場企業って、思ったよりずっとたくさんあるんですよ。売上高を見ると、荒稼ぎしている個人商店と大差ないような少し寂しい売上の会社なんかも含まれています。不思議なことに、仙人のような素晴らしいソフトウェア技術者のいくらかの割合は、会社がかつての輝きを失ってもずっとその会社に鎮座している例をいくつも目撃しています。このような会社は狙い目です。露骨な言い方をすると、落ち目の上場企業に必要最低限の報酬で入社でよいなら、本当に50も100も応募できる根性があれば絶対にどこかには引っかかります。まったく同じ会社でも、経験10年で700万のソフトウェアエンジニアは雇えないが、経験0〜2年で400万なら雇えるという例は数え切れないほどあります。ここに何とか潜り込んで、数年間給料をもらいながら修行をするといいと思います。あとはもう、何とでもなります。大学の学位、数年間の産業経験、企業での職歴、これらすべてで次にどんな会社にステップアップしようとも何も阻むものはありません。

これらの条件を満たすには、必然的に東京に来るのがよい選択になると思います。「どうせ東京の話でしょ?地方の俺には関係ない話だな、解散!」と思われた方、ちょっと待ってください。東京に来るのってそんなに大層なブロッカーですかね。昔パチスロ雑誌で「いつもいつも東京の話題ばかりで参考にならない。地方では東京のような好条件の店がない」という読者の苦情に対してプロの人が「なんで好条件と分かってる土地に来る程度の努力ができないんでしょう?来れば解決すると分かってるなら、それは僕には問題ですらないんですよね😅」と回答していて、これはまあパチスロの話ではあるけど僕の行動哲学に大きな影響を与えたのですよね。僕は京都の大学だったのですが、学部卒業後はすぐに東京に出ていきました。

それから、コミュニティの力を借りると良いと思います。ある言語、フレームワーク、ツールキット、何でもいいのですがそのコミュニティの熱心な参加者になる。そしてあるニッチで他の駆け出しよりも深い知識を身につける。プレゼンスも出す。そういうコミュニティを経由して会社に入り込む例も数え切れないほど目撃しています。僕はスクールで通り一遍の勉強をした後は著名なフレームワークの写経でポートフォリオを作るみたいなのよりは、ある特定分野を掘り下げた強みを作るほうが履歴書や面接で目を引く可能性が高いと考えています。

それから、面接はあくまで面接というテストなのでそれ用の対策をすれば本当に何十回でもめげずに挑戦できる人はすぐにコツを掴むと思います。外国の企業だとそれはコーディングクイズだったりするでしょうし、日本の企業だと「ブラウザにURLを打ち込んで結果が表示されるまでに何が起こっているかを詳細に述べてください」かもしれません。とにかく敵を知り己を知るだけのことです。必ずうまくいきます。

ここまでがスタート地点です。ここからはすべてあなた次第です。僕はどうしても、駆け出しエンジニアを扇動する人たちに比べて夢がないなあと自分でも思うのですが、結局ソフトウェアエンジニアに王道なしというのを信じているからだと思います。優れたソフトウェアエンジニアになるには近道というのはなくて、まあ多少効率の良いやり方ぐらいはあるかもしれませんが、とにかくソフトウェアがどうやって作られててどうやって動いているのか自分で調べて、書いて、勉強し続けるより他にないのだと思っています。ただ、それを身につける上で環境の力というのはとても大事で、だからこそいま学び直しをしようと思っているような気骨のある人にはできるだけ最短で環境の良い会社で働いてもらいたいなと思ってこのような駄文を書きました。自分の経験上、面白い仕事とよい給料はトレードオフの関係ではまったくなくて、むしろよい会社ほど充実した仕事内容と高い報酬の総取りで、そうでない会社はどちらもダメみたいなことの方が多いです。人より少しだけ遅れて再スタートを切った人が、なんとかうまいこと幸せなソフトウェア開発人生を送って欲しくてまったく恥ずかしながら自分の前半生を元に書かせていただきました。何かの参考になれば嬉しいです。

おまけ:海外企業で働くには

ここまで書いた内容は主に日本の東京でのことです。海外でソフトウェアエンジニアをやるにはかなり状況が違うと考えています。僕は米国本社の会社で働いているので、少し認知に歪みがあるかもわかりませんが、端的に言って米国のエンジニア就労は日本よりずっと厳しいです。学位と就職が密接に関わっているので、新卒やインターンの人はカーネギーメロン大学修士だとかMITの博士だとか、もう目が回るような高学歴の人たちばかりです。ここに裸で挑戦するのは中々難しいものがあります。

ひとつだけ良いニュースとして、日本はソフトウェアエンジニアに(少なくとも現状は)気軽になれるので、経験を積みやすいということが挙げられます。前述の通り、米国の大手テック企業ではソフトウェアエンジニアになることそのものが高い壁となっているので、経験を積むことすら高い壁を超える必要があるように見受けられます。繰り返しになりますが、現場でしか身につかない能力というのは非常に多くあるので、これを幸いと捉えて日本で就職し、5年10年の経験を積んでから海外へ挑戦するというのは大いにありだと思います。

海外企業のインタビューを突破するにはCracking the Coding Interviewという書籍が非常に有名です。世界で闘うプログラミング力を鍛える本という名前で和訳もされているので、興味のある方は一度ご覧になるとよいと思います。

また、次のサイトなどは問題や面接の内容を把握するのに役立つと思います。

tnanjo.net

1kohei1.com

長々と失礼しました。勉強も就職もうまくいって欲しいです…!


  1. 余談ですが、この授業はすべての講義資料が世界に公開されているので、興味のある方はぜひLecture Noteを読んでみてください