【挫折しないプログラミング独学の方法】体験談をもとに紹介します

プログラミング独学 プログラミング

はい、どうもこんにちは、ANOくんです。

プログラミングって独学ではどう勉強すればいいんだろう?
挫折せずに学習を継続させる方法を知りたいな、、、
効率の良いプログラミングの学習方法を知りたい!!!

プログラミング学習を始めたばかりの頃って
きっとこういう悩みを抱える方が多いでしょうし
僕自身もそうでした。

様々悩みを抱えつつではあったのですがなんとか学習を継続でき
無事Web系エンジニアとして転職することができました。

そこで今回は、これからプログラミング学習をしようと思っている方や
現在プログラミング独学中で迷いのある方に向けて
プログラミングの独学方法をお伝えしていこうと思います。

プログラミング学習で強く意識すること3選

プログラミング学習で注意すること

まず初めにプログラミング学習をするにあたっての
「心がまえ」からお伝えしていこうと思います。

SNSを見ていると、プログラミング学習の1日の学習結果報告をしている方が
多数存在していますが、
「この学習方法だと続かないよな〜」と思えるものが散見されます。
そこでプログラミング学習を継続させるために重要な心がまえを
まずはお伝えしようと思います。

暗記しようとしないこと

まずはここですね。
プログラミング学習においては暗記をしようとしないことが
非常に重要になります。

学校教育の影響を根強く受けている僕たちは
何かを学習しようとする際に
無意識に「覚えよう、覚えよう」としてしまうことがあると思います。

ですがことプログラミング学習においてはこの考え方って
結構間違っています。
なぜならば、暗記ばかりしていても実際の現場ではほとんど役に立たないからです。

とにかく初期は「慣れること」の方がよっぽど大事です。
条件分岐はこんな感じで動くんだ、とか
スペルを1文字でも間違えたらエラーが出るんだ、などと
肌感覚で良いので、プログラムを動かすとはどういうことなのかを
感覚で掴めることの方がよっぽど重要です。

暗記するのではなく、プログラミングってどんなものなのかを
大まかに掴む。
まずこの点がプログラミング独学を進めていく上で
大事になる心がまえです。

完璧を目指さないこと

次にこの点です。
プログラミング独学において完璧を目指そうとすることも
学習効率の低下に大きく影響を及ぼしてしまいます。

いざプログラミング学習を開始しようとして
「やるからにはきちんとやるぞ!」と
PHPもJavaもJSもHTMLもCSSもついでにGoもScalaも全て学ぼうとしていたら
いつまで経ってもプログラミングスキルは上達しません。

これスポーツに例えるとわかりやすくて
クラスに1人くらいは一つの競技に専門性持ってるかつ
運動神経が高いクラスメイトっていませんでしたか?
その人って専門は野球だけど、サッカーやらせても、バレーをやらせても、
テニスをやらせても、大体卒なくこなせる、みたいな人です。

プログラミングもこれと同様のパターンがよくあってで
PHPで3年開発経験を積んだ人が新しくJavaでのアプリ開発に携わることになった時って、初学者と比べて圧倒的に速いスピードで技術にキャッチアップすることができます。

いろんな言語に手を出すのって、結局は
野球もサッカーもバレーも全てに力を入れるのと同じで
非効率この上ない学習方法です。
最初は欲張りすぎず、まずは1つの言語の習得に専念しましょう。

質が低くても成果物を作ること

最後にこの部分です。
プログラミング学習のゴールは常に
成果物の作成であると認識すべきです。
理由は簡単で、成果物を作らないと自分が
どこを理解できていないかが掴めないからです。

成果物を作るのって、学校でいうテストに似ていて
100点満点のテストの結果が80点だったら20点分
自分に理解できていない箇所があることが分かりますよね?

プログラミング学習もそれと同じで
どれだけインプットを増やしても、自分がどれだけ
アウトプットできるのかが分からなければ
次にどこの学習に力を入れるのかの検討をつけることができません。

成果物を作るのって確かに心理的なハードルがあると思います。
できない自分を直視しないといけないし、Web上にある
他の成果物と比べると自分の成果物のクォリティの低さが如実に分かるし
嫌な思いをしてしまうことでしょう。

ですが、自分の改善点が見つからないと、そこから先に進むことは不可能ですし
エンジニア転職をしたいのであればここは避けては通れない道です。

やってて気持ちの良いインプットだけに時間を割くのではなく
少し嫌な思いをしながらでもアウトプットを出し
一歩ずつでも自分の実力を上げていく心持ちが重要です。

独学でプログラミング学習を進める方法

独学でプログラミング学習を行う

ではここからは実際に独学でプログラミング学習を進めていく
方法についてお伝えしていこうと思います。
実際に僕が未経験からエンジニア転職をしていた際に
行った体験談ベースの内容となっているので参考にして頂けると幸いです。

STEP①:何を作るかを決める

まずはここですね。
先ほど独学をする際の心がまえとして重要なこととして
成果物を作ることとお伝えしましたが
独学での初歩にはまずこの「何を作るか」を決めることがキーになります。

Webページを作るでも良いですし
アプリを作るでも良いので
ある程度のざっくりと仕様をリストアップして
自分が何を作ろうとしているのかをイメージできるようしましょう。

STEP②:1週間だけ基礎部分の学習をする

次にここですね。
実はこの順番にするのがミソで
「作るものを決めてから学習する言語を学ぶ」
というのが重要になってきます。

確かにオンラインでのプログラミング学習ができるサイトにて
自分の興味のある言語を選んで
一から学習していく、というのもある程度は言語の知識が
取得できるので完全に悪いとは言い切れません。

ですが、ただ一からなぞる勉強は学習効率が非常に悪い。
なぜなら、実際の実装では不必要な部分まで学習を進めてしまうからです。

なので何を作るかを決めたら、あとはその成果物を作るために
必要な言語の基礎知識を1週間以内で、5-10時間の間におさまるように
学習を進め、終わり次第すぐに成果物作成に入るのがおすすめです。

STEP③:実際に成果物を作る

学習が終わったら成果物の作成に入りましょう。
で、ここで初心者の99%がつまづくところなのですが
エラーが出まくって先に進まないという問題が起こります。

現状段階ではざっくりとした言語の知識しかありませんから
実際に開発をし始めるとエラーは頻発するでしょうし
どう実装すれば良いのかそもそもわからないといった問題が
頻出します。

こういった時に大事なのが
「エラーや問題が出たら、それだけ前に進んだ証拠」
自分が成長していることを喜ぶマインドを持つことです。

正直、現場に入ってからも同じことの繰り返しです。
案件アサイン直後は大まかな仕様の理解はできても
実装を見たら意味がほとんどわかりませんし
実装を進めていく中でもたくさんのエラーが出て
心が折れそうになる瞬間ばかりです。

だけどイチイチそんなことで落ち込んでいても意味がないですし
最初って誰もがうまくいかないんだから、
エラーや問題に当たるだけ前に進んだとポジティヴに考えながら
実装を進めてゆくしかありません。

ここは少し根性論になりますが
どれだけエラーが出てもわからないことだらけでも
ググりつつ、試行錯誤して、なんとか成果物を完成させることが重要です。

STEP④:STEP①に戻る

ざっくりとした言語の概要を掴み、成果物を完成させた今
あなたは学習前よりステージが1つ上がっています。
そして実際に未経験から独学でプログラミング学習を進めるにあたって
一番効率が良いのは成果物を作っては、振り返りを行い、また次の成果物を作って、、、
というループを回し続けてゆくことです。

実際に上記のステップを試していると気づくと思うのですが
最初の成果物を作っている段階で「次はこんなの作りたいな」とか
「こういう機能も実装してみたいな」というものはぽろぽろ出てきます。

そこで出たアイディアを次の成果物の仕様を決める際に盛り込んでみてください。
そうやって少しずつやりたいことを増やし、自分の実装のスキルをコツコツ高めていった先にエンジニアとしての成長があります。

実際にエンジニアになってからもずっとこの繰り返しです。
ぜひ独学の段階からその感覚に慣れ、エンジニアとして
良い成長ループが回せるよう意識してみてください。

初心者がつまづきやすい挫折ポイント紹介

プログラミング学習の挫折ポイント

ここまでで独学でプログラミング学習を進めていく方法について
お伝えしてきました。
ここからは独学でのプログラミング学習の際に
初心者がつまづきやすいポイントについてお伝えしていこうと思います。

エラーが出てから先に進まない

一番多いのがここですね。
「うわ、またエラーだよ、、、」と何度もエラーが出ることでやる気が削がれ
次第にググるのも億劫になり、手が止まり始める、というのが
初学者が独学で挫折する一番多いパターンだと思います。

これは先ほども述べたのですが
「エラーが出たということは自分が成長した証拠」と
自分にバイアスをかけ、思い込ませながら
丹念にエラーを潰していくしか解決方法はありません。

もちろん初期はググって解決法を頭に入れるのも
脳に負荷がかかるため、シンプルに体力的に疲れてしまう
ということもあるでしょう。
なので、自分の中で学習時間を決めたり、エラーを5個乗り越えたらお菓子を食べる、など
適度な目標を設定したりしつつ、乗り越えていくのが良いでしょう。

モチベーションが下がる

次にここですね。
独学初期は高いモチベーションで取り組めるのですが
だんだんとモチベが下がり、進捗が悪くなることも
挫折の原因として考えられるかなと思います。

ここに対しての対処方法は
「プログラミング学習を習慣化する」
のが一番効果的です。

実際に僕が行っていたのが
”朝の10-12時は必ず机の前に座ってプログラミング学習をする”
というものです。

携帯の電源を切り、PCではTwitterやYouTubeなどが見れないよう
アプリを使って制限をかけ、
プログラミング学習にのみ集中できる環境を用意し
この習慣の維持をしていました。

人間は習慣の奴隷であるというのは
かの有名な福沢諭吉の言葉ですが、
人間、習慣化しないと何かを得ることはできないです。

最初の3日間くらいはしんどいのですが
慣れてくると逆にだんだんとやらなくては気持ちが悪い状況になってきますし
そうなったらこっちのものです。

めちゃくちゃ高いモチベーションを維持する必要はないのですが
一定のモチベを保ちながら継続的に学習に取り組めるよう工夫していきましょう。

コードが思った以上に書けない

最後にこの部分ですね。
これオンライン教材で学習を進めている人にありがちなのですが
実際に成果物を作る際に思うようにコードが書けなくて
嫌気がさして、コーディングしなくなるといった現象がSNSで観測できたりします。

理由は明白で、オンライン教材は
写経的な趣きが強く、例えば真偽判定やループ文など
個々の要素を1つ1つ取り上げ学習させるものが多いですが
実際に成果物を作るとなると
それらの要素が様々に関わり合って一つの成果物が作られるため
思うようには書けませんし
教材学習に比べると進捗も悪くなってしまうと思います。

ですがこれは当たり前のことで
お金持ちになれる方法がまとめてある本を読んだだけでは
お金持ちにはなれないのと同じことです。

もちろん本の中では要所はまとめてあると思います。
ですが現実世界では様々な要素が関わり合っているため
本に書いてある要素だけ理解していても現実では通用しないことが
ほとんどでしょう。

なので最初から過度な期待を持たず
書きたての頃は書けなくて当然と割り切って
今後少しずつレベルアップしていけば良いと思いながら
学習を進めていくのがおすすめです。

今は僕も2年近く開発経験を積ませてもらったので
ある程度様々な実装ができるようにはなりましたが
初期は今この記事を読んでくださっているあなたとレベル的には大差なかったでしょうし
僕はあまり頭の良い方ではないので、もっと低いレベルだったかもしれません。

でも継続したからこそできるようになりました。
千里の道も一歩からです。
毎日コツコツと学習を継続していきましょう。

まとめ

明るい未来

本日は独学でのプログラミング学習の進め方という
テーマでお送りしてきました。

リーマンショック以上の経済不況と悪名高いコロナ不況ですが
そんな中でも変わらずエンジニア職の求人は存在します。
飲食業や観光業に比べると圧倒的に安定感のある職ですし
収入面で見ても他職種より頭ひとつ抜けており
やはり現代においてのエンジニア職は打ち出の小槌のようなものだと
今でも僕は確信しています。

確かにプログラミングを独学で行っていると
大変なことが多いでしょうし、逃げ出したくもなるでしょう。

ですが逃げなかった先に明るい未来は待ってます。
こんな僕でも継続してできたので、あなたにもきっとできます。

自分を信じて、コツコツと努力を継続していきましょう。
ではでは、今日はこの辺りで。