
9,300 文字

この動画では、ソフトウェアエンジニアになるべきではない3つの理由について解説します。私の名前はアマンです。大学在学中、AmazonやShopify、HPなど6社で高給のソフトウェアエンジニアインターンを経験し、卒業後は6桁の年収の正社員オファーを複数もらいました。今日は、どのような人がソフトウェアエンジニアに向いているのか、プログラミングで生計を立てることに興味がある人々が持つ一般的な誤解、そして多くの人が気づいていない厳しい現実について学んでいきます。
ソフトウェアエンジニアとして働くとはどういうことなのか、この驚くべき給与や特典、福利厚生、ライフスタイルを脇に置いて、かっこいいコーディング風景を取り除いたら何が残るのでしょうか。なぜ80%のソフトウェアエンジニアは幸せではないのでしょうか。この動画を見れば、何年もの時間と労力の無駄を省くことができます。
これら3つの理由はすべて重要なので、全体像を把握する必要があります。すべてをしっかりと理解するようにしてください。
ソフトウェアエンジニアになるべきではない最初の理由は、あなたがソフトウェアエンジニアの採用プロセスに向いていないということです。ソフトウェアエンジニア業界は戦場のようなものです。弾丸が雨のように降り注ぐ中を走り抜け、仲間が爆破されるのを目の当たりにし、撃たれないように戦い続けるだけです。そして、多くの人々はそのレベルの拒絶と失敗に耐えられません。彼らはプレッシャーに耐えられないのです。
特に、あなたはおそらく拒絶の感覚に耐えられないでしょう。拒絶は、テック業界で仕事を得る際の常識です。ほとんどの人々は、オファーを得る前に何百回もの拒絶を経験しなければなりません。そして拒絶に次ぐ拒絶を経験しても、コーディングを続け、応募を続け、紹介を得続け、面接を続けなければなりません。何度も何度も拒絶され続けるのです。もう限界だと感じても、最終面接まで何度も進んでも「ノー」と言われ続けます。
私が得た1つのオファーに対して、他の3社の最終面接で落とされました。考えてみてください。何ヶ月も待ち、5、6、7回の面接を受けて、最後に「申し訳ありませんが、他の方を選びました」と言われるのです。私は面接からオファーへの転換率が良い方ですが、それでもほとんどの人は1つのオファーを得るために5〜10回の面接を受けなければなりません。それも、面接の電話すら得るために何百、何千もの応募をしなければならないことは言うまでもありません。
問題は、学校や社会が、このレベルの失敗や拒絶に対処する方法を私たちに全く教えていないということです。考えてみてください。あなたはおそらく頭の良い人でしょう。コンピュータサイエンスやソフトウェアエンジニアリングに興味があるのですから。しかし、実際に考えてみると、学校では90%の事を正しく行うことが期待されています。良い成績を取るために90%、時には95%を正解しなければならないのです。しかし実世界では99%が間違いで1%が正解なのです。
そしてその1%が、残りの99%の失敗をすべてカバーするのです。応募や面接で99%の失敗率があっても、それは実際にはかなり良い成功率なのです。そしてほととんどの人々は、この違いを理解できません。1つのオファーを得るまでに、何度も何度も失敗し、あらゆる方向から拒絶され続けることに耐えられないのです。
明るい面は、ソフトウェアエンジニアの採用プロセスを乗り越えられれば、仕事を得る際の必殺武器になるということです。他のどの業界も比較的簡単です。数十の紹介状を得る方法を見つけ、素晴らしい履歴書を書き、LeetCodeやコーディング面接をこなす力を身につけた後、他の業界の人の肩越しに覗いて「これなら簡単だ」と思うでしょう。
どうしてそれが分かるのかというと、最近、別の業界の友人に履歴書を見直してほしいと頼まれた経験があります。多くの生徒の履歴書を見てきたように。申し訳ないけど、私が見た中で最悪の履歴書の1つでした。彼は決して愚かな人ではありませんでした。彼の業界ではかなり成功していました。しかし、彼の業界の基準はソフトウェアエンジニアリングよりもはるかに低かったのです。
私が見てきたほとんどすべてのソフトウェアエンジニアの履歴書は、彼のソーシャルメディアやマーケティングの分野とは雲泥の差がありました。彼の業界では、採用プロセスで本当に優れた能力を身につける動機付けがなかったのです。
私はソフトウェアエンジニアリング分野を、超高温の火山や凍てついた荒れ地のような極限環境のように見ています。そのような環境ではほとんど生物が生存できませんが、生き残れる生物は極めて強靭です。どんなことをしても生き残れ、どんな環境でも生存できます。これらの生物は極限環境生物と呼ばれ、どんなに酸性度が高くても、熱くても、寒くても、ほぼどんな状況でも生き残れるように適応しています。
そして、それがソフトウェアエンジニアの職を得るプロセスを乗り越えた時のあなたの姿なのです。この業界を乗り越えられれば、他のどんなことでもほぼ対応できるようになります。
人々がソフトウェアエンジニアのオファーを得る際に直面するもう1つの問題は、感情的すぎて、システム思考ができないということです。システム思考とは、個々の出来事の連続としてではなく、大きな相互接続されたシステムとして物事を見る全体論的なアプローチです。
これはどういう意味でしょうか。個々の経験を見てそれに基づいて決定を下すのではなく、それらの個々の経験を大きな相互接続された連鎖の一部として扱うということです。ほとんどの人々は個々の結果に過度に執着します。1つの紹介状を得て、その1つの紹介状が仕事のオファーに繋がることを期待し、それが実現しないと打ちのめされ、落ち込んでしまいます。
実際には、変換率を評価することが重要なのです。紹介状から面接に至る変換率はどれくらいで、それは一般応募とどう関係しているのでしょうか。紹介状から面接への変換率が20%か30%なら、1つの紹介状で面接に至らなかったのは当然です。
このように考えてみてください。サイコロを振って1か2が出なかったからといって、落ち込んで泣き出すことはないでしょう?望む結果が出るまで何度も何度もサイコロを振り続けるはずです。しかし、人々は個々の経験に過度に執着しすぎて、前に進めなくなってしまいます。
これらの個々の出来事をより大きなシステムの一部として見る必要があります。例えば、100の応募をして0件のオファーを得た場合、応募プロセスに何か問題があると安全に仮定できます。それが履歴書なのか、LinkedInなのか、紹介状なのか、応募している企業なのか、プロセスの他の部分を心配する前に修正する必要があります。
または、20件のオファーを得てすべて失敗した場合、LeetCodeのスキルを向上させる必要があることが分かります。ほとんどの人々はそのように考えません。ただ目を閉じて応募をスパムし、仕事のオファーを得られると期待します。そして、一歩下がって就職獲得プロセスから感情的に距離を置くことができないなら、あなたはソフトウェアエンジニアに向いていません。
ソフトウェアエンジニアになるべきではない2つ目の理由は、成功する資格があると信じていること、物事が銀の盆に載せられて提供されるべきだと考えていることです。
それを言うと、あなたはおそらく「それは絶対に私ではない」と思うでしょう。しかし、このように考えてみてください。「これらのことはこんなに難しくあるべきではない」「不公平だ」と思ったことはありませんか?
「この会社はLeetCodeのハード問題を知っていることを期待すべきではない」「1回の面接を得るために何千もの応募を必要とするのはおかしい」「エントリーレベルの職を得るために3、4回のインターンシップ経験が履歴書に必要なのはおかしい」「学位があれば十分なはずだ」「ゲームは私に不利に仕組まれている」
そういう態度を持っているなら、この分野に全く向いていません。あなたが理解していないのは、これはすべて需要と供給の問題だということです。ソフトウェアエンジニアのライフスタイルは素晴らしいものとして宣伝されています。無料の食事、オフィスのあちこちにヨガボール、仮眠ポッド、素晴らしい高給、リモートワークの自由、柔軟性、そして仕事を得るのが簡単だという考え。
多くの人々がそれを信じ、同じ限られた数の仕事を求めてコンピュータサイエンスを学ぶことを決めました。過去数年間で、そのライフスタイルとCOVID-19の影響で、以前なら考えもしなかった数十万人もの人々が追加でコンピュータサイエンスに登録することを決めました。そして、市場の崩壊と金利の急上昇により、企業も人員を削減せざるを得なくなりました。
仕事の供給が比較的限られている中で、さらに削減を余儀なくされ、一方でコンピュータサイエンスを学び、それらの仕事を求める人々が大量に流入しました。現在、我々は供給過多で需要が相対的に低い状況にあります。雇用者市場なのです。彼らが採用できるコンピュータサイエンスの学生1人に対して、5人、10人、15人もの他の選択肢があります。自由に選べるのです。そのため、基準はすべて上がっています。
おそらく昔、2000年代初期には0回か1回のインターンシップ経験でも通用したでしょう。しかし今では、面接すら得るために4回、5回、6回のインターンシップ経験が履歴書に必要です。
これに関連するもう1つの側面は、振り子は常に揺れるということです。どの業界を見ても、通常は需要が高い・低い、供給が高い・低いの間を行ったり来たりします。どんなトレンドを見ても、将来を予測することができます。
少し関係のない例を挙げてみましょう。YouTubeの文化について考えてみてください。2017年、YouTubeはデイリーブログの場でした。映像制作コンテンツを作る人々がいました。Casey Neistatのようなプラットフォームの王者、Peter McKinnonなどのYouTuberがいました。教育的なトピックをタイトルにしながら、ブログ形式でフォーマットされた動画の例もありました。その人は1日の中でそのアイデアについてちょこちょこと話しながらブログを作っていました。
そして振り子は完全に反対方向に振れました。2019年、2020年、2021年には、純粋に教育的なクリエイターが現れました。Matt D’Avella、Thomas Frank、Ali Abdaal、Captain Sinbadなど、これらの人々がアルゴリズムで人気を集め始めました。リスト形式の動画がプラットフォームで最も人気のあるものとなり、説明付きのタイムスタンプ、オンラインの無料リソース、ビデオエッセイ、記事など、教育が最重要になりました。そしてブログは規模を縮小しました。
そして今、我々は完全に反対方向に戻っています。教育的なクリエイターでYouTubeが飽和状態になるや否や、より本物のライフスタイル系の人々が戻ってきています。Sam Sulek は過去1、2年で有名になりました。それは完全に構造化されていない、30分から1時間の長さの彼の1日を見せるブログで、最小限の編集しかされておらず、人々はそれを気に入っています。
信じてください、振り子は常に揺れるのです。コンピュータサイエンスとソフトウェアエンジニアリングに話を戻しましょう。1990年代と2000年代のシリコンバレーについての本を読むと、世界は全く異なる場所でした。プログラマーは光るカードのポケモンのように稀少でした。2、3ヶ月の間に5〜10件のオファーを得て、提示された給与の2〜3倍に交渉したという話がありました。信じられないことでした。
企業はエンジニアに対して超親切でなければなりませんでした。なぜなら、彼らはいつでも通りを渡って競合他社で働くことができたからです。1900年代後半に出版されたこの本「ハッカー:コンピュータ革命の英雄たち」からの引用を紹介します。
「最高のプログラマーは魔法使いのようでした。機械を思い通りに操り、コードの行から魔法のようなものを生み出す能力がありました。バレーでは、これらの魔法使いはロックスターのように扱われ、豪華な特典、ストックオプション、法外な給与が彼らを引き付けるための代価でした。
才能への需要は非常に激しく、プログラマーが一日で仕事を辞め、次の日には通りを下った所で新しい仕事を始めることは珍しくありませんでした。しばしば2倍の給与でした。企業にとって、それは優れた人材を雇うだけでなく、競合他社に流出するのを防ぐことでもありました。」
これが1990年代と2000年代初期のコンピュータサイエンティストとプログラマーの生活でした。そして人々はそのライフスタイルを見て、その需要を見て、この業界の門に殺到しました。そして何が起こったでしょうか。振り子は揺れ、供給過多で需要が低くなり、今では完全に逆転しています。
これはソフトウェアエンジニアにならない理由になるでしょうか?はい、もしあなたがそれを不公平で制御不能だと認識するならば。もし私がこれを言って、あなたが「もうだめだ、辞めるべきだ、不公平だ、私には向いていない」と考えるなら、そうすべきです。もしあなたが「これらの企業は基準が高すぎる、もうだめだ」と考えるなら、あなたは破滅していて、最初からここにいるべきではありません。
しかし、代わりに「ああ、それは厳しいけど、それは競争に勝つために一生懸命働く必要があるということだけだ」と考えるなら、この時点でほとんど興奮しているようなものです。競争のアイデアがあなたを興奮させる、競争と戦うためにグローブを装着する、そういう人々がこの分野に向いているのです。
物事が簡単であることを期待する権利が誰にありますか?あなたはトップ1%のライフスタイルを求めているのです。20代前半で6桁の年収のオファー、それは同年代の99%の人々より先を行っているのです。それが簡単に、銀の盆に載せられて提供されることを期待しますか?
もし簡単なものを求めるなら、教師になるとか、医療アシスタントや看護師になるとか、そういうサービスが不足している分野に行きなさい。仕事自体が簡単だとは言いませんが、それらの分野で仕事を得ることは、ソフトウェアエンジニアになるよりもはるかに簡単です。なぜなら、ライフスタイルはより厳しく、需要が多くて供給が少ないからです。
老人ホームで働きなさい。若い人々が十分にいないブーマー世代の人口全体の面倒を見る必要があるのですから。できるだけ早く仕事を得たいなら、それは簡単なはずです。何が簡単であるべきかを決めるのはあなたではありません。市場を分析し、それに基づいて決定を下すのです。あなたがそれが簡単であるべきだと感じることは、まったく的外れです。
この厳しい現実に対処できないなら、おそらくあなたはソフトウェアエンジニアになるべきではありません。そしてその点について、人々が「市場が悪い」と言う時、市場は悪くも良くもありません。市場はあるがままです。そしてあなたはそれがあなたにとって悪いか良いかを決めるのです。
以前も話しましたが、「市場が悪い」というフレーズを完全にあなたの語彙から削除してください。それはどんな形でもあなたの役に立ちません。
ソフトウェアエンジニアになるべきではない3つ目の理由は、あなたが独立して難しい問題を解決することを好まない、何をすべきか指示されることを望んでいるということです。
あなたが気づいていないのは、ソフトウェアエンジニアリングの多くは完全に独立して働くことであり、他の多くの業界と比べて何が起こっているのか全く分からないということです。厳密なカリキュラムがあり、何をすべきか指示され、ただ順を追って規則に従えばよい他の多くの分野と比べて。
教育システムを含む他の多くの分野は、プロトコルに従うことが重要です。彼らはただ一連のステップに従う体と手を必要としているだけで、それに従えば大丈夫なのです。学校でさえ、構造化されていない環境で成功する方法を教えていません。
学校では宿題の各問題には1つの正解があり、オープンエンドな状況はありません。教師に論理的に宿題が無意味だと気付かせることはできません。1つの答え、1つのやり方でそれをしなければなりません。
ソフトウェアエンジニアリングでは、確かにより大きな問題がありますが、非常に非常に多くの正解があります。例えば、ソフトウェアエンジニアリングの1つの道は、問題がそもそも問題ではないことを証明することであり、それは成功した答えとなります。
考えてみてください。教師が宿題を出して、あなたがただ教師に「ああ、この宿題は関係ありません」と証明したら、彼らは何と言うでしょうか?「黙って宿題をしなさい」でしょう。
しかし、ソフトウェアエンジニアリングはそれとはまったく異なります。私には、ソフトウェアエンジニアリングで問題を提示され、「これは実際には悪くありません、これで大丈夫です」と示して、それでよしとなった経験が複数回あります。それは成功した結果なのです。
そして、問題が問題である場合でも、つまり実際に解決しなければならない場合でも、解決策は無数にあります。しばしば同じことを行う数十の方法があり、それぞれのトレードオフを考慮しなければなりません。何を選ぶべきかは明白ではありません。
多くの人々は、それがどれほど構造化されていないかに耐えられず、単純に自分で働くことができません。ソフトウェアエンジニアリングでは、何日も問題に取り組んで、後で他の誰かがあなたが取り組んでいることが完全に無関係だと気付き、そのPRを放棄して、コードを削除して、先に進まざるを得ない時があります。
あなたの仕事は完全に無効になりますが、それは正常です。なぜなら、あなたの仕事は最終的に完全に無駄だったとしても、依然として分野を前進させているからです。そして多くの人々はこれに耐えられません。
私も初期のキャリアでこれに深く苦しみました。正解がないという事実に直面できない人々、ただ何をすべきか指示されることを望む人々、その日の仕事を終えることを望む人々、それさえもこの分野の根本的な誤解です。
私はこの間違いをよく犯していました。人々はエンジニアとしての仕事を、紙の山のように見ています。紙を処理し、サインし、チェックを入れれば、その日は終わりです。全くそのようなものではありません。
実際には、ソフトウェアエンジニアとして、あなたには一連の高次元の課題や問題があり、エンジニアとしてあなたはそれらの問題に対するソリューションを構築することで対処しようとしています。そしてソフトウェアにいる場合、あなたはそれらの高次の問題に対するソフトウェアソリューションを構築しているのです。
それらのことは直線的には起こりません。何日も何かに取り組んで進展がなく、そして突然5日目に、すべてを前進させるような素晴らしい洞察が得られることがあります。問題は、2日目と3日目には何もしていないように感じることですが、実際にはそれらの日々も働いていたのです。4日目にようやく理解できただけなのです。
ソフトウェアエンジニアは、紙の山を処理するのではなく、ドアを蹴破るようなものです。蹴って、蹴って、蹴って、突然ドアが開き、数歩歩いて、また別のドアを破らなければならない。そして確かに、一歩下がって上空から見て、何ヶ月も何ヶ月もの進捗を分析すると、体系的にドアを蹴破っているのが分かります。
しかし、ある日を見ると、そのドアを何百回蹴っても何も変わらないかもしれません。より大きな絵を見て、その個々の日に解決策を見つけられなくても、依然として解決策に向かって働いていたことを理解できないなら、エンジニアとしての心理的ストレスに耐えられないでしょう。
独立して働く問題に戻りましょう。人間として、私たちは誰かがただ何をすべきか、明確なABCの道筋を与えてくれることを望みます。これらのボックスにチェックを入れれば大丈夫、と。私たちには、マネージャーが何かを望むなら教えてくれるだろう、という期待があります。それは教師のようなものです。
学校のプロジェクトには採点基準があり、それは各カテゴリーでの成功の基準を正確に示しています。考えてみてください。学校は文字通り、プロジェクトで何をすべきかを告げる採点基準を与えてくれます。
しかし実世界では、まったく何も告げられないことを期待する必要があります。すべてを自分で理解しなければなりません。これらの企業は、何も告げられなくても効果的なソリューションを生み出せる人々を雇いたいのです。
この二分法のもう1つの例は、「愚かな質問などない」という嘘です。これは学校でよく聞く言葉です。大学でさえ、人々は「どんな質問でもしてください、愚かな質問なんてありません、助けが必要な時はいつでも聞いてください」と言います。
例えば、ハリーポッターとホグワーツでも、ダンブルドアはいつも「ホグワーツでは、求める者には助けが与えられる」と言います。それは理にかなっています。なぜならホグワーツは学校だからです。会社ではありません。
会社で働く時、本当に愚かな質問は存在します。私は、愚かな質問をしすぎて、インターンシップの返オファーを得られなかった人を何人も知っています。人々はこれを理解していません。学校と仕事は完全に逆転しているのです。
実際、学校はあなたにこれを知られたくないのです。学校に不満があれば、ただ学校を解雇して、より良い環境の別の学校を選ぶことができます。一方、職場では彼らがあなたの給与を支払うので、あなたは自分を彼らに売り込む必要があります。
ここで言いたいのは、学校と職場では規則が異なることを認識してください。ソフトウェアエンジニアとして働く時、愚かな質問は存在し、彼らは全く助けを必要とせずに完全に独立して働ける人々を求めているのです。
もしあなたがソフトウェアエンジニアの職を獲得するプロセスに正面から取り組みたいのなら、私は将来のソフトウェアエンジニアのための学校を運営しています。ここであなたは、非常に困難なソフトウェアエンジニアの職獲得プロセスを乗り切るために、直接私と一緒に働くことができます。ソフトウェアエンジニアの仕事を100%確実に獲得したいなら、説明欄のトップリンクをチェックしてください。
視聴ありがとうございました。次の動画でお会いしましょう。


コメント