見出し画像

プログラミングの勉強法

今回は未経験からProgrammingを独学で効率よく学ぶための学習法を紹介します。具体的に説明するので、誰でも実践できます。ちなみに、私は特に良い学歴がないので、学歴が良い人にしかできないわけではありません。世界には「Programmingを学んだら将来性がある」「Programmingを学んだら稼げる」といった抽象的な話を聞いたことがあるかもしれませんが、ただProgrammingをがむしゃらに学んでも、稼げるエンジニアにはなれません。稼げない学び方をしていても、一生稼げるようにはならず、その先に待っているのは残業だらけで疲弊する未来です。稼げないエンジニアは「作ることが好きだから稼げなくてもいい」と言うかもしれませんが、Programmingはあくまで稼ぐための手段であり、学ぶこと自体が目的になってしまうのはもったいないと思います。

そこで、稼げるようになるための学び方があります。今回は、稼げるエンジニアになるための具体的な方法をズバリ紹介します。知っているか知らないかだけなので、知っておくと絶対に良いですよね。この学習法を知ることで、一番効果が出るのはProgrammingをまだ何も学んでいない未経験の人です。最初からこのStepを実践することで、より早く稼げるエンジニアになれるでしょう。もちろん、現役の人でも効果はありますが、未経験の人の方が余計な知識がないので、頭に入りやすいです。私自身も多くの失敗を経験し、最終的には独学のみでエンジニアとして働くことを達成しています。周りのフリーランスの人たちも、100万を超えている人がいますが、順番は違えど同じようなことをしています。共通点は、営業力が全くないことと、学習開始から3年以内であることです。

もしこの記事を見ているあなたが、稼げるエンジニアになりたい、Programmingを学びたい、せっかく大事な時間を使って勉強するのだから効率よく学びたい、周りと圧倒的な差をつけたいと思っているのであれば、かなり重要な話をしますので、最後まで見てください。

実際に学歴が高いエンジニアは非常に多いですが、学歴や職歴、スキルがまったくない人でもProgrammingはできます。そういったことを知ってほしくて発信を始めました。このチャンネルではProgrammingの学び方や稼ぎ方などを発信しています。Programmingやエンジニアに興味がある方はフォローしてください。

結論から言いますが、今回は3つのStepに分けて話します。Step1は「基礎作り」、Step2は「希少性の高いスキルを身につけよう」、Step3は「Programming以外のスキルを身につけよう」です。ちなみに、私の知る限り、最も稼ぎやすい領域はweb系もしくはApplication系ですので、そこについてのみお話しします。

「基礎作り」

では、具体的にStep1から始めましょう。基礎というのは、web系でいくとHTML、CSS、JavaScript、Database、そしてPHP、Ruby、Pythonのどれか、そしてフレームワークとしてはRuby on Rails、Djangoなどが含まれます。これらのスキルはすべて土台となる基礎です。これらのコンテンツは多くのProgrammingスクールにもありますし、本気で勉強すれば誰でも身につけることができます。最も良いのは、webサイトやwebサービス、スマホApplicationを自分で作ってみることです。自分で何かを作ると、自然にDatabaseやDesignなどの設計も学ぶことになります。この設計ができるようになるのが非常に重要です。アイデアを考えてぜひ挑戦してみてください。どうしても思い浮かばないという方は、ChatGPTに質問してください。

以上がStep1です。ここまではおおよそのProgrammingスクールでやっている内容のボリュームです。

「希少性の高いスキルを身につける」

次にStep2、希少性の高いスキルを身につけようです。希少性の高いスキルは、Programmingスクールなどでは教えていないことが多いです。希少性が高いスキルは、単価も高くなります。単価とはエンジニア1人に対する1ヶ月分の報酬のことです。この言葉を覚えておいてください。エンジニアの単価は幅が非常に大きく、30万のスキルもあれば、50万、100万のスキルもあります。Programmingスクールで教えられるスキルというのは、大体30万円から50万円くらいの単価のスキルだと思ってください。では、どんなスキルが希少性が高いかというと、時代によって変わりますが、最近ではDynamoDBやKubernetesなどが単価の高いスキルとして挙げられます。

ただし、未経験の方が「希少性の高いスキルを勉強したら良いのか」と思うかもしれませんが、それはちょっと待ってください。希少性の高いスキルを身につけるのは、まず基礎的なスキルを習得してからで大丈夫です。具体的に私の経験を説明しますと、エンジニアを志した当初にSwiftというProgramming言語を身につけました。SwiftはiPhoneのApplicationを作るための言語で、多くの日本製ApplicationがApp Storeにありました。しかし、Swiftを使った仕事はそれほど多くありませんでした。これならすぐに仕事が取れると思っていましたが、採用はほとんどされませんでした。基礎的なスキルがまったくなかったため、戦力として認められなかったのです。そこで方向転換し、HTML、CSS、JavaScriptなどの基礎的なスキルを身につけることにしました。これらの基礎スキルを身につけることで、すぐに採用されるようになりました。これは私の失敗談ですが、同じような失敗を避けるためにも、基礎スキルを先に身につけることをおすすめします。

ここまでをまとめると、Step1は「基礎スキルを身につける」、Step2は「希少性の高いスキルを身につける」、次にStep3は「Programming以外のスキルを身につける」です。

「Programming以外のスキルを身につける」

Programming以外のスキルを身に付けることで、さらに市場価値が上がります。特にDesign、マネジメント、設計、コミュニケーションなどのスキルが有効です。ただし、Designや設計以外のスキルは、個人で身につけるのが少し難しいため、組織の中で磨く必要があります。私の場合はDesignに特化しました。Designができると、WebサイトやスマホApplicationの基礎Designを自分で作ることができます。完璧なDesignではなくても、簡単なDesignができるだけで役立ちます。DesignツールのおすすめはFigmaです。無料で使えるので、ぜひ試してみてください。

Figma

https://www.figma.com/

非常にわかりやすい動画教材があるので、みなさんの学習の参考として以下の動画をご紹介させていただきます。

Figmaの使い方

https://youtu.be/xZMR-ZNY08c?si=OJG8pg2rjLJMMA41

Designの考え方

https://youtu.be/zsjXix-SAZs?si=bjGNpmwR28Ezv3HC

以上の3つのStepを踏んだ後に、プラスアルファのノウハウを2つ紹介します。1つは「希少性の高いスキルを複数習得すること」です。例えば、私の場合は、複数のスキルを足し算することで、より多くの仕事を得ることができました。2つ目は「営業力は後回しでOK」とすることです。とにかくスキルを磨くことが大事です。まずスキルを磨くことが重要で、営業力は後回しにしても大丈夫です。最後に復習しましょう。

「基礎作り」

幅広いスキルを身につけてジェネラリストになる。

「希少性の高いスキルを身につける」

レベルの高いスキルを習得してスペシャリストになる。

「Programming以外のスキルを身につける」

Designやマネジメントなど、他のスキルを身につける。

さらに、プラスアルファとして、希少性の高いスキルを複数習得し、営業力は後回しにしてスキルを磨くことが大切です。正直、これらの内容のどれか一つをとっても簡単なことではありませんが、エンジニアを目指すには普通の人の数倍の努力が必要です。私自身も多くの苦労を経験しましたが、明確なスキルがあれば結果も出やすいので、ぜひ挑戦してみてください。

挫折しないProgramming学習法

ここからは挫折しないProgramming学習法を紹介します。Programming学習において、重要なことをお伝えします。多くの人がProgrammingに挑戦しても、挫折してしまうことがよくあります。特に、覚えることが多すぎてGoleが見えないと感じることが多いでしょう。実際、Programming学習の挫折率は9割とも言われています。Programmingを学ぶ際、時間と労力が無駄になってしまう前に、正しい学習法を身につけることが重要です。

Programming学習には、挫折しないための効果的な学習法があります。この記事で紹介する方法を実践すれば、Programmingの習得速度が格段に上がり、挫折することも少なくなるでしょう。

暗記学習を捨てる

Programmingにおいて、すべてを暗記するのは現実的ではありません。変数、条件分岐、関数など、多くの要素がありますが、すべてを暗記するのは難しいです。暗記に頼ると、学んだ内容を忘れてしまうことが多いです。Programming学習では、暗記よりも実際にコードを書くことが重要です。アウトプットを中心に学ぶことで、学習が効果的に進みます。具体的には、学んだ知識を実際に使ってみることで理解が深まります。インプットよりもアウトプットの割合を増やしましょう。

必要な分だけ学ぶ

学習にはGoleがあります。必要なスキルを身につけるためには、Goleから逆算して学習を進めることが重要です。例えば、特定のApplicationを作りたい場合、そのApplicationに必要なスキルだけを学ぶようにします。書籍や教材の全てを学ぶのではなく、目的に必要な部分に絞って学習します。

Goleから逆算する

Programming学習のGoleを設定し、そのGoleに到達するために必要なスキルを見極めることが大切です。例えば、転職を目指す場合、必要なスキルやPortfolioを明確にし、それに向けた学習を進めます。

これらの方法を実践することで、Programming学習が効果的に進み、挫折することが少なくなるでしょう。学習方法を見直し、効率よくスキルを身につけて、Programmingの成功を目指しましょう。

では次に、Programming学習の誤解と正しいアプローチについて解説します。多くの人が成長を感じられずに挫折してしまう理由と、その解決策についてお話しします。

一般的な学習法の限界

「基礎を覚えてひたすらコードを書く」「文法を暗記する」「Portfolioを作成する」といった一般的な学習法が、実はあまり効果的ではないことを知っていますか?

Goleから逆算する学習法

Programmingを習得するためには、「Goleから逆算する」学習法が重要です。実際にフリーランスのエンジニアとして成功するために、この方法を取り入れて成果を上げた経験をシェアします。

Goleから逆算する方法

Programming学習での成功の鍵は、具体的なGole設定にあります。例えば、「エンジニア転職のための評価されるPortfolioを作る」といった目標を設定し、それに向けた学習を進めることが大切です。

具体的なアクションプラン

Gole設定: 達成したいGoleを明確に決める

タスクの細分化: Gole達成に必要なタスクを細かく分ける

細かいタスクから始める: 手をつけやすい小さなタスクから実行する

この方法を実践することで、効率的にProgrammingを学び、挫折することも少なくなるでしょう。基礎から始めるよりも10倍効率が上がるので、ぜひ試してみてください。

Programmingを始めてから、YouTubeの動画や本、Progateなどで学習しているけれど、なかなか習得できた実感がない、難しいと感じることがあるかもしれません。特に理系でない限り、このような壁にぶつかることはよくあります。この悩みから抜け出せずに学習が続けられないこともありますが、安心してください。Programmingには「核となる部分」があり、それを理解し実践することでスキルを爆発的に向上させることができます。

最強の学習法

「日常を関数に置き換える」ことが、Programming力を爆発的に上げる最強の方法です。関数とは、プログラム内で特定の機能を持つ部品のことです。関数をマスターすれば、ほとんどのProgramming文法を扱えるようになります。関数はプログラムの核となり、変数や条件分岐、繰り返し処理など、すべての要素とつながっています。

具体的な方法

日常生活の事象を関数に置き換える練習をすることで、Programmingの理解が深まります。例えば、電車の切符の動きや消費税の計算を関数として考えてみましょう。以下の6つのポイントに留意して実践してみてください。

大量の関数を作成する: 引数や戻り値がなくても良いので、たくさんの関数を作りましょう。

処理が1行のコードでも良い: 短い処理でも問題ありません。

関数名は「動詞+名詞」にする: 例:「Get drink」など。

作成する関数に正解はない: 自分なりの関数を作りましょう。

Programming言語は一つに絞る: まずは一つの言語に集中することが大切です。

頭を使い続ける: 常に考えながら関数を作りましょう。

これらを意識して実践することで、Programming力は確実に成長します。関数を使いこなすことで、Programmingの理解が急激に深まります。

例えば、洗濯機の「スタート」ボタンを押したときに回転する動作をJavaScriptでシンプルに表現するためのコード例です。ここでは、HTMLとJavaScriptを使って、ボタンをクリックすることで洗濯機が回転するアニメーションを作成します。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>洗濯機のアニメーション</title>
    <style>
        .washing-machine {
            width: 100px;
            height: 100px;
            background-color: #ddd;
            border-radius: 50%;
            position: relative;
            margin: 50px auto;
            border: 5px solid #333;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .drum {
            width: 60px;
            height: 60px;
            background-color: #bbb;
            border-radius: 50%;
            position: absolute;
        }
        .rotating {
            animation: rotate 2s linear infinite;
        }
        @keyframes rotate {
            from {
                transform: rotate(0deg);
            }
            to {
                transform: rotate(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="washing-machine">
        <div class="drum"></div>
    </div>
    <button id="startButton">スタート</button>

    <script src="script.js"></script>
</body>
</html>

JavaScript (script.js)

document.getElementById('startButton').addEventListener('click', function() {
    const drum = document.querySelector('.drum');
    if (drum.classList.contains('rotating')) {
        drum.classList.remove('rotating');
    } else {
        drum.classList.add('rotating');
    }
});

上記のコードの意味について説明します。

HTML: `washing-machine` クラスの `div` 要素は洗濯機の外枠を模しており、その中に `drum` クラスの `div` 要素が回転するドラム部分を表現しています。`スタート` ボタンを用意しています。

CSS: `drum` クラスに回転アニメーションを適用するための `rotating` クラスを定義しています。`@keyframes rotate` で回転アニメーションを作成しています。

JavaScript: `スタート` ボタンがクリックされると、`drum` 要素に `rotating` クラスを追加または削除して回転を開始または停止します。

このコードをブラウザで開くと、ボタンを押すと洗濯機のドラムが回転し、もう一度押すと回転が止まります。

Progate攻略

次はProgateの攻略方法について書きます。Programming学習を始めるほとんどの人が一番最初に使う学習サービスです。実際、僕もProgramming学習を決意して、YouTubeを見たりするとまず100%Progateをやれと言われます。でも、実際にやろうとすると、コースが多すぎて何のコースをやったらいいかわからないし、どう進めていけばいいかわからないこともあります。これが本来、Programmingを楽しく学べるはずのサービスの難点なんですね。結果、挫折してしまうこともあります。

効率的に学習しないと、時間だけが過ぎていくことになります。Progateをすでに使っているけど、レベルばかり上げすぎてGoleが見えない、何周もしているけど成長している実感が湧かないといった悩みが多く届きます。でも、そういった悩みを今回の記事ですべて解決してみせます!僕自身、昔Progateを始めた時は効率的な学習方法が全くわからず、無駄なことを繰り返していました。だから、みんながProgateを迷わずできるように、今回の記事ではProgateを完全に攻略するための情報をまとめました。この記事だけで、学習効率が10倍は上がるはずです。ちなみに、僕に相談してくれた人には必ず今日の話をしますが、100%全員が迷わず進められるようになっています。なので、時間を無駄にしたくない、効率的にProgramming学習を始めたい、Programmingを身に付けて人生も変えたいと考えているなら、本当に大事な話をしますので、ぜひ最後まで見ていってください。

コードが書けるようになるには、これは当たり前に聞こえるかもしれませんが、学習と聞くと多くの人が本を読んだり動画を見たりするイメージを持ちます。しかし、Programmingはそれだけでは不十分です。Programmingは実践的なスキルであり、ただ本を読むだけでは全く身に付きません。実際にコードを書く体験こそが最も効果的であり、その体験を通じて成長できます。とにかく書いて、書いて、書きまくって、現在の魔法のスキルであるProgrammingをあなたの武器にしていきましょう。

環境構築が不要

環境構築とは、Programmingを始めるために必要な準備作業のことです。例えば、必要なソフトウェアをインストールしたり、設定を行ったりします。しかし、これが面倒で挫折することもあります。Progateでは、初学者が挫折しないように、環境構築が一切不要です。ネットとパソコンさえあれば、すぐにProgrammingを始められるので、最初に環境構築でつまずかずに済みます。

分かりやすさ

Progateは非常に分かりやすく作られており、難しいことが一切書かれていません。しっかりと文字を読むことさえできれば、挫折することはほぼありません。それでいて、初心者に必要な知識はほとんど網羅されています。Programming学習において大事なのは、挫折せずに一歩一歩成長することです。Progateはそのための最適なツールです。

以上がProgateで学習する究極のメリットです。次に、知るだけで学習効率が劇的に上がるポイント5選に進みましょう。

暗記するな

Programming学習において、暗記することは効率的ではありません。暗記ではなく、理解を深めることを目指しましょう。記憶のタンスに引き出しを増やすようなイメージで、必要な知識を引き出しやすくすることが重要です。

好き嫌いを判断するツールとして使うべし

Programmingが自分に合っているかどうかは、実際にやってみないとわかりません。Progateは、環境構築の煩わしさがないため、Programmingが向いているかどうかを判断するためのツールとして最適です。もし面白いと思えば、そのまま学習を続け、そうでなければ別の道を考えましょう。

分からなくても進む

分からないことがあっても、先に進むことが大切です。理解できないところを深掘りしすぎると、全体の進行が遅くなります。70%程度理解できたら、次に進むようにしましょう。

3周以上するな

同じコースを何周もすることは効率的ではありません。1から2周で十分です。Goleを見据えて学習し、必要以上に同じ内容を繰り返さないようにしましょう。

ケチるな

Progateには無料のコースと有料のコースがあります。月1000円程度で、1年も続けるわけではありません。安価な費用で多くの情報を得ることができるので、ケチらずに有料コースを利用することをお勧めします。

以上が知るだけで学習効率が劇的に上がるポイント5選でした。ここまでProgateのメリットや効率的な学習方法についてお話ししましたが、次に目的別Progate学習法についてお話ししていきます。

Progate

https://prog-8.com/

成果の出るProgramming学習法の紹介

次にここからは成果の出るProgramming学習法を紹介します。これが事実です。ここで話す内容は正直裏技のようなものになるので、悪用厳禁です。

みんなスキルを身につけたい、エンジニアとして転職したい、Programmingを学んで稼ぎたいと思っているでしょう。興奮してネットを調べてみると、ほぼ間違いなくPortfolioを作成するという結果にたどり着きませんでしたか?

Portfolioというのは、自分で何かしらApplicationやサービスを作ること、つまり学習の集大成のことですね。でもみんなこれを見て、こう思いませんか?ハードルが高いと。当然ですよね。まだ言語も何も学んでいない人にとって、自分の手で何かを作るというハードルはあまりにも高すぎます。企画を考えて設計して、画面と機能を作るという工程は初心者には大変すぎます。これを愚直にしてしまうと、最短でも3ヶ月はかかってしまいます。

確かにProgrammingのクリエイティブな仕事にはPortfolioは必須です。Portfolioがないと、あなたがどんなものを作れるかという証明ができません。でも初心者が全くのゼロからアイデアを考えて、本当に何かを作り出せますか?現役で働いているエンジニアたちが全員そんな手間のかかることをしていると思いますか?答えはNOです。実は0からPortfolioを生み出す必要は全くありません。コードをフリーで作成に長い時間をかける必要もありません。

今回紹介する学習法を実践してもらうと、最短だと1週間、長くても1ヶ月でPortfolioを完成させることができます。何を作ろうか悩むということもなくなるし、転職や独立したい人にとっては成功する確率を爆発的に上げることにつながります。Programmingを学んでみたいという人なら、自分で一通り商品やサービスを作れるようになります。

模倣学習法

というわけで、早速結論から言うと、100%成果の出るProgramming学習法は「模倣学習法」です。もっと簡単に言うなら、すでにある成果物を作り変える学習法になります。え、どういうこと? すでにある成果物って何? 作り変えるってどういう意味?と思っているかもしれませんが、みんな知らないだけで、実際とても簡単な方法です。

まず「すでにある成果物」というのは、学習サイトや学習サービス、YouTubeなどに上がっている成果物のことです。例えばこれを見てください。この学習サイトでは画像のようにSNS風のサービスを作成し、用意していますね。この成果物を作り替えて自分のオリジナルにしようというのが、今回僕が言いたいことです。具体的な方法は後で説明します。

いやでも真似するのはちょっと…と思うかもしれませんが、真似することは悪いことではありません。むしろ真似することが、最短で成果を出す最大の秘訣だったりします。完全なゼロからアイデアを考えられる人なんて、そう多くはありませんよね。僕も何かサービスを作る時は必ず別のサービスを参考にします。

模倣学習法のメリット

iPhoneのDesignだって、昔は独自性があって唯一無二だったけど、今はAndroidのDesignもほとんど同じようなものになっていますよね。少し前に流行っていた荒野行動というゲームも、PUBGというゲームの真似でした。真似することで、ある程度洗練されたものを取り込めるんです。実際の商品ですらこれだけ真似しているのに、Portfolioはオリジナルでないといけないなんて、そんなわけないと思いませんか?

そしてこの模倣学習法の最大のメリットは、学習しながらなんとPortfolioも作れるということです。普通だとProgrammingを学んでから、自分でPortfolioをゼロから考えて作らないといけませんが、模倣学習法を使うと、学びながらPortfolioも作れます。やることはシンプルで、真似たものを少し作り変えてあげるだけ。挫折することは絶対にありません。どうでしょうか、これなら簡単だと思いませんか?

というわけで、これから具体的な手順を解説していきます。手順は3Stepで大丈夫です。

模倣学習法の具体的な手順

1.模倣対象選定
2.実践
3.UI修正 + 開発背景の明確化

それぞれ深掘りして説明していきます。

1.模倣対象選定

今回の方法は模倣、つまり真似することから始まるので、まずはその対象を探さないといけないですね。何かの成果物を最終的に作る学習サイトや学習サービスを使って、真似できるようなコースを探してみましょう。

どんなコースを選べばいいですか?そう思っている人は、今あなたが学んでいる言語を、もしくは学びたい言語やフレームワークを基点に考えてもらって大丈夫です。例えば、あなたがPHPをメインで学んでいるとします。ネットで検索するとコースが出てきましたね。どうやらPHPとLaravel、Vueという3つの技術を使って、最終的には簡易SNSApplicationを作るというコースのようです。

他にもこんなコースもありました。PythonとDjangoを使って、ECサイトを作るコースのようです。この2つのコースでは、最終的に簡易SNSApplicationやECサイトを作りますが、みんなが模倣対象となるコースを探すときも、必ず同じように何かしらの成果物を最終的に作るコースを選ぶようにしてください。

どこでコースを選べばいいですか?と思う人は、この2つのサイトから探してみてください。これらを使うことで、いくらでも真似できるものが見つかります。今回の例はこれに決めてみましょう。じゃあコースが決まったら次です。

2.実践

コースを決めたら、早速やり切りましょう。と言っても、やり方はそれぞれのコースで解説してくれているはずなので、あとはひたすらやるだけです。コースをやり切った後は、次のStepに行きます。

3.UI修正 + 開発背景の明確化

UI修正というのは、具体的に言うとフロントエンドを変えるということです。UIとはフロントエンド、つまり見た目のことです。2の実践で作った成果物のDesignを変えていくのが、この3つ目のStepになります。

さすがにDesignまでパクるわけにはいかないと思うので、自分なりに改良してみましょう。あとはこのPortfolioがどのように役立つかという背景も明確にしておきましょう。学んで作ったことがどのように役立つのか、こうしたらどうなるのかという開発背景も明確にすることで、より深い理解に繋がります。最終的には、この成果物を元に自分のオリジナルとしても使えるようにしておきましょう。もし自分がこれをどのように活用するのかという背景が明確になれば、より良いものが作れるはずです。

参考になるPortfolio

では最後に、未経験からエンジニアに転職された3人のPortfolioをご紹介します。参考事例を検索し、その完成度の高さに驚きました。ぜひご覧ください。

Webエンジニアの参考例

出典:)Makoto Hirao
https://hiraomakoto.jp/

出典:)「HODA Engineering Laboratory」Hodalab
https://hodalab.com/portfolio/#

出典:)「chibiharu Information Technology WebSite」chibiharu’lab
https://chibinfra-techlab.com/

このようにインフラエンジニアなど、フロントエンドの経験が浅くてもPortfolioを作ることの重要性がわかると思います。

まとめ

今回の記事ではエンジニアのPortfolioの必要性から作成方法まで解説していきました。エンジニアは自分の技術を磨く、相手に技術を見せる両面で自己理解が非常に大切です。そのためにもPortfolioを作成し、今後の成長、キャリアパスの再考、転職に活かしてください。

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