お世話になっております。コンピュータサイエンスについて質問があります。

現在 23 歳の高卒ソフトウェアエンジニアで CS を体系的に学びたく学士を取得しようと思っています。やる気があれば修士以降もやりたいです。

単純にコンピュータやコードを書くのが好きでもっと詳しくなりたかったり、自分に出来ることを増やしたりビッグテックで働いてみたいなど理由は色々あります。

選択肢は2つ考えていて、働きながら海外の大学のオンライン講義を受けるか、国内の大学で学ぶため受験からやり直すかです。

単純に比較をするのは難しく懸念点も様々ですが、気にしているのは卒業後の年齢で入社しようとしても足切りされるのではないかという点を心配しています。高度な仕事をやりたくて勉強したのに土俵に立つことすら出来なくなってしまったら少し悲しいです。社会人大学生としてやっていく方がリスクが少ないのは分かっているのですが、まだ決め切れておらず kumagi さんが同じ立場だったらどうするか意見をいただきたいです。

色んな求人を見たりするのですが大体必須条件に CS の学士・修士または同等の実務経験と書かれていることが多く CS に関する知識の必要性を日々感じています。コーディングテスト?は受けたことが無いので分からないのですが一応 AtCoder 黄なのでなんとか行けるかな、、と思っていたりもするのですが…

競プロをやってきて凄い人に沢山出会うのですが、経歴を見ると大体東大を通っていて凄い事をやりたいなら自分もそういうところで学ぶべきなのかと考えてしまいます。

長文になってしまいました、申し訳ありません。

お手数をおかけしますがご回答いただけますと幸いです。

キャリアのために今から学位を獲得すべきか?という質問ですね。短い答えは「ノー」です。なぜならビッグテックは学位を採用条件にしていません。実際の求人をいくつか見てみましょう。ソフトウェアエンジニアリングの求人を適当にピックアップしたのであなたがこの文章を読む頃にも同一の求人がアクティブかはわかりませんが、傾向は変わらないはずです。

ビッグテックの求人例

まずはGoogleはこうなっています。

学士号を取得していること(同等の実務経験でも可)

次にAppleは学歴に関する言及すら無くMinimum Qualificationsには

  • 2+ years of experience in web application development with an in-depth understanding of data structures and algorithms.

とあります。つまり実務経験ということで他の項目は言語やフレームワークの経験ですね。

次にFacebookことMeta

  • Bachelor's degree in Computer Science, Computer Engineering, relevant technical field, or equivalent practical experience

コンピュータ・サイエンスやコンピュータ・エンジニアリングやそれに関連する技術領域の学士、もしくは同等の実務経験と書いています。実務経験が説明できれば学歴での足切りはありえません。

そしてAmazonはPreferred Qualification (=あると望ましい資格)の所に

  • Bachelor's degree in computer science or equivalent

とあります。コンピュータ・サイエンスの学士号もしくは同等の学位、と言っているようですがあくまでPreferredなので足切りではなく加点ポイントですね。

Netflixの求人も見てみましたがrequirementに関する言及すらありません。

Microsoftのソフトウェアエンジニアリングは

  • Bachelor's Degree in Computer Science or related technical field AND 2+ years technical engineering experience with coding in languages including, but not limited to, C, C++, C#, Java, JavaScript, or Python

    • OR equivalent experience.

とあって、同等の経験(equivalent experience)があれば学位は無くても良いと明記しています。

書類選考について

実例を並べても「暗黙の条件が別にあるんじゃないの?」と疑うのもわかりますが、僕の知る限り求人票におけるこういった条件は本当に文字通りの解釈をするために用意されています。「ソフトウェア開発の2年の経験」と書いてあれば2年間ソフトウェア開発部署でただ椅子に座っていただけでも一応満たしますし、逆にNext.jsやDockerやクラウド技術をバキバキに使い倒したアプリとかOSとかコンパイラとかDBを1人で作りましたとポートフォリオに並べても実務経験を書いていなければ「実務経験1年同等」とすら解釈されず落とされます。

テック各社、書類選考のレイヤーでは候補者が多すぎるので機械的に該当しない人をminimum requirementsに照らしてその後の選考に進む人を選びます、ここに関しては落ちたらそういうフィードバックが貰えることもあるのでリクルーターに聞いてみると良いです。満たしているのに書類で落ちた場合は運です、学位を持っていても運悪く書類落ちすることはザラです。書類選考に対しては学位よりもリファーラルを受ける方が有効に働くと思います。

そして二次選考は主に(特にソフトウェアエンジニア職は)面接を通して行うのでそこで高評価が出せるかがとても大事です。最終決定の際に複数の候補者の間で決め兼ねた時に何を手がかりに決定するかは会社によっても違うので学歴も見るかも知れませんが、大抵は別のシグナルを用いて決めるはずです。ですのでビッグテックにおいては学歴にこだわるよりは同等の実務経験を積むほうが就職に対して合理的であると思います、学費も掛からないし給料も貰えます。

また、年齢についても各社の求人ページをよく読んでみると気にする必要がないことがわかります。例えば上のGoogleのページだと

また、人種、信条、肌の色、宗教、性別、性的指向、性同一性またはその表現、国籍、障がい、年齢、遺伝情報、従軍経験、配偶者の有無、妊娠またはそれに関連する状態(授乳を含む)、親になる予定、犯罪歴(法的要件に一致する場合)、法律によって保護されるその他の状態にかかわらず、均等な雇用機会を提供すべく尽力しています。

Metaだと

We do not discriminate based upon race, religion, color, national origin, sex (including pregnancy, childbirth, reproductive health decisions, or related medical conditions), sexual orientation, gender identity, gender expression, age, status as a protected veteran, status as an individual with a disability, genetic information, political views or activity, or other applicable legally protected characteristics.

ほぼ同じような事を書いています。わざわざ書きませんがAmazonもAppleもNetflixもMicrosoftも同様の文言が書いてあります。

なぜこれらを明記しているかと言うと、もし仮に年齢による足切りが暗黙にでも行われていた場合、それはアメリカでは人種差別や性差別と同様に違法だからです、場合によっては性別や年齢入りの履歴書を提出した際にリクルーターから消すよう依頼される事すらあります。ですので「進学したら年齢が高くなり過ぎてしまうのではないか」という懸念も不要なものです。むしろOver Qualified(過剰資格)の方が先に問題になるかも知れません。

ただし、研究職に就くのが目的である場合は論文投稿・発表実績などが加味されるため大学の研究室に所属するのが正攻法になる事もあるかと思います。

コーディング力と面接対策

AtCoder黄というのでアルゴリズム力に関しては特に不安は無いですが、コーディング面接で問われる能力はアルゴリズム力だけではありません。面接は面接でコツが要るので米国では定番の「Cracking the Coding Interview」(邦訳: 世界で闘うプログラミング力を鍛える本 )を読んでおく事をおすすめします。オンラインで有料で面接練習ができるサービスも幾つもありますし、知り合いの経験者と模擬面接をして練習するのもおすすめです、僕に直接コンタクトをとっても歓迎です。知り合いが運営している「Engineer Guild」も何かの力になれるかと思いますし無料です。暖色コーダーでも落ちる一方で灰色コーダーでもコツさえ掴めば通るのが面接ですので入念に準備することをおすすめします。

どの会社も「仕事ができる人を採りたいが直接それを測れないので面接でアルゴリズム問題を出して近似している」が実態であって、面接では仕事ができる人であることを示す事が大事です。例えば難問に直面した時の理想的な仕草は「ダメ元でセグメント木を取り出して振り回す事(AtCoderでは意外と有効)」ではなくて「何が問題の核心でどんな道具があったら解決できるか自分の考えを整理して説明する事」だったりします。その差を理解するために場数を踏む以上の方法を僕は知りません。

進学の是非

もちろんコンピュータ・サイエンスの基礎から体系立てて学ぶ事自体は有益ですので熱意が持つのならぜひ進学すると良いと思います。ただし入社に向けての準備ではなく、入社後のキャリア形成の一環として会社から補助を受けながら進学するのがおすすめです。多くのビッグテックがそのような社員特典を用意しています。

https://www.levels.fyi/benefits/Tuition-Reimbursement/

もちろん働きながらの学業は忙しくなりますがそれだけの価値はあります。

3か月3か月更新

利用規約プライバシーポリシーに同意の上ご利用ください

熊崎 宏樹さんの過去の回答
    Loading...