Findy Engineer Lab

エンジニアの"ちょい先"を考えるメディア

シリコンバレーから失意の帰国をした十年選手のITエンジニア、生き残るため大学院で情報科学を学ぶ

はじめまして、白山文彦@fushiroyamaと申します。
インフラエンジニアとして5年、ソフトウェアエンジニアとして7年ほど働いて、現在は多国籍企業でクラウド関連の仕事に従事しています。 今年に入ってから、会社員としてフルタイムで勤務しながら、大学院の博士前期課程(修士課程)で情報科学を学んでいます。

dummy OGP

この記事では、ITエンジニアとして10年以上もご飯を食べていながら、どうして今になって大学院生という道を選んだのか。業務で身についたものと、大学でしか学べないものとの違いは何なのか。そして最後に、それをどのように今後のキャリアにつなげていこうと考えているのか。そのあたりの葛藤や心の動きをシェアできたらなと考えています。

社会人大学院について

僕が現在通っているのは、北陸先端科学技術大学院大学(Japan Advanced Institute of Science and Technology、通称JAIST)です。 石川県能美市に本部を置く国立大学で、先端科学技術分野における国際的水準の研究者の育成を目標としています(当学ウェブサイト「理念と目標」より抜粋)。 石川本校の他に、東京サテライトキャンパスと社会人コースを設置しており、僕もこの所属です。

社会人コースで僕の専攻である情報科学は、主に金曜夜と土日に授業を開講しています。 石川本校の大学院生が平日の日中をフルに使って学ぶ内容を、時間的に大きな制約のある中でこなさなければならないので、正直に言って並大抵のことではありません。社会人コースでも基本的に学べる内容、最終的に得られる学位はまったく同じわけですから、授業の難易度も課題の大変さも平等です。

残業のないように仕事をこなし、家族に迷惑をかけながら土日のどちらかを捻出し、子供を寝かせてから夜中に起きて授業の復習をしたりレポートを書いたりしています。

このような苦労をしてまで、働きながら大学院生になるという選択をするに至った経緯を、次節ではお話したいと思います。

理系技術者は米国で圧倒的に尊敬されている

僕は、2018年の初め頃から2019年の3月末まで、当時所属していた会社の研究開発のラボに異動するという形で、米国カリフォルニア州サンフランシスコ・ベイエリアでソフトウェアエンジニアをしていました。 かの地で、最終的に大学院に行きたいと思うに至る、象徴的な経験をいくつもしました。

まず、米国ではSTEM(Science, Technology, Engineering and Mathematics、日本で言う理系)学位を持って関連業種で働くエンジニアは、ハードウェア・ソフトウェア問わず大きな尊敬を受けています。

カリフォルニアが世界のIT革新における中心地のひとつであることは論をまたないと思いますが、その非連続な成長の源泉は、何と言ってもソフトウェアエンジニアです。カリフォルニアでIT企業の求人を見ると、ほとんどいつも一番高い給料を与えられるのはソフトウェアエンジニアです。 Big Techでプロジェクトマネージャーとして働く友人の印象的な言葉を引用します。曰く
「自分の仕事は、ソフトウェアエンジニアがどれだけ自分の仕事にフォーカスできるかお膳立てすることだ。彼らが、どれだけ気持ちよく仕事ができるかにかかっている。自分は、ソフトウェアエンジニアがやらない全てのことをやる。」

また、卑近な例ですが僕自身もバーベキューで友人の知人に自己紹介する際に
「自分は○○○企業で、Sr. Software Engineerとして△△△の研究開発をしているんだよ」
と伝えると
「ワオ! すごいな! プログラマはマジシャンだよ! 俺も息子にはプログラミングを教えたいんだ!」
などと、カリフォルニアの人々の陽気なノリを抜きにしても、大げさに敬意を示してくれました。ミートアップなどでも、僕がソフトウェアエンジニアと分かると、たどたどしい英語でも馬鹿にせず、熱心に話を聞いてもらえたりしました。

こんなこともありました。渡米していよいよ車を買う段になったとき、保険屋が突然電話を掛けてきたのです。
「見積もりの件だが、君のJob Titleは『Sr. Software Engineer』となってるな。ということはSTEMの学位だろ? 安くなるよ! 大学院を出ていたらさらに割り引き!」
これには驚きました。理系は車の保険料すら安くなるのです。

僕は日本の大学の文系学部しか出ておらず、バツが悪そうにその旨を伝えると
「それでソフトウェアエンジニアになれるものなのか」
と困惑されました。

実は、米国では学位と職業に大きな関連があります。これについては後述します。

米国のエンジニアと日本のエンジニアの違い

日本に帰ってきてからよく受けた質問のひとつが「アメリカのエンジニアは優秀か?」というものです。これは裏を返せば「日本のエンジニアはアメリカで通用するか?」という質問でもあります。 この答えはシンプルで、人によります。ただし、確かな傾向はあります。

渡米当初、仕事で関わったエンジニアやミートアップで隣り合わせたエンジニアによく話しかけ、自分と同じようなバックグラウンド(例えばRailsバックエンド開発だったり、Androidアプリ開発だったり、全文検索だったり)を持った人だと分かると、エンジニアの多くがそうであるように、しばしば技術談義に花を咲かせました。

このとき、Railsのバックエンド開発を専門にしているサンフランシスコのスタートアップのシニアエンジニアを名乗る青年と話しましたが
「Capistrano(Railsでもよく利用されるデプロイツール)? 聞いたこともないな。デプロイは自分の担当じゃないんだ」
とか
「Sidekiq(Railsで非同期Jobを実行する際によく利用されるツール)? うーんちょっと分からない」
というような回答を受けて、面食らったのを覚えています。

良し悪しを検討した上で使わないことは大いにあるでしょう。しかし、聞いたこともないとは。東京でRailsエンジニアを名乗る人が同じ状況であることは、およそありません。 このせいで、僕は当初「実はアメリカの技術者は全然大したことないのでは……」と思っていました。しかし、それは大きな誤解だったのです。

端的に言うと、アメリカで活躍しているソフトウェアエンジニアは、コンピュータサイエンス(あるいはそうでなくても数学、物理学、電気/機械工学などの関連学位)の強固な教育的バックグラウンドを持っていることがほとんどです。

その証左として、ソフトウェアエンジニアの採用では、これらの高等教育を受けていないと突破できないような、アルゴリズムとデータ構造、オペレーティングシステム、TCP/IPやネットワーク、システムアーキテクチャの知識チェックが、足切りの電話面接で1〜2回、オンサイトでは4〜5回もの面接でみっちりと問われることがほとんどです。もちろん、コンピュータサイエンスとはまったく無関係のバックグラウンドを持つ人も少なからずいますが、これらの厳しい関門を自力で突破し、職場で彼らと対等にやっていけるだけの実力を自前で用意しているのです。

僕の会社のとあるプロジェクトで、スケジュール管理を扱う新サービスの検討が始まったとき、CTOを含む複数のエンジニアが即座にホワイトボードでアルゴリズムの議論を始めました。スケジュール管理は複雑な組み合わせ問題になることが多く、また我々が考えていたシステムが少し特殊な制約を持っていたので、計算結果の単純なキャッシュがしづらい難問であることは明白でした。 複雑な現実課題を解決するソリューションには、ありもののライブラリやフレームワークなどというものは存在しません。それぞれが自分の中に持った基礎的な道具を持ち寄って、その場でしか使えない「特別な鍵」を作り出す必要があります。基礎力のない応用はありえないのです。

絶えず新しいイノベーションが起こり続けるこの地では、まさにこういった能力が必要なのだと痛感させられました。そして、この地でしのぎを削り、生き残っているエンジニアは、当然ながら恐ろしく優秀です。その渦中を自分の目で垣間見るまで、こういった本質に気付くことは困難でした。

学位と職業に強い関連がある米国

米国では、ある人の学位とその人の職業に、強い相関が見て取れます。これは特に、ソフトウェアエンジニアのような技術職で顕著であるように感じます。専門職に就くにはそれなりの学術的バックグラウンドが必要であるということで、これは考えてみれば当然のことです。

アメリカは日本以上の学歴主義ですが、これは単にランキングの高い大学を出ればよいということを意味しません。超名門校で、例えば宗教学を学んだ人がソフトウェアエンジニアとして職を得ようとすれば、レジュメ審査の段階から厳しい戦いを強いられるでしょう。一方、日本ではいわゆる一流大学を卒業した人が「新卒一括採用」され、なりゆきでソフトウェア開発の部署に配属されることはそう珍しい話ではないと聞きます。

どちらが良いのかは、僕には判断がつきません。けもの道のキャリアを歩んできた僕のような人間にもソフトウェアエンジニアとしての道が拓けたことは、個人的には本当に我が国に感謝しています。ただ、米国の方が、企業的な観点で合理性を感じます。

さて、外国人がアメリカでソフトウェアエンジニアとして働く上で、この話をしないわけにはいかない話題が、就労ビザです。学位は就労ビザに多大な影響があります。

詳しくはUSCIS(米移民局)のウェブサイトに譲りますが、ソフトウェアエンジニアの就職でも用いられる専門職ビザの花形である「H-1B」は、最低限の必要条件として「就労しようとしている職業と関連のある学士以上の学位、またはそれと同等能力を保持していること」と明記されています。

外国人の就労というのは自国民の就職機会を奪うものなので、素性の分からない外国人にやすやすと明け渡してはならないという理屈は、考えてみれば当然のことです。移民局という政府機関が、全求職者の詳細な専門性をチェックするのは現実的ではありませんから、国際的な基準として各国が認める4年制大学の学位またはそれ以上を求めることは理にかなっているでしょう。

日本の大学を卒業して得た学位は、ビザの要件にある「アメリカ合衆国の学士またはそれ以上と同等とみなされる外国の学位」として認められるので、日本でコンピュータサイエンスの学士号・修士号を持っていると、米国でビザを申請する際に役に立ちます。

博士号を持っていると、さらに高度な専門職者に適用される別のビザに申請できたり、永住権申請時に有利な枠で進めてもらえたりと、メリットはたくさんあります。

逆に言えば、学位を持っていない外国人は、何か他の手段で「自分は高度な専門職者である」と認めてもらう必要があります。それは実務経験年数であったり、有名な論文の発表や書籍の発行実績であったりと、やり方はいろいろあるようですが、いずれにしても米国で就労ビザを申請するには、企業のバックアップが必須なので、何らかの方法で、就労予定の企業に「この候補者は多大な手間とお金を掛けてビザ申請する価値がある」と思わせる必要があります。

それは、当然ながら容易なことではありません。アメリカでは、永住資格を持ち、英語を母国語または第二外国語として、アメリカの大学で専門の学位を取った候補者たちと、同じ舞台で勝負する必要があります。ビザと言葉の両面で不利があり、専門の学位もない状態では、応募しても書類審査で当たり前のように落とされたりするので、面接の舞台に立つことすらひと苦労します。余分なところで苦労しないためにも、学位は持っておくに越したことはありません。

注:就労ビザに関しては、必ず就労予定の会社と移民弁護士にご確認ください。当エントリでは一切の責任を負えません。

ここまでの写真は米国ベイエリアの様子(筆者提供)

年齢に関係なく学位を目指すのが珍しくない

在米時代には、僕も転職を夢見て、いろんな会社に直接応募したり、友人の勤め先に遊びに行ったり、スタートアップ企業のビアバッシュに参加して話を聞いたりしました。そこで気付いたのが、アメリカではある程度年齢がいってから大学に行ってキャリアチェンジしたり、卒業後も、一度働いて経験を積んでから、さらなるキャリアップのために大学院に行ったりすることが、ごくごく普通であるという点でした。

僕が実際に会った例では、もともとコミュニティカレッジで会計学を学んで会計事務所で働いていた青年は
「今度州立大学に入って、統計と機械学習を学んで、ソフトウェアエンジニアを目指すのさ!」
と笑顔で教えてくれました。

また、スタートアップ企業のミートアップで出会った青年は、西海岸屈指の名門校であるスタンフォード大学でコンピュータサイエンスの学士という出自でした。そこで僕は
「失礼な質問かもしれないが、君ほどの出自ならばこんな小さなスタートアップじゃなくても、この地を代表するテック企業に引く手あまたなんじゃないのかい?」
と訊いてみたのですが
「僕はスタートアップが好きなのと、実のところ、今は大手テック企業の競争が激しくて、スタンフォードの学部を出ても面接にすらたどり着けないことも珍しくないんだ。僕はいったん経験を積んで、実力をつけようと思ったのさ! それに、必要だと思ったらその時にまた大学院に入ればいいのだから」
という回答が返ってきて、この地の競争の激しさとキャリアに関する柔軟な考え方に、両面に非常に感銘を受けたのを覚えています。

日本でもリカレント教育が叫ばれ始めて久しいですが、新しい技術が目まぐるしく勃興しては消える現代において、ソフトウェアエンジニアとして生き残るためには、学び続けることが必要不可欠です。もちろんビザが求める要件を満たすため、いわば資格として学位が欲しいという気持ちは常にありましたが、個人的にはむしろ、この先もソフトウェアエンジニアとして自信を持って前に進むための強固な知識基盤を自分の中に作るため、大学院に進学したいと考えるようになりました。

世界の平均寿命はどんどん伸び、日本に限って言えば人生100年時代が来ようとしています。そして年金問題等を鑑みるに、どうも我々世代は65歳でのんびり隠居が許されそうな雰囲気ではありません。もし仮に「労働60年時代」が来た場合に、人生のはじめの高々20年ほどで培った知識だけで半世紀以上戦うのは難しくなるでしょう。

その時、自分を前に進めてくれるのは「絶えず考え、新しい手法を柔軟に採り入れ、自分を再発明しつづける力」だと僕は考えます。そしてこれは僕が聞き及ぶに、大学院で論文を読んだり、研究したりする過程で身につけられそうだと思いました。大学院に行きたい……! その思いは日々強まるばかりでした。

日本に帰国することで大学院進学を決意

その矢先、家庭の事情で、急に予定よりずいぶん早く日本に帰国することになりました。まだ何も成し遂げぬままの失意の撤退ではありましたが、悔やんでいても何も起こりません。そこで僕は「これは、日本で大学院に進学して、力をつけながら次のチャンスを待て、という天のお告げなのではないか」と考えることにしました。

大学院への進学は在米中も考えたのですが、あまりに学費が高くて現実的ではありませんでした。参考までに、僕が住んでいた北カリフォルニアを代表する名門スタンフォード大学の授業料は、年額52,857ドル(約570万円)ですThe Student Budget参照)。州立のUC Berkeleyなどでも、僕のような外国人を含む州外の人間ではそれほど変わらないようでした。日本の国公立大学ならほとんどの学部で年額約54万円ですから、日本だったら大学院に通えるかもしれないと考えたのです。

友人の存在も大きかったです。元同僚で友人のさのたけとさんは、もともと大学卒業後9年間ソフトウェアエンジニアとして働いていましたが、数学の夢捨てきれず、家庭を持ちながら31歳のときにフルタイムで大学院に進学することを決心して、見事修士課程を修了し、今は博士課程でトポロジーの研究をされています。

日本に帰るタイミングで、彼にどのようなモチベーションで挑戦を決めたのか、大学院生活はどのようなものか、そしてどのようにご家庭と研究の折り合いをつけているのか等のアドバイスを乞いました。そして彼と話す過程で、自分の中でますます大学院への思いが膨らんでいきました。

僕は家庭運営の都合上、仕事を辞めてフルタイムの大学院生をするのは不可能に近かったので、夜間や休日に授業を開講している大学院を探しました。この時点で早くも候補がわずかになってしまいましたが、それら全てに資料請求したり学校説明会に行って教授に相談するなどして、最終的にJAISTの「研究を重視している」「博士後期課程に進む道も続いている」「博士を産業界に送り出すことを目標のひとつにしている」等が自分の志向とぴったりだったので、出願することを決意しました。

そして冒頭のとおり、入学のチャンスを掴むことができました。

JAISTでの講義の様子(筆者提供)

これまでのキャリア構築の手法・考え方を振り返って

僕がソフトウェアエンジニアになったきっかけは、中学生の頃から熱中していた音楽の耳コピとMIDI打ち込みの趣味が高じて作ったウェブサイトと、その運営の効率化のために書き始めたちょっとしたPerl CGIに端を発しています。それ自体は実に取るに足りないスクリプトだったのですが、その縁で大学の先輩が起業したスタートアップに拾ってもらい、文系学部出身であるにもかかわらず、ソフトウェアエンジニアとしての道が拓かれました。

その後、実に10年以上も日本のIT業界でご飯を食べることができ、自動テストやAndroid等の特定の技術分野に関しては、コミュニティ活動等を通じてそれなりの存在感を示すことができるようになっていました。そこでは、自分の苦手な数学を使う必要性に迫られることもなく、ソフトウェアエンジニアとして何不自由なく仕事をしてきましたし、ある程度責任のある立場も経験させてもらいました。

ある意味では、このまま同じように立ち回ってゆけば、どこかしらの場所で何かしらの手段で食いつないでいくことは、正直に言ってできるのでしょう。その点では、敢えて今から大学院に進学して、コンピュータサイエンスを学ぶ意味が本当にあるのか、大学院を出た先に自分の求める世界が本当に広がっているのかは、自分にも分かりません。

ただし、カリフォルニアに移住して、サンフランシスコの数々のスタートアップが、現在進行形で「いまここにない価値」を世界に生み出している様子を見て、大いなる刺激を受けたのは事実です。そして、かの地では問題を解決するために、ありもののライブラリやフレームワークはないのです。全て自分たちの力で作り出さなければなりません。

そういった場所で、まったく新しいアイディアを生み出し、斬新な手法を組み合わせ、力ずくで自分たちの進む道を拓いていく力を得るために、大学院に進学するという今回の選択は、絶対に間違っていないであろうと自信を持って言えます。

渡米経験は、僕が知らず知らずに作っていた「壁」をぶち壊してくれました。大学に行く年齢という固定観念もそのひとつです。僕が最も尊敬する憧れのソフトウェアエンジニアのひとり、Satoshi Nakagawaさんの言葉を引用させてください。

僕は、ネットワークエンジニア・インフラエンジニアとしてキャリアが始まり、バックエンドの開発をするようになり、そこからフロントエンドにも手を出し、Androidと運命の出会いを果たしてからは、モバイルアプリエンジニアとして働いてきました。フルスタックエンジニアといえば聞こえはいいですが、自分を客観視した際にどれかひとつでも突出しているものがあるかといえば、かなり疑わしいものがあります。

しかし、けもの道と思われたこのエンジニア人生が、今クラウドテクノロジーを組み合わせて堅牢かつ伸縮性の高いアプリケーションを素早く開発するという現職につながっているのだから、不思議なものです。スティーブ・ジョブズのスピーチにもあったように、点と点はどこかで線となってつながるのです。無駄なことは何ひとつありません。

今回の挑戦も、学位を取るための大学数学が、修士論文の研究が、そしてもちろん大学院の授業それ自体が、僕の血となり肉となって、僕を新しい場所へと運んでくれるでしょう。その確信があります。そして、そう確信したなら、始めるのに遅いということはありません。この先の未来で自分が一番若いのは、いつだって今の瞬間なのです。

まとめ

今回は、36歳2児の父親が、働きながら大学院に進学する決断に至った経緯をご紹介しました。

人それぞれ事情が違うのは当然のことですし、僕の人生は再現性のないものですから、これを他の誰かがたどることにそれほどの意味はないでしょう。ただし、僕には「運は自分の力でもぎ取るもの」という信念があります。運はコントロールできませんが、試行回数は増やすことができるのです。

朝少しだけ早く起きて続けていた英会話が、夜1問ずつ解いた競技プログラミングが、そして土日を1日ずつ差し出して積み重ねた研究が、きっと僕らの前に突然現れた運命の扉を開くときの鍵になるのです。この記事が、誰かの背中を押して、ソフトウェアエンジニアとしての階段を上るきっかけになったらこれに勝る喜びはありません。

最後に、僕がこの挑戦を続けられるのは、僕の決断をいつも温かく後押ししてくれる妻と、とびきり健康でいつも美しい2人の娘たちのおかげです。本当に感謝します。

編集:はてな編集部