プログラミングを最短で身につけるコツは、「細分化」をする事です。
皆さんは、小さい頃に、「何事も少しずつやりなさい」といったアドバイスを受けた事は無いでしょうか?
近年、脳科学の観点からも、このアドバイスは、脳の学習パターンを反映しているとして、正しさが認めらています。
プログラミング学習の細分化とは?
それでは、「細分化」する為には、具体的にどうすれば良いのでしょうか?
- スキルの中で習得出来る「最小」の要素は何か?
- その最小の要素と「関連」している要素は何か?
この2つの質問を問いかけるだけで良いです。
ポイントが3つあるので、解説しますね。
ポイント1:一つの要素を習得するまで練習する
最初のポイントは、一つの要素をマスターするまで練習し、それを他の要素と一つ一つ、つなげていくという事です。
例えば、皆さんはピアノを練習する時は、ある程度まとまった区切りで練習し、繋ぎ合わせて1曲を弾ける様になりますよね?
色々と手を出すと、全てが中途半端になってしまいます。
例えば、Webサービスを作成したい場合は、まずは、「HTML/CSS」のみに集中して学び、その他の事は全て忘れます。
次に「JavaScript」、「Ruby」、「Ruby on Rails」、「Git」、「SQL」、「Bootstrap」といった形に、必要なタイミングで1つ1つ学んでいきます。
ポイント2:全体像をまずは観察する
漫然と英語や、プログラミングの練習を何年も続けて、結局何も身につかないって事ありますよね?
自分も、「目的」を持たないで勉強していた時は、何となく勉強して、満足感はあるのですが、その罠にハマっていました。
ですので、まずは全体の流れを観察し、一つ一つの関連性を時間をとって理解してから、学習を始めることで、ムダな時間を最小化する事が出来ます。
ポイント3:仮でも良いので目的(やりたい事)を決める
全体像を観察するには、まず「目的」を決める必要があります。
とは言え、最初なので、ガチガチに決める必要はありません。
例えば、機械学習をしたいとか、Webアプリケーションを作りたいとか、iPhoneアプリを作ってみたいとかそんな感じで最初はOKです。
何が作りたいといった発想ではなく、場所に制約されず、自由に働きたいのでWebエンジニアのスキルを身に付けたいといったものでも良いです。
【NG】学習時間を目標にする
良くある間違いとして、学習時間を目標とするのは良く無いです。
例えば、「プログラミングを毎日30分間学習しよう」というのは、良く無い目標です。
学習で最も大切なのは、脳の中に新しい神経回路を作る事であり、それには違った目標の立て方をします。
「背伸び」と「繰り返し」を学習目標とする
では、具体的にどの様に学習を進めれば良いのでそうか?
鍵は、「背伸び」と「繰り返し」です。
例えば、先ほどの、Webサイトの作成の練習をしている場合は、単純な1ページのランディングページを作成する事を目標とします。
そして、その目標を更に細分化し、
- BootstrapをCDNを使用してWebサイトに導入
- ナビゲーションバーを作成
- 入力フォームを作成
- 動きをJavascriptで書く
- 共通部分を纏めてリファクタリング
こういった作業を、一つ一つクリアしていく事を毎日の目標にします。