
7,644 文字

最近のネガティブな状況を受けて、少し気分転換に私の大好きな熱帯雨林の動物、コーディングナマケモノの動画を見てみましょう。コンピュータサイエンスを学ぶべきかについてです。このクリエイターが大好きなので、ぜひ動画をチェックして、いいねと登録をしてあげてください。とてもおもしろい人です。それでは始めましょう。
正直に言いますと、現在のテック市場は厳しい状況です。あの甘美なテック業界の仕事を得るには4つの道があり、それぞれに難易度があります。
まず「父親がCEOである」というリクルートモード、次に通常の大学のコンピュータサイエンス専攻の学生、これが私のようなケースですね。そして次にブートキャンプ、最後にベテランモードの独学組です。独学の人たちには本当に敬意を表しますが、同時に誰もが独学の部分を持っていると思います。大学に行くだけで全てうまくいくと期待する人もいますが、人生は自分次第です。もちろん、父親がCEOの場合は別ですが。
今日の就職市場では、誰もがベテランモードでプレイしているようなものです。4年も人生を無駄にして、結局マクドナルドでフライドポテトを袋に詰めることになるなんて想像してみてください。多くの人々が解雇され、新卒者は苦戦しています。トップ大学出身者も苦戦し、FAANGで働いていた人々も苦戦しています。
ちなみに、彼が見つけた私の写真ですが、ちょっと怪しく見えませんか?二人とも同じようにポーズをとって笑顔で、私がバービーピンクを着ているところなんて。Googleのような企業も苦戦し、経験者も苦戦しています。私自身もこの市場の犠牲者です。このようなばかげた動画を作っているのはそのためです。
私だけではありません。ちょっと悲しいけど同時に面白いですね。経験豊富なエンジニアたちのYouTube動画を見てください。みんな似たような意見を持っています。Redditは見ない方がいいですよ、もっと気分が悪くなりますから。
さらに、面接プロセスも難しくなっています。以前はLeetCodeの簡単か中級問題を解くだけでよかったという投稿を見かけましたが、現在は違います。2022年のテック不況やコロナ以前は全てが完璧だったと皆が思い込んでいますが、新卒として最初のインターンシップや最初の仕事を得るのは大変でした。少なくとも私にとっては、履歴書作りは本当に大変でした。最初の一歩を踏み出すのが最も難しく、その後は指数関数的に楽になります。それを覚えておいてください。
今では10分で世界の飢餓問題を解決するアルゴリズムを書けと言われるようです。「面接問題として、Googleを作ってください。はい、10分でお願いします。」「え、何?」「あ、そうそう、アセンブリで書いてください。」「時間切れです。」「まあ、良い試みでしたね。合否は数日中にメールでお知らせします。」
面接プロセスは厳しく、そしてAIもクレイジーな状況で、おそらく10年以内に私たちを置き換えるでしょう。大げさかもしれませんが、そこまでクレイジーではありません。市場自体はそれほど悪くはありませんが、不可能でもありません。プロジェクトに取り組み、面接の準備をし、人々とネットワークを築けば可能です。
多くの人にとって、逸話は感情を大きく動かすものです。すごく良い気分になったり、すごく悪い気分になったりします。励みになるRedditの投稿や落胆させる投稿を見ても、私は全体的なトレンドに注目するようにしています。今後5〜10年で、金利が下がれば採用も回復することを願っています。
逸話がどれほど人々に影響を与えるか分かっているので、ひとつ共有させてください。LeetCodeで8時間前に投稿された記事に600以上の「いいね」がついています。採用が明らかに回復しているそうです。この人がどれくらいの経験を持っているかは分かりませんが、5つの面接が予定されているそうです。おそらく新卒ではないでしょうが、それでもポジティブな兆候です。ただし、これも一つの逸話に過ぎず、完全に無意味かもしれません。
結局は数のゲームです。努力とたくさんの運が必要です。主に運ですが、可能です。なので、コンピュータサイエンスをお勧めします。「ただフライドポテトを袋に入れてください。」
でも真面目な話、コンピュータサイエンスを学ぶべきでしょうか?この動画を見ているあなたは、何らかのエンジニアになるためにコンピュータサイエンスを学ぼうと考えているのでしょう。「ナマケモノさん、私はもうコンピュータサイエンスを学んでいるんですけど…」
では、あなたが選択を後悔しないように助言できればと思います。2024年のStack Overflow調査も参考にしましょう。65,000人以上の開発者にインタビューしています。私は馬鹿なので、おそらく私の意見を聞くべき最後の人間かもしれません。
まず、学位は本当に必要でしょうか?技術的には必要ありません。多くの仕事は学位を必要としませんが、学位は大きな助けになります。考えてみてください。あなたが採用担当者だとして、経験のない以下の人々の中で誰を信頼しますか?
3ヶ月のブートキャンプを受けたボブ、4年間独学で学んだチャーリー(でも学位はない)、そして4年制大学の学位を持つチャド。正直なところ、最近では学位を見ても大して価値があるとは思いません。学位を持っているのに本当にダメな人をたくさん見てきました。私の大学では多くの人が不正行為をしていました。コードも書けないのに卒業してしまう人もいます。GPAと学位は一つの指標に過ぎず、全体像を語るものではありません。
でも平均的な採用担当者にとって、99%の場合、安全な選択は学位を持っている人です。私は正直チャドを選ばなかったでしょう。ボブを選んだと思います。それは基本的なことですし、私はそれを尊重します。
Stack Overflow調査によると、開発者の66%が学士号か修士号を持っています。実際、私が思っていたよりも低い数字です。これは学位なしで仕事が得られないという意味でしょうか?いいえ、成功した人々の動画がたくさんありますので、モチベーションが必要な方はGoogleで検索してみてください。
ただし、ほとんどの人にとって、学位がないと仕事を得るのはとても難しくなります。すでに難しい状況なのに、さらに困難になるということです。
では、学位を取得したいとして、コンピュータサイエンスとは具体的に何でしょうか?明らかにコンピュータの科学ですよね。Googleの定義によると、コンピュータサイエンスは「計算、情報、自動化の研究」です。
私の経験では(見た目はそうは見えませんが、実際に学位を持っています)、コンピュータサイエンスは私の期待していたものとは違いました。離散数学、オートマトン理論、オペレーティングシステムなどを学びました。最後のは明らかでしたが、私が馬鹿なだけです。これらのトピックが好きな人もいるでしょう。でも私が望んでいたのはこれではありませんでした。ゲームやウェブサイトをプログラミングしたかっただけです。
コンピュータサイエンスはソフトウェアエンジニアリングではありません。コンピュータサイエンスは理論的なことが中心です。アルゴリズム、データ構造、そして本当に計算理論について多くの時間を費やします。コンピュータの仕組み、コンパイラの仕組み、なぜこれらのデータ構造が高速なのか、二部グラフとは何かなど。私はほとんどのことを忘れてしまいました。
私にとってはかなり退屈ですが、時々面白いこともあります。ダイクストラのアルゴリズムを使ってDoorDashドライバーのナンバーワンになれるかもしれません。それはかなりクールですね。
一方、ソフトウェアエンジニアリングはより実践的な応用に焦点を当てています。理論を使って物を作ります。つまり、ソフトウェアに対してエンジニアリングのアプローチを取るわけです。ソフトウェアとエンジニアリング、ソフトウェアエンジニアリングですね。
コンピュータサイエンスでは本当にクールなものは作れません。「じゃあこの学位の意味は何?」と思うかもしれません。それは正当な質問です。私も人生について毎日そう考えています。
コンピュータサイエンスは非常に役立ちます。教育が幅広く、独学者よりも基礎をしっかりと理解し、基本をよりよく理解できるようになります。コンピュータの仕組みを隅々まで知ることができます。これによって、プログラミングのさまざまな分野を探索する自由が得られます。
ウェブ開発、モバイル開発、サイバーセキュリティなどを探索できます。微積分や線形代数のような数学も学ぶでしょう。これによってデータサイエンスや機械学習もできるようになります。選択肢はたくさんありますが、おそらくまだ独学が必要でしょう。
申し訳ありませんが、YouTubeユニバーシティを使うことになります。私の経験では、教授は主に概念を紹介するための講義ノートを渡すだけでした。そして課題を与えられますが、それ以降は自分で理解を深める必要があります。残念ながら、プログラミングが上手くなる最良の方法は、プログラミングを行うことです。驚きですね。
卒業後もそれは変わりません。常に自分で勉強する必要があります。Stack Overflow調査でも、開発者がコードを学ぶための最優先の選択肢はオンラインリソースだと示されています。なんと82%の開発者がオンラインリソースを使用しているそうです。
ちょっと待って、オンラインリソース以外に何を使っているのでしょう?もちろん同僚はいますが、スマートな同僚にアクセスするのは難しいですし、彼らもあなたを教えることに全ての時間を費やしたくはないでしょう。コーディングブートキャンプ、友人や家族、現場でのトレーニング。興味深いですね。
私はインターンシップを1回と正社員を2回経験しましたが、現場でのトレーニングは一切ありませんでした。マジで言っています。誰が現場でトレーニングを受けているのでしょう?私のチームがただ酷かっただけ?誰も何も教えてくれませんでした。ユニットテストとは何か、どう書くのか、どうすれば良い書き方になるのかなど、誰も教えてくれませんでした。
学校、eコース(これもある種のオンラインリソースですね)、本や物理的なメディアも興味深いです。本のアイデアは好きです。ただし、学んでいる内容によっては古くなっているかもしれません。これも私が個人的にバックエンドと低レベルのプログラミングを好む理由の一つです。
さて、多くの人が気にしていることですが、AIはどうでしょうか?AIはソフトウェアエンジニアを置き換えるのでしょうか?デボンAI、わぁ、緊張してきました。デボンAIはすぐに私のビジネスを終わらせるでしょう。
再びStack Overflow調査からですが、プロフェッショナルな開発者の70%がAIは自分たちの仕事を脅かさないと考えています。ワォ、この調査がいつ行われたのかは分かりませんが、とても驚きです。オンラインを見ると、恐怖、不確実性、疑念(FUD)がたくさんあるからです。
ちなみに、知らない人のために言っておきますが、私はGoogleで働いていました。Googleにいた時、大多数の人々は全てのトレンドや出来事をフォローしているわけではありません。実際の仕事で忙しすぎるのです。Copilotが出てから約6ヶ月後に誰かに「これについて聞いたことある?」と尋ねたら、「いいえ」と言われました。その人は賢くて好きだったので会話したかったのですが、知らないと言われたので質問できませんでした。
これがGoogleや大手テック企業で働く人々の多くの実態です。YouTubeを見たり、テックのソーシャルメディアをほとんどフォローしたりしていません。プロフェッショナルな開発者の81%がAIは生産性を向上させると同意し、82%の開発者がすでにコードを書くためにAIを使用しています。
これはかなり大きな話です。Googleで使用していたツールが何だったのか知りたいですね。約2年前に退職しましたが、その時はAIアシスタントツールを導入し始めたところでした。AIは今やソフトウェアエンジニアにとって不可欠で必須のスキルとなっています。完全に置き換えられることはまだありませんが、知っておくと役立つツールです。
プログラミングでAIを使用する方法を学ぶためのリソースが必要な場合は、Courseraの新しいコース「Generative AI」をチェックしてください。私はいつもこういうのが欲しかったんです。Courseraを利用したい場合は、Coding Slothのチャンネルに行って、説明欄のリンクをクリックしてください。ついでにいいね、コメント、登録もお願いします。
コンピュータサイエンスを学ぶべきですか?いいえ、学ばないでください。自分を守ってください。
コンピュータサイエンスは良い志願者になれる、幅広い知識が得られる、でもまだ自己学習が必要だという話をしてきました。実はこれについてもっと詳しく説明させてください。学校のための自己学習だけでなく、仕事のための自己学習も必要です。
なぜなら、コンピュータサイエンスはより理論的で、研究職のための準備をしているのであって、ソフトウェアエンジニアリングの職のためではないからです。これは何を意味するのでしょうか?求人要件を見ると、「わー、私はここに書かれている技術を一つも知らない、スキルを一つも持っていない」と気付くでしょう。
残念ながら、多くの学生がこの状況に陥りますが、それほど悪いことではありません。コンピュータサイエンスを学んだなら、幅広い教育を受けているはずです。強固な基礎を持っているはずなので、これらの技術を学ぶのが容易になるはずです。
しかし、一部の人々が不満を感じるのも理解できます。なぜなら、授業の課題をこなしながら、個人プロジェクトに取り組み、面接の準備もしなければならないからです。
これが私が大学は詐欺のように感じる理由です。正直に言えば、たとえ幅広い教育を望んでいても、それを得ることはできます。本当に4年もかかる必要があるのでしょうか?私は3年後には幅広い教育を受け、追求したい興味も見つけていました。
それでもまだ多くの授業を取らなければなりませんでした。100人や200人が講堂にいる授業は、効率的な学習方法ではありません。みんな異なるペースで進みます。振り返ってみると、大学で学んだことすべてを、独学なら正直1年くらいで学べたと感じます。それは馬鹿げています。
最初から無料だったオンラインリソースを使って自分で教えるために、何千ドルも払うのは嫌な話です。これは「スキルを教えてくれないのなら、なぜコンピュータサイエンスを学ぶべきなのか」という質問に戻ります。
これは馬鹿げていると思うでしょう。私もそう思います。私も同じ立場でした。しかし、卒業後に学んだことですが、コンピュータサイエンスの学位で最も良い部分は、驚くべきことに教育ではありません。他では得られない学生としての機会なのです。
残念ながら、外に出て社交的になる必要があります。コンピュータサイエンスの学生の90%はそうしたくないでしょうが。学生として得られる3つの大きな機会があります。インターンシップ、研究職、そしてハッカソンです。
インターンシップは本当に良いものです。特定の企業で3ヶ月間インターンとして働きます。良い点は、1つ目に、インターン職の面接プロセスは正社員職と比べてずっと簡単です。時にはですが、それでもすごく競争が激しいです。
2つ目に、インターンシップを得て十分な成果を上げれば、リターンオファーを得られる可能性があります。これは本当です。Googleのようないくつかの企業では、インターンでもリーチする必要があるのは本当に狂っています。なぜそうするのか理解できません。
これは面接プロセスを経ることなく、フルタイムのポジションを得られるか、再びインターンとして働けることを意味します。これは素晴らしいことです。3つ目は、お金です。
研究職については、インターンシップや業界の仕事とは全く同じではありませんが、履歴書に経験を追加したい場合や、より高度な教育を追求したい場合にはとても役立ちます。インターンシップと比べてこれらのポジションを得るのはずっと簡単です。
唯一の難しい部分は、論文に名前が載ることかもしれません。しかし、目標が仕事なら、研究職は経験を得る良い方法です。教授に研究を手伝わせてもらえないか尋ねるだけでいいのです。あなたの大学の教授でも、その大学に通っていなくても大丈夫です。
振り返ってみると、私は多くの機会を逃してしまいました。興味のあることを追求すればよかったと思います。一つアドバイスするとすれば、興味のあることをやることです。なぜなら、それはずっと簡単だからです。本当に楽しんでいるならビデオゲームをするように言われる必要がないのと同じです。ただ自然に起こります。
実際に追求していれば、私にとって簡単だったことがたくさんありました。驚くべきことに、一部の教授は今でも一緒に働かせてくれるでしょう。しかし、あなたの大学の教授に連絡を取る方が遥かに簡単です。
ちなみに、研究職の応募に関して、Redditで面白い投稿を見つけました。ある人が研究アシスタントになりたいと教授にメールを送り、こんな返事が来たそうです:
「ボランティアの場合、週20時間の研究室勤務が必要です。ボランティアです。無給のポジションです。ボランティアは毎週の出退勤時間と詳細な進捗報告が必要で、パフォーマンスへの期待は高いです。パフォーマンスが不十分な場合は解雇し、他の教授とパフォーマンスレポートを共有します。」
まず、誰かを解雇するなら、もう少し丁寧な言い方ができるはずです。第二に、他の教授とパフォーマンスレポートを共有するというのは、その人が最善を尽くしているとすれば、かなり失礼な行為です。
「私の時間はあなたの時間より重要です。ボランティア志願者の99%は時間の無駄でした。40人の志願者がいて、39人が時間の無駄でした。条件を受け入れるなら、Teamsで面接できます。そうでなければ、すでにあなたに十分な時間を費やしました。がんばってください。」
ほとんどの教授がこのようではないと思いますし、これを教授に近づかない理由にしてほしくありません。特に良い教授がいる場合は。でも、すごいですね。
とにかく、私のチャンネルを登録してください。ご視聴ありがとうございました。また会いましょう。
コメント