プログラミングを独学したいんだけど、効率の良い学習方法ってあるのかな?
早くできるようになりたいし、遠回りはしたくないしな。
積み上げないといけないのは分かるんだけど、学習のロードマップみたいなものは欲しいな。
そんな疑問に答えます。
独学と言うと、何事も意識されるのが『効率』ですよね。
スクールなどに通うと、学習のスケジュールというのはそれぞれの学習機関に任せられるので、基本的にこういった悩みは無くなります。
自分に最も合っていそうなスクールを選ぶだけです。
ところが、独学の場合はそういう訳にも行きません。
自分で学習するということは、つまり言い換えると『自分ができるようになるまでの学習内容やスケジュールを、自分自身でプロデュースする』ということです。
それでは、一体どのようにしてプロデュースすれば良いのでしょうか?
ということで今回は、特にまだ学校や会社以外でスキルらしいスキルの勉強をした事がない方に向けて、『効率の良いプログラミングの独学方法』というテーマで記事を書いていきます。
私はとある会社でシステム開発を担っている者ですが、プログラミングを教える事も経験しており、基本的には社内の教育係として活動を続けています。
この記事を読むことで何かの変化が起こったら嬉しいと思いつつ、本編に進みます。
Contents
スポンサーリンク
効率よくプログラミングを独学するために必要な知識と手段
まず、『効率』と一言で表現しても、その効率を叩くのは結局自分なわけで、自分にできる以上の効率を出すことはできません。
ここは勘違いされがちだと感じていますが、独学の場合は『どう効率よく勉強したら早く覚えられるか』よりも前に、『どう効率よく勉強したら自分が覚えられるようになるか』の方が先なんですよ。
スキルをモノにする勉強をした事がない人にとって、ここは未知の分野です。
そして、すでに今できている人たちというのは、この『勉強しても覚えられない』という過程をクリアした後なんです。
だから、教えようにも教え方がわからない。こういった問題が起きていると思うのですね。
そこで、まず物事を達成するために必要なスケジューリングを背景に持ちながら、効率の部分にも追求するような記事にしていきたいと思います。
今回お話するのは、以下の3つです。
- 目標を定める
- 自分で教師を用意する
- 学習時間を決める
これらを正しい意識で設定することが、最終的には最も効率の良い学習につながる事を確信しています。
逆に言うと、これらができていないのにテクニック論ばかり追いかけても、ちっともモノになりません。
それでは、さっそく見ていきましょう。
1.目標を定める
始めに言っておきたいのですが、ほとんどのプログラマーは万能ではありません。
見たことがない言語については勉強し直しになってしまうし、全てのプログラマーがすべてのスキルに精通しているという事はないんです。
ここは勘違いされがちで、私もよくシステム開発の分野で働いていない人から「くらげさんはコンピュータにかかわる事だったら何でも作れるんですよね?」と聞かれます。
いつもその時に断るのですが、勉強していないものは作れるようにはならないです。
常に新しい技術が出続けているのに、自分ひとりの力ですべてを追うのなんてほぼ不可能です。(中にはできている方もいるのかもしれませんが)
たまに、「うちの電子レンジが動かないんだけど」なんて聞かれたりします……。
それはメーカーに聞いていただきたい。
と、いうことは。
漠然と学習を先に進めても、何かが得られるわけではないということです。
作るものがなければ、学んだ技術は無駄になってしまいます。
もちろん勉強した分野は将来どこかで役に立つかもしれませんが、効率的ではありません。
これらを解決するために、目標を定めましょう。
今の自分でも勉強すればできそうな、ある程度作り方が見えるものが良いです。
もしそういったものが無いようであれば、まず自分がやってみたい分野に必要な学習要素というものを探してみてください。
それで学習の地図が描けないようであれば、もう少しそれを簡単にします。
たとえば、iPhoneアプリが作りたいと思うのであれば、まずゴールになっている目標のアプリは置いておいて、SwiftでHelloWorldする所から始めてみる、などです。
Web制作をやってみたいなら、まずHTMLを駆使して、ブラウザに文字を表示させてみるとか。
この最初のステップをどれだけ簡単にできるかが、わりと勝負の分かれ目です。
難しい事に挑戦する楽しさはありますが、それは習慣にできません。
できるだけ簡単なことで、目標を定める必要があります。
そして、学習の時期に合わせて目標をスライドしていくという考え方が重要です。
2.自分で教師を用意する
次のステップは、『自分で教師を用意する』です。
これは私は昔、あまり意識していなかったのですが、今ではその重要性をとても実感しています。
というのも、何か困った事が起こった時に『頼りにできるものがない』というのは、ほぼ詰みになってしまう事が多いです。
なので、心の拠り所にできるものが必要です。
できれば、教師は人が良いです。
自分の身近なプログラミングができる人に聞ける環境があれば、それだけで成立する事が多いです。
あくまで自分が勉強して、分からない部分を聞くだけであれば、快く相談に乗ってくれる方も多いでしょう。
ただ、『あくまで自分が勉強する』というのが大事で、これを飛び越えて何でもかんでも聞こうとしてしまうと、一転して迷惑な人になってしまいます。
そのままでは先に進めない、調べたけどどうしても分からないといった状況に陥った時、聞くようにしましょう。
リアルで人に聞くのが無理なら、次の手段はオンラインの掲示板です。
最近ではteratailという掲示板でプログラミングに関する事を質問できる環境があり、けっこう初歩的な質問でも答えてくれる親切な方が居ます。
良い世の中になったものです。
ただしオンライン掲示板の場合は、相手が答えられないような情報の出し方をしてしまうと、怒られる可能性があります。
なるべく実行環境の部分から情報を出す事を心がけつつ、最初はうまくいかない事を前提にしましょう。
……どれだけ丁寧に書こうと思っても、最初はどんな情報を出したら良いのか分からなくなるものです。
なので、失敗する勇気が重要ですね。
掲示板もちょっと……と思うなら、次はオンラインの学習教材を使うことです。
これは基礎を覚えるためのものが多く、すでに学習を進めている人には簡単すぎるかもしれませんが、最近は動画で教えてくれるサイトもあり、行き詰まる事が少なくなっています。
Progateやドットインストールなどで基礎を覚えてから、分からない所を人に聞くという作戦もあるかもしれませんね。
最後に、手元に一冊本を用意しておく事はとても大事ですが、それを教師にするのはけっこう難しいです。
なぜなら文章で書いてあるものは表現しきれない箇所も多く、本一冊で言いたい事のすべてを隅々まで網羅するのが難しいからです。
ひとつひとつに頼るのではなく、全体をうまく使って学習を進められると良いですね。
3.学習時間を決める
最後は、学習時間を決める事です。
突然ですが、以下の2択はどちらの方が効率が良いでしょうか。
- 毎日1時間、週に7時間勉強する
- 1日7時間、週に1回だけ勉強する
実はこれ、それぞれ性格が違います。
これは、習慣という意味で考えると1の方が良く、学習効率という意味で考えると2の方が良い、という事になります。
学生の頃は『時間割』という考え方がありましたが、実は正直、あんまり時間割にするのは良くないです。
一度に勉強すると、複数の物事を一度に頭の中に入れられます。つまり、関連付けがされやすいんですよね。
時間が経てば経つほど記憶というのは忘れやすくなっていきますから、その間になるべく多くの関連付けができた方が覚えていやすいという傾向にあります。
その一方で、『毎日』というのも大事な要素になります。
毎日学習することで、その忘れやすい記憶を効率よく再学習することができるようになります。
人間は『忘れてから再学習する』というのが記憶の定着にとても重要で、毎日やることで、『聞けば思い出せる程度の段階』で学習できる機会が増えます。
一週間経つと、何を忘れているのかも思い出せなくなってしまう事が多いんですよね。
なので、なるべく毎日、多く時間が取れた方が、学習の効率は良いという事になります。
詰め込みだと思わず、『毎日1時間だけ学習して、あとはゲームでもしてのんびり覚えていこう』と志すより、『とにかく3ヶ月間、本気で頑張ってみよう』と志した方が、得られるものが多いです。
ただ、経験上睡眠時間を減らすのだけはやめた方がいいです。
自分にできる範囲でがんばりましょう。
プログラミングの独学は効率より実践
さて、今回はプログラミング独学の効率について、書ける事を書いてみました。
個人的には、効率についてあれこれ思考を巡らせるよりも、とにかく一歩踏み出してみる事の方が大事なように思います。
どんな形でも良いですから、がむしゃらに目的地を追いかけてみる。
独学ってけっこうモチベーションを保つのが難しいので、そうでもしないとそもそも『がんばったけど身に付かない』という現象がたやすく起きてしまうんですよね。
なので、私はやってみる事をおすすめします。
やっぱり周りでも、すぐに手を出して継続していく癖がついている人は、新しい事を覚えるのが得意です。
でもそれって、最初から得意だった訳ではないんですよね。「そんな事で立ち止まっているのか」と思わず言いたくなってしまう時期も多々あります。
でも、とにかく追いかけて行くからできるようになるんでしょう。
私も今はディープラーニングについて独学中で、これを覚えたらまた社員に展開しようとしています。
独学は大変ですが、共にがんばっていきましょう。