こんにちは、3度のフィリピン留学経験があるフリーランスエンジニアのZiziです。
あなたはこんな風に思ったことはありませんか?
過去の僕もあなたと同じように思っていたのでお気持ちがよくわかります。
今回はそんな方たちに向けて、プログラミングの独学でうまくいくたった1つの勉強法を初心者にもわかりやすくご紹介していきます。
なお、僕自身現役のフリーランスエンジニアで、自分で0からデザイン、コーディングしたサイトが日本一有名なプログラミングスクールのコンテストで最優秀賞を受賞した経験があります。
独学とスクールを併用してスキルを身につけてきたので、実績が何もない人よりは説得力はあるかなと思います。
それではいってみましょう!
記事のもくじ
プログラミングを独学で身につける勉強法で危険なこと
あなたは最近いつ何かを独学しましたか?
また、その独学はうまくいきましたか?
僕も最初はプログラミングを独学していたのですが、途中で何をやっていけばいいのかわからなくなって挫折しました。
あとから気づいたのですが、僕は独学の方法を間違えていました。
ただ闇雲にプログラミングを独学すると挫折しやすいです。
特にプログラミング学習サイトとして有名なProgate(プログラミングを無料で学ぶことができます)やドットインストール(こちらも同様)などでレベルを上げることばかりやっている人は危険です。
確かに、全くの未経験者が初学者レベルに上がるためのステップとしては素晴らしいサービスです。
ですが、そのフェーズで満足していても何も自分で作れるようにはなりません。
次からの章では、プログラミングを独学で身につけたいあなたへ、僕が今まで実行してきたプログラミングの独学勉強法について具体的に紹介していこうと思います。
プログラミングの独学勉強法:①目的地を設定する
結論から言うと、プログラミングを独学する上で一番大事なことは「目的地を設定する」ことです。
飛行機に例えるとわかりやすいです。
あなたが飛行機に乗る時、目的地を決めずに乗ることはありえませんよね?
もし仮に目的地を決めずに飛行機に乗ったらどうなるでしょうか?
- 燃料をどれくらい積めばいいかわからない
- 距離に応じた最適な機体を選べない
- 目的がないので墜落する可能性が上がる
問題だらけなことがわかると思います。
ですが、プログラミングを独学する人・もしくはしている人は、目的地を決めずにただなんとなくやっている人も多いと思います。
それでは途中で墜落(挫折)してしまう可能性が高いので、必ず【目的地=ゴール】を設定しましょう。
具体例をあげると、
などです。
目的地を設定することで、途中で自分は何のためにプログラミングを学習しているのか?という状態に陥ることが無くなります。
用事も無く、税務署や市役所に行かないですよね?
みんな目的があるのでその場所に行くし、学習するはずです。
プログラミングはあくまでその目的地に辿り着くためのツール(手段)でしかありません。
プログラミングを学ぶことが目的ではなく、RubyとRuby on RailsでTwitterのようなWEBアプリケーションを作ることが目的なので、目的と手段を間違えないようにしましょう!
プログラミングの独学勉強法:②現在地を把握する
目的地は設定できましたか?
目的地の設定ができたら、次に【現在地を把握】しましょう。
上記の例のように、今自分はどのレベルにいるのか、自分の現在地を把握しましょう。
なぜこのようなことをするかというと、努力の方向性を間違えないようにするためです。
例えば、
目的地=RubyとRuby on RailsでTwitterのようなWEBアプリケーションを作ること
なのに、
現在地=SwiftやJavaの学習をしている
このような状態だと、努力の方向性を間違えているので、目的地に辿り着くまでにかなり時間がかかります。
これを解決するために現在地を把握します。
自分がちゃんと目的地に行けるように自分の現在地を把握して、努力の方向性を間違えないようにしましょう。
プログラミングの独学勉強法:③目的地までにどんなスキルが必要か把握する
目的地と現在地の把握はできましたか?
次は【目的地までにどんなスキルが必要なのか】を把握していきましょう。
旅行でも目的地と現在地が決まっていてもチケットがないと目的地に行けません。
WEBアプリケーションを作るにはどんなスキルが必要でしょうか?
それを自分で調べつつ、考えていきましょう。
今回の場合は【Twitter プログラミング言語】などでググるとそのヒントが得られそうですね!
旅行でも行き先の情報や旅行先でやりたいことは自分で調べると思います。
基本的にプログラミングの独学も同じように考えていただいてOKです。
やりたいことから逆算してどんなスキルを身につければ、自分の目的地に辿り着けるか仮説を立て、このスキルは目的地に辿り着くために必要・不必要を取捨選択していきましょう。
プログラミングの独学勉強法:④必要なスキルを細分化する
目的地までにどんなスキルが必要か把握できましたか?
次はその必要スキルを羅列したり細分化したりします。
(例)必要スキル
①HTML |__ Bootstrap
②CSS |__ Sass
③Ruby |__ Ruby on rails
④MySQL
⑤Git |__ Github
⑥Command Line
このように細分化することで今の自分に必要なスキル、やるべきこととやらなくていいことがより明確になりました!
例ではかなり細分化しましたが、ここまでやらなくても自分が必要なスキルを具体的にイメージできればOKです。
プログラミングの独学勉強法:⑤スキル習得方法の計画を立てる
必要なスキルの細分化ができたら、次はどこで、どのように学んでいくかの計画を立てます。
今はプログラミングを無料で学べるサイトがたくさんあって迷ってしまいそうですが、基本的な部分は①Progate、②ドットインストールこの2つで十分です。
例であげた必要スキル、そのほとんどが上記のサイトで学ぶことができます。
しかし、上記のサイトだけでは自分で0から作れるようにはなりません。
上記のサイトで基礎的な知識をインプットできたら、自分のPC内(ローカル環境)で必ずアウトプットしましょう。
プログラミング学習を独学でやると、どうしてもインプット中心に偏りがちなので、アウトプット中心の学習を心がけた方が楽しいですし、成長速度も速いです。
プログラミングの独学勉強法:⑥目的地まで走り続ける
目的地と現在地、必要スキル、そしてスキル習得方法が把握できたら、あとは目的地に辿り着くまで継続するのみです。
おそらくこの【継続】が一番難しいと思います。
個人的な意見として、プログラミングは短期間で集中してやってしまった方がいいと思っており、それは長期間ダラダラとプログラミングを学習していても前回学習したことの復習から始めなきゃいけないからです。
結果的に費やした時間の割にはあまり身につかない状態、もしくはプログラミングにハマる前にドロップアウトする可能性が非常に高いです。
なので、3ヶ月間毎日5時間→90日×5時間=450時間のように、短期間で一気に学習してしまった方が挫折はしにくいかなと思います。
また、最終目的地まで走り続けるためには、【小さな成功体験】と【プログラミング楽しい!】と思えることが非常に大切です。
自分で書いたプログラムがちゃんと動くと感動します!
そうした小さな成功体験を繰り返すことで、自信になりますし、もっとコードを書きたい!というモチベーションに繋がります。
プログラミングが楽しくて仕方ない!と1日中やっていたくなる状態になれれば確実に最終目的地に辿り着けるでしょう。
独学の勉強法では不安だという方はプログラミングスクールもオススメ
ここまでプログラミングを独学で身につけたい方向けに勉強法を解説してきましたが、もしあなたが会社員として働きながら、朝と夜の空き時間でプログラミングを身につけようとしているのであれば、それは難しいかもしれません。
よっぽどモチベーションが高くないと継続できないです。
僕は実際に4社ほどプログラミングスクールに入会経験があるのでその難しさはよくわかります。
なので、あなたが本気で人生を変えたいということであれば本気で人生を変えたいと思っている人たちが集まっている環境をお金で買うという選択肢もあります。
それがこのサイトを運営しているKredoオンラインキャンプです。
人は環境の影響をかなり受けるので、プログラミングに対するモチベーションが高い環境に自分を置いてしまえば、プログラミング学習を継続することはそんなに難しいことではありません。
また、プログラミングスクールはある程度期間が決まっており、強制力が働くのでダラダラせずに済みます。
独学の場合だと、目的地に着くまでの全てを自分で管理しなければいけませんが、プログラミングスクールだと、目的地に着くまでの道筋を明確に示してくれるので、与えられたものをひたすらこなしていくだけで成長できます。
金銭面で余裕のある方、最短距離で目的地に辿り着きたい方はプログラミングスクールもおすすめです。
まとめ:プログラミングは独学可能!やりきるためには勉強法が大事
いかがでしたか?
プログラミングを独学で身につけたい方に向けて勉強法を解説してきました。
結論は、プログラミングは独学可能ですが、やりきるためには勉強法が大事です。
過去の僕がそうだったようにただ闇雲にプログラミングを独学すると挫折しやすいです。
ですが、努力の方向性と正しい努力をすることで挫折する可能性は抑えられます。
今回ご紹介した独学勉強法が少しでもあなたのお役に立てれば幸いです。