見出し画像

プログラミングスクール通うくらいならチートスキル身につけたほうが百億倍楽やぞ

皆さん異世界転生ラノベをご存知ですか?チートし放題な主人公たち好き勝手しやがってとか思っています?最近は「初級魔法で無双する」「生活魔法で無双する」みたいな話流行ってますよね。

でも、別に異世界なんていかなくても、転生しなくても、プログラミングのチートスキルなんて簡単に身につけられるんですよ。

※ここでいうチートスキルは本来の意味のチートではないのでご注意ください。そっちのスキル身につけるのは楽しいかもしれませんが、本筋ではありません。

※ここでいう「初級魔法」はラノベ読まない人の想像する初級魔法ではないことがほとんどなのでご注意を

特定のプログラミングスキルを身につけると、派生スキルが勝手にポコポコ生えてきたり、派生スキルの習得コストが圧倒的に安くなります。

たとえば、なにか一つのプログラミング言語をマスターした人なら、他のプログラミング言語を覚えるときのコストが低くなるというのは直感的にわかりやすいのではないでしょうか?

※補足: 別に必ずしも基礎 -> 応用みたいな順序に固定される必要はありません。基礎 -> 応用 -> 基礎 -> 応用みたいなサイクルでもいいです。基礎をやるのも、いつやり始めてもいいのですよ??

コンピュータサイエンスとコンピュータ科学

コンピュータサイエンス(計算機科学)やコンピュータ工学(計算機工学)というものがあります。

これは一番手っ取り早く有名なチートスキルです。極めましょ?

・数論
・組合せ数学
・グラフ理論
・数理論理学
・情報理論
・理論計算機科学
 ・計算理論
 ・チューリングマシン
 ・ラムダ計算
 ・アルゴリズム解析
・データ構造
・形式言語
・プログラム意味論
 ・領域理論
・計算科学

これは、Wikipediaの計算機科学のページで「基礎」と書いてあるものです。これらをやるのです。

情報処理系の試験を受けた人はもしかしたらこれらのほんの一部を「覚えゲー」した人がいるかもしれません。中の理屈を学ばない覚えゲーに意味はありません。

これらはすべて応用可能な、基礎です。マスターすればチートできる基礎です。

「初級魔法を極めたらチート魔法使いになった」みたいなラノベ流行ってるじゃないですか?同じですよ。

CS極めておけば、プログラミングなんてどれも大半はただの派生スキルです。そりゃそうじゃないですか?計算機理論の基礎なんですから。すべてのプログラミングは、ここを出発点にしてるはずなんで。

ゲーマーの人に向けていうなら「経験値倍増」スキルです。「スキル習得コスト低減」スキルです。ゲーマーなら取れる最初のタイミングで絶対取るっしょ?

ニートのすすめ

何らかの手段で、ガチのCSやり込んでください。今なら無料の教材も、無料授業も山程あるはずです。クソみたいなプログラミングスクールに金を使うくらいなら、まっとうな教材や授業を受けてください。

ニートできる実家や財力あるなら、ニートしながらCSやり込むのが望ましいです(厳密にいうとニートの定義からは外れる)。

で、気が狂うくらいやり尽くすのです。手元にあるプログラミングの本・教材を、「この本はクソだ」って思ったもの以外はすべて最低5回以上読み返してください。1回で読んで全部を理解できるなんて思わないでください。よほどの例外的な天才以外は絶対に無理です。

本を読んでるだけの人は必ず最低でも写経はしてください。写経は体に覚え込ませる効果があります。写経したコードは必ず改造しまくってください。改造して分解していじったらどうなるかを観測してください。写経だけだとさほど成長はできませんが、実験の数だけ成長できます。

読む、打ち込む、改造するのサイクルを手早く回してください。

なにか一つのプログラミング言語を極める

なにか一つのプログラミング言語を、自分で「俺これ極めたわ」って自信を持てるくらいまでやり抜いてください。C, Rust, Go, TypeScript, Ruby, Python, PHP でもなんでもいいでしょう。

・ 文法を全部知ってること。仕様書があれば仕様書を全部読んで理解してること
・ 〇〇をする関数を書いてと言われたら、ぱっと書けること
・ 公式ドキュメントは隅から隅まで全部読んでること(知らない便利ライブラリがあったら、それは極まってないです

可能であれば、その処理系のソースコード、たとえば Ruby なら MRI(Matz の書いた Ruby)を読んでください。最悪、仕様やバグをコンパイラ・インタプリタのソースから発見できるレベルになっていること。(ただし、これは大抵の場合は、C/C++ などを読める必要があるので、できれば望ましいが必須というのは大変かもしれません)

自分の知ってる全部の言語に対してこのレベルで理解を深める必要はないので、なにか一つの言語に絞り込みましょう。他の言語の習得コストが圧倒的に下がります。

あとは、プログラミングパラダイムの異なる言語をやっておくと知識や思考の幅が広がります。例えば、C と Ruby。あるいはTypeScript と Haskell。Go と Scala のように。

このときは、極める必要はありません。単に別のパラダイムを知るという経験をすれば大丈夫です。

RFCの一つでも読んでおこう

RFCを最低でもなにか一つ読んでおきましょう。あの文化や考え方、そういったものを体に通しておきましょう。

勿論、時間があれば、お試しでもいいので、RFCを実装してみてください。車輪の再発明がどうこう言う人はただのノイズなので無視してください。

実践的なものにいこう

チートスキルは残念ながら物語とは違って、たいてい単体では金になりません。

そこで実践的なスキルが必要です。勿論チートスキルを極めたあなたなら、実践のためのコストも低減されまくってるはずです。

なにか一つアプリ・サービスなどを作り上げましょう。

アプリを作れば作るだけパワーアップです。

今の時代、金になる技術かつ手っ取り早いのはウェブプログラミングでしょう。Hasura と TypeScript と React / Next.js でもやれば、バックエンドのサーバ&フロントエンド込み最速で、アプリやサービスを作れるはずです。

C# + .Net という手もありかもしれませんね。知らんけど。

モバイルに興味の強いひとなら、Swift とかでもいいかもしれません。

まとめ

投資効果の高いスキルはあって、そのスキルを身につけると確実に他のプログラミングスキル習得コストが減るか、自動で派生スキルが生えてきます。

そういう投資効果の高いスキルに投資しましょう。

ゲーマー的思考でいいのです。「経験値倍増」「スキル習得コスト低減」スキルとかあったら、無理してでも取るじゃないですか?????それと全く同じです。

わざわざ異世界に転生しなくても、チートスキルを身に着けた方が楽です。

この記事が気に入ったらサポートをしてみませんか?