Boot.devを開始して以来、私は「流砂の質問」と呼ぶものを殺到してきました。表面的には、流砂の質問は良い質問のように見えます。もしあなたがそれに答えることができれば、あなたは今いる場所 (ウェンディーズ・ドライブインでの夜勤) から、行きたい場所 (友人に自分が働いていることを伝える) に飛び出すことになるでしょう。ちなみにNetflix)。
流砂の質問はすべて、近道を見つけることに関するものです。
3 か月以内に開発者の仕事が必要です。それを行うための最良の方法は何ですか?
バックエンドの学習パスに 20 のコースが用意されているようですが、*ウィンク* どのコースをスキップしてもよいでしょうか?
ここで、明確にしておきたいのですが、キャリア目標に向かってより短い道を歩みたいと思うのは、まったく悪いことではありません。それ以外のことは狂気となります。あなたを一晩で上級開発者に変える薬があるなら、私はあなたにその薬を飲むことをお勧めします。
理論的には、教育的最小最大化は確実な戦略のように見えますが、実際には機能しません。
なぜ?目的地が不明なため。
ダイクストラのアルゴリズムは、目的地がわかっている場合に最適です。そうでない場合は、別のものが必要です。
テクノロジーシーンは複雑さの塊です。私は大学で 10 種類ほどのプログラミング言語を学びましたが、学位を取得して 3 年が経過しても、最終的に Go を書くバックエンド エンジニアとして働くことになるとはまだ知りませんでした。
組み込みシステムからフロントエンド開発まで、あらゆる種類のくだらない内容についてインタビューしました。そうですね、私の Prolog クラスは最初の面接ではあまり役に立たなかったことがわかりましたが、どうですか?それは傷つきませんでした、そして今、誰かが「それは宣言型システムです」と言ったとき、私の表情は無知を裏切ることはありません。
最初の面接に合格するためにどの概念を習得する必要があるかを正確に知っていれば、効果的な近道を見つけることができるでしょう。問題は、すべての最初の面接に常に合格できる正確な知識のサブセットが存在しないことです。
どの企業も独自のジャンクな技術スタックを持っています
すべての PM には独自の「アジャイル」バージョンがあります
すべての採用担当者は、独自の 7 ステップの面接プロセスを持っています。
どの仕事にも、さまざまな難解な知識が必要です
コーディングを学び始めたとき、最初の仕事で毎日何をするかわかりません。 「仕事で DSA スキルをまったく活用したことがない」というようなことを言う人がいますが、詳しく調べてみると、その人は WordPress の「開発者」であることがわかりました。
あなたがすべき;それはあなたが見つけられると思う場所ではありません。プログラマーとしての仕事への最短距離は、学習し構築する必要のあるものの量を最小限に抑えることではありません。そのような考え方をすると、旅はさらに長くなり、より精神的に疲れることになります。このようなもの:
n
回繰り返します。n n
d4_roll * your_stubbornness
です。最短パス (または少なくともより短いパス) は通常、次のようになります。
主要なプログラミング/CS の概念を言語で学習する
実行したいプログラミングの種類 (フロントエンド、バックエンド、モバイルなど) を暫定的に決定します。
そのようなプログラミングの基礎を、それに適したテクノロジーで学びます。
仕事を探している間、学習と構築を決してやめないでください
誤解しないでください、この 2 番目の道はまだ短くありません。プログラミングは簡単ではありません。そうだと言われたら申し訳ありませんが、努力する意欲があれば、チュートリアル地獄の 9 周目を目的もなく散策する必要はありません。
人々は最短の学習経路を見つけようと何年も費やし、あるいは「もう二度と使わない」ことの学習を避けようとしますが、不必要な作業を避けるために全く何も学ばずに何ヶ月も何年も無駄にしても平気です。最終的に就く仕事に直接当てはまらないことを学ぶのに数日を費やす危険はありますか?
100000000%正直になりましょう。古き良き、一攫千金の計画を探している人もいます。ループに数週間苦労した後、彼らは諦めて、Fiverr でAI を活用した暗号通貨取引ボットを購入するでしょう。あの人たちのようにならないでください。
ソフトウェア エンジニアになることは、「一攫千金」を目的としたものではありません。それは「上位中流階級を獲得し、ゆっくりと成長する」スキームです
「作る」コツは?実際に良くならなければなりません。
したがって、次に発生するエラーを「修正」するために StackOverflow から無計画にコピー/ペーストするのではなく、それが何を意味するのかを理解するために余分に時間をかけてください。私がレビューした PR のうち、何かを「修正」したものの、開発者が根本的な問題をまったく理解していないため、単なるパッチのパッチにすぎないものを何件見たかわかりません。
たとえば、元 Java 開発者 (常に Java 開発者です) は、この関数 (Go の) がパニックになる場合があることに気付きました。
// sendEmail sends emails, but sometimes panics func sendEmail(e *email) error { // ... }
彼らは直接 Google に問い合わせると、Go でのパニックはrecover
で「解決」できることがわかりました。そこで、彼らはプル リクエストを開きます。
func sendEmail(e *email) error { defer func() { if r := recover(); r != nil { log.Println("recovered from panic in sendEmail") } }() // ... }
これはちょっとうまくいきますか?ただし、より優れた開発者は、コード内の根本的な問題を理解して修正しようとします。 nil
チェックを追加するか、この関数でのポインタの使用を完全に中止することになります...
// now sendEmail never panics func sendEmail(e email) error { // ... }
最後まで到達するのではなく、より良くなるというバイアスを持ちたいのです。 「終わり」はありません。学ぶべきことが多すぎるため、ソフトウェア エンジニアリング全体の範囲は、最後のプログラムのグローバル名前空間の範囲よりも大きくなります。
健康を維持すること、依存症を断つこと、ビジネスを構築すること、そしてもちろん、最初の開発の仕事に就くことはすべて難しいことです。近道を探すのに時間を無駄にして、自分自身をさらに難しくしないでください。
常緑の基礎知識を学び、興味のあるプロジェクトを構築すれば、わずか 1 ~ 2 年の継続的な努力でどこまで達成できるかに驚くでしょう。
ここでも公開されています。