みなさんご機嫌いかがでしょうか。今日は、コンピュータサイエンス(CS)の科目の教授(若手中国人)に今後のキャリアについて相談に行きました。ちなみに私のスペックは日本の大学文系卒⇒日本で(非IT系)会社員⇒アメリカ大学院修了です。
Contents
教授から文系大卒→CS修士でも何ら問題はないと激励される
教授曰く、文系から理転しても全然問題ないとのことです。大学時代から情報系学んでた人に比べるとちょっとハードだけど、彼ら/彼女らも1、2年の間は教養科目学んでる(からそこまで進路に差はでない)し、教授の奥さんも会計が専攻だったけど、コンピュータサイエンスに鞍替えしたとのことです。他にも、化学からの専攻変更の例もあるから、気にしないでよってことでした。そもそもこの分野は(エンジニアの)人手不足みたいです。私の同級生でも建築学、グラフィックデザインからの転向やMBA持っているけどCSの修士課程に入りなおしたって人がいます。アメリカ人だけど、歴史学部卒業して10年位英語の先生として教鞭をとりつつ、最近になってCSの院に進んだって人もいますね。(趣味でKotlin使ってアンドロイドアプリ作ってて私よりコーディングスキルあります。)
教授も学部時代は理論数学専攻だったけど、理論数学がわけがわからなすぎてこちらの分野に大学院から鞍替えしたということです。学部は中国の大学で、修士・博士はアメリカ南部の州立大学院で学んだとのこと。
注
追記
※追記:実際、アメリカで就活してみて、仕事を選ばなければ(日系企業のシステムエンジニアやソフトウェアエンジニアなど待遇が悪くてもよいならば)こちらで比較的簡単に残る(実際私でも複数内定もらえる)ことはできるけど、待遇の良いばりばりの米系ソフトウェアエンジニアを目指すとなると、現在の私のレベルでは厳しいかなっていうのが正直なところです。実際、ウェブ開発者としてのオファーももらえることにはもらえるのですが、今の私のレベルですとあまりにも待遇が悪いオファーしかなくて辞退するレベルです。これなら日本で開発やった方がって思うレベルのオファーもありますからね。
大学院の宿題に四苦八苦するレベルで、fizzbazzもリファレンスがないとちょっと迷ってしまいますからね。逆に小さいころからPCまわりに触れるのが好きで自分でコードずっと書いてたって人なら難なくアメリカでもソフトウェアエンジニアとしてやっていけるのではないかと思います。あと競技プログラミングのatcoderで青色以上持っている人とかはおそらくアメリカの中堅州立大学院であればそれほど授業のコーディングパートで困ることはないのかなと。(周りのみなさんはアルゴリズムなんか簡単よっていうけれど、私はさっぱりです笑)
周りの専攻変更組のクラスメートもカスタマーサポートエンジニアやグラフィックデザイン関係のエンジニアには合格している人はいるけれどソフトウェアエンジニアはそれほど多くはないですね。インド系の留学生は案外ソフトウェアエンジニアとしての職を見つけてこちらで残っている方もおりますが、東アジア系につきましては(レベルのあまり高くない私の大学の場合)就職状況はそれほど芳しくないですね。中には、中華系の学生でテキサスでソフトウェアエンジニアとしてオファーもらった人もいます。彼は母国のスタートアップでソフトウェアエンジニアとして数年職歴あって今は中華系企業でバイリンガルエンジニアとして働いていますが、例外的な感じです。(彼は上海・復旦大学で情報科学学んだエリートですからね。)就活が芳しくなかった例としては母国でデベロッパーとして5年以上職歴ある方でも仕事が見つからず母国に戻ってしまった方も少なからずいます。とはいえ、帰国先では結構いい待遇でみなさん働いているみたいです。留学生は将来を考えて帰国する人が大半で残るのはインド系が多いかなと。(インド系の人たちはAWSとか某アメリカの金融であったり誰もが知るようなところでバリバリ働いていますね。最近はネパール系も強いです。)
個人的に今の私のキャリアでアメリカに残るのであれば、働き方が柔軟で経営も安定している(気持ち大き目の)米系企業に最初はネットワークやインフラ周りで入って研鑽を積みつつ、趣味でコーディングを続けるとともにミートアップにも参加してソフトウェアエンジニアの方面にも将来的には触手を伸ばしていけたらと。それが無難なのかなって思ったりしますね。
ちょっと話はコンピュータサイエンスからそれるかもですが、アメリカの州立大学院でMBAとったグリーンカード持ちの人でもいい仕事見つけられずにネイルサロンで働いていたりするので、本当に大変な社会ですね。その分、能力さえ高ければ外国籍の人でもどこにでも行けるチャンスはあって、たとえば私の大学に以前在学していたCSの教授は現在、転職してシアトルのアマゾンでシニア・ソフトウェアエンジニアとして働いていたりもするので、すべては自分の能力次第ってことでしょうか。
未経験であっても修士課程ならどんな学問でも学べる
流石に学部で専攻したことがなくて、いきなり博士課程は無理だと思いますが、学部で専攻していなくても修士課程なら大抵半年〜1年程度学部の授業を専攻すれば修士課程に進むことが可能です。授業の難易度というのも修士課程であればそれほど難しいということはなくて、授業に毎回出席し課題をそつなくこなし、分からないことがあればオフィスアワーに教授に相談、友達と切磋琢磨すれば普通に卒業できます。
一方で博士課程の場合は学生同士の競争もありますし(例:同期の学生の数割は卒業できない)、どんなにがんばっても自身の学力が足りず修士で泣く泣く終了しなければならないってことはあるのでその点事前に含んでおく必要がありそうですね。
機械学習系のエンジニアは博士必須だけど経済的に今はむりそう
機械学習のエンジニアにも興味があって教授に聞きに行ったんですが、この分野は博士必須だとのこと。アメリカで博士課程に行きなよ、君ならできるよとアドバイス頂いたんですが、経済的にも時間的にも余裕がないので、修士卒業後直接博士課程は無理かもですね。そもそもcomprehensive (qualified) exam通らなそう。私自身は日本に戻ってweb系のエンジニアとして働きつつ、社会人博士とることも視野に入れています。博士課程に行きたい気持ちはやまやまですが今はそのタイミングではないのかなと。それと機械学習のエンジニアは先行者優位的なところもあるのでたくさんの方が学び始めた今、教授と同じようなキャリアを歩めるかは不明、というかできない可能性が高いですので。(てか、教授も給料低いってめっちゃ嘆いてますし。。博士課程修了してもなかなか経済的には難しそうですね。(最優秀層を除く))
ただ、機械学習のエンジニアやデータサイエンティストは無理かもですが、ビジネスアナリストあたりだとそこまで専門的知識も要求されないのでアメリカでは穴場かもしれないと。院の一個上の代の人がシカゴでビジネスアナリストとして機械学習に近いことをやっているみたいです。ただ、ビジネスアナリストっていうと日本では4大卒の商学部出身の方が未経験でも新卒でつける職業でもあるので、そこまでしてという思いはあります。
文系学生なら大学在学中に理系科目とっておいたほうがいいかも
放送大学という選択肢
あと今、総合大学に通っている文系の大学生の方であれば、理系学部の提供するアルゴリズム、データ構造、C++、Java、Python、Linux、微積分、線形代数、統計学、離散数学あたりを取っておけば、それが大学時の単位として換算され、pre-requisite courseが免除される可能性があります。私は学部時代に微積分、線形代数や統計学はけっこう履修していたので、こちらで受講せずにすみました。もう卒業しちゃったよって方は(天下の)放送大学で履修すれば勉強になるし、単位として認められるかもです。
アメリカのUniversity of the Peopleという選択肢
(私は通ったことがないですが)最近はUniversity of the Peopleというアメリカのオンライン大学(なんと学費無料!)も存在するそうですので、こういったところで科目を受講してみるのもよろしいかなと。高卒で現在日本で働いている方であっても働きながらオンラインで学位取得目指してその後でアメリカ大学院留学ってのもありえますからね。
GPA最低3.0は欲しいところ
私の申請した大学院では申請条件として確かGPA3.0以上と掲げておりましたので、学部時代にできるだけGPAは高くしておく必要がありそうですね。ちなみに私の学部時代のGPAは3.5以上でしたのでGREやIELTSなど英語の点数は足切りに近かったですが無事に申請が通りました。学部時代のGPAが低いよ、どうしようという方は大学によっては多少GPAが低くても(2.5でも)、職務経験があれば入学を考慮してくれるところもありますので、そういった進学先を探すのがよろしいかと。
新卒カードを有効利用して最初は日本でエンジニアとして働いた方が無難
海外就職って焦る気持ちはあるかもですが、やっぱり日本は新卒ほぼ未経験でもエンジニアとして採用しているというメリットもありますので、新卒で研修充実しているところに入ってかつ業務知識を身に着けてからでも遅くはないかと。(余談ですが、こちらの大学院でオールA(GPA:4.0)の方は10年近く母国でエンジニアとしての勤務経験もありましたので、やっぱり母国で勤務経験があると大学院進んでも有利になったりします。)
親御さんが裕福で何年でも留学させてあげるっていうのであれば、新卒で直接留学に行った方がいいかもですが、職歴積んで貯金もためてから留学した方が人生詰みにくくなりますからね。自分の人生を自分で選択できている感もあって、こちらの方がおすすめだったりします。
お金のみが目当てならエンジニアになるのはやめた方がいいかも
仮に高収入を目当てにIT業界に入ってくるのなら、やめた方がよろしいかなと思います。というのも、エンジニアは日々勉強勉強で自身をアップデートする必要がありますので、本当に学問が好きじゃないとなかなか続かないからです。そういったことが目当ての文系の方であれば、日本で不動産ディベロッパー、コンサルや商社に入った方が(身体ははるかもだけど)比較的楽に稼げますからね。
正直、アメリカの修士課程でCS専攻していた学生や教授でさえもコーディングがそれほど得意でない人もいたので、そこまで気負いしすぎる必要ないかも
自戒の意味を込めての話となるのですが、アメリカの修士課程でCSでマスターとった私もあまりコーディングは得意でなく、クラスメートも一部のバリバリ職歴ある方を除きコード書ける人はそれほど多くはありませんでした。また、教授であってもコーディングがそれほど得意ではない方も見受けられました。彼らはアルゴリズムなどの知識は豊富ですが、コーディングは私より得意ではなかったので、ある意味それを知れたのはアメリカに留学した甲斐があったのかなと。同時に、アメリカでCS学ぶハードルもすごく下がってよかったですね。
思うにコーディング得意な人は企業に行って、コーディングが得意ではない人はアカデミアに進む傾向がありそうですね。 (あまりレべルの高くない私の大学の場合ですが。)ですから、ばりばりコーディング力をつけて同僚と切磋琢磨したいっていう方は大学で教育受けるより、企業入った方が数倍早く成長できるのではないかと思います。もちろん大学も自身の興味のある分野をとことん深掘りができて知的好奇心が満たされるというメリットもありますし、卒業後に米国にとどまりやすくなるということもあるのですが、このあたりはよく検討の上、ご自身の進路を決めるのがよろしいかなと。そもそもアカデミアはリサーチに重きを置いているのであって、コーディング力の向上とかはやっぱり独学や実務で身に着けるしかないのなと。
アメリカの三流大学・大学院でCS学ぶよりは、旧帝大・東工大や大学院大学等で情報学学んだほうが無難
アメリカの三流(ティーチング型)大学・大学院でCS専攻するよりも旧帝大・東工大や大学院大学等で情報学学んだほうが学生の質及び教育の質は明らかに高いです。何より学費も格段に安くすみますからね。アメリカのトップレベルのリサーチ型大学・大学院でCS専攻できる(なおかつ全額給付奨学金もらえる)のであればもちろん留学すべきだとは思いますが、そうでなければ無理して留学する必要はないかと思います。
田舎の大学院であればCS専攻であっても、GPA、TOEFLやGRE等の要件さえ満たしていればほぼほぼ入れますし、卒業だって文系卒業の方であっても、国公立大学や日東駒専以上卒業された文系の方ならコースワークとれば卒業できる可能性は高いですからね。
アメリカの宿題文化はよろしくないもの
コンピュータサイエンスの分野でさえ、どうしようもない宿題をたくさん課してくることから、自学したい私にとっては妨げでしかなかったです。特に母国の学部卒でアメリカの修士博士一貫課程とって民間企業に努めた経験のない外国人教授だとその傾向が強いのでこのあたりは注意が必要ですね。小さい頃から宿題漬けの環境に身を置いていたのなら違和感は感じないでしょうが、今振り返ってこの宿題が役に立っているかというと答えはノーですね笑
アメリカのCS修士課程と企業勤めを比較するなら、企業勤めの方が正直経験値は上がる
夢を壊すような話をして大変申し訳ないのですが、アメリカのCS修士課程で学んだ内容はほぼ教科書で学べる内容+論文はほぼ独学だったので、あまり大学院で伸びた気はしないです。むしろ自分の論文テーマについては指導教官より自分の方が詳しくていろいろ大丈夫なのかなと思った次第ですね。
日本では博士課程に行く人はそれほど増えていないなんていうニュースがよく流れていて政府が最近博士課程の待遇改善に向けたテコ入れをしているみたいですが、正直修士課程より企業勤めしている方が経験値が上がっているような気がします。というのも、特にCS分野の場合、メガテック等の研究開発職につけるのであれば、大学よりも最先端の内容に触れられますからね。大学で博士課程とっていないとなかなかつけないポジションがあったり、自分の好きな研究に邁進できるっていう大学のメリットはあり、それはかけがえのないものだとは思いつつも、今は企業勤めの方が大きなインパクト与えられるのかなとも思ったりしますね。
基本情報技術者試験は合格しておいた方がいい
コンピューターアーキテクチャーやオペレーティングシステムの基礎が凝縮されていて、留学後でも本当に役に立ちます。基礎情報技術者試験の作成元は偉大ですね。余裕があれば応用情報技術者試験もとっておければなと。日本のIT企業に就職した場合、企業によっては資格補助も出してもらえるところもありますからね。私は以下のキタミ式のを使って勉強していました。
大学院留学前に読んでおくといい教材
以下の教材はアメリカの大学・大学院で実際に使われている教材でいずれも名著です。私も授業で使っていました。大学院留学前に日本語版のものでかまいませんので読んでおくといいかと思います。(いずれも初学者にとっては難易度高めなのでまずは読み飛ばすだけでもよろしいかと。)
アルゴリズムとデータ構造
アルゴリズムは私が最も苦手とする分野で試験の出来も散々でしたし今読み返しても理解できているとはいいがたいですが、こちらの本を読んでいけば世にある基本的なアルゴリズムは網羅されているかと思います。辞典のように調べものするときに使うのもよろしいかと。一回で全部覚えようとしても無理なので基本的なアルゴリズムを雰囲気つかんでいくような感じですね。京都大学の有志の方が本書を元に勉強会を行っていて、その時作成したネット上に転がっていたので私はそれも参考にして勉強していました。
オペレーティングシステム
通称『恐竜本』ですね。こちらはオペレーティングシステムの名著です。初学者でもとっつきやすいです。個人的にCPUスケジューリングや並列化等とても参考になりました。Banker’s algorithmやDining Philosopher Algorithm等様々なアルゴリズムもわかりやすく説明しています。
コンピューターアーキテクチャー
こちらはヘネシーさんとパターソンさんが執筆したコンピュータアーキテクチャーの名著です。低次元のアセンブリ言語やパラレリズムを学ぶことができますね。上の教科書がへネパタ本、下の教科書がパタヘネ本として知られています。ヘネパタ本はアセンブリ言語の記述ばかりで少々難易度高めなので、まずはパタヘネ本から読めばよろしいかと。
大学院選びはできるだけいい大学かつ都市部かつ奨学金もらえるところが基本
私は学費の面を考慮してアメリカ南部の田舎の大学院に進学したのですが、不便で不便でしょうがありませんでした笑 ちょっと歩くと牧場があるレベルです笑 そもそも移動が困難ですし、南部英語もいまだに何言っているのかわかりません笑 都市部に遊びに行ったりすると英語が聞き取りやすくて驚きましたね。それと入学当初は卒業できるか不透明だったので意図的に少しレベルを下げたこともあり、教員の質、クラスメートの質も日本にいた頃と比較するとそれ程高くはありませんでした。ネットワーキングや就活もオンラインが中心となり、とても不便でしたね。ミートアップやキャリアフォーラムに参加する機会なども限られてしまいますので、田舎はおすすめしません。
都市部は一般的に言って家賃は高いですが、学生向けのシェアルーム等が整っていて、月1,000ドル以下で借りられるところも多いですのでちょっと生活費はかさむかもですが都市部に住んだ方がよろしいかと思います。物価については物流がよい分、都市部の方が田舎より安いです。金銭的な面から考えた場合、都市部に行った方がよさげですね。
奨学金は学費半免のをもらっていたのですが、生活がぐっと楽になりましたね。夏休み中にCPT使って有給のインターンできたりもする(インターンでも月20~30万円は優に稼げる)のでかなり生活は楽になりますし、学内でもRAとかの募集ありますのでそちらに利用しているのもよろしいかなと。(学内バイトはあまりにも給料が低かったので費用対効果が悪いと思い、私は行いませんでしたが。)
オフィスアワーに教授のところ行くと仲良くなれる
ワンピースや日本のゲームがむちゃくちゃ好きみたいなので、今度日本のサブカルについても熱く語れればと思います。(あまり詳しくはないけれど)いずれにせよ、教授と親しくなれたのは非常によかったです。今度からは何か授業の質問があればガンガン聞きに行けますね笑
ということで今日はこんな感じです!文系大卒でもエンジニアとして(日本で)職歴積んでアメリカでCSの修士号とればエンジニアとして活躍できる可能性はありそうですね!
あわせてお読みください
海外就職にあたり参考となる書籍