名称未設定-2

プログラミング学習は「パラシュート勉強法」がおすすめな理由。

プログラミング学習法についてまとめます。

独学で学習しようとしても挫折しやすいのがプログラミング学習です。その理由は今まで経験してきたような学校の学習とは大きく異なるからです。

例えば受験勉強や資格の勉強方法などの感覚が身体に染み付いている場合はギャップに苦しむことがあるのでその時点で挫折する傾向があり注意が必要です。プログラミングの勉強は他と比べて向いている学習法があります。

挫折するのは「今までの勉強法、また読書習慣」が一因かもしれません。あまり読書をしない人は今回の学習のコツをそのまま素直に実行すれば、実はプログラミング学習は向いている可能性があります。

以下はプログラミングスクール TECH::EXPERT(現テックキャンプ) の推奨する学習のコツです。今回は以下を参考に説明します。

プログラミング学習中は特に意識してほしいことです。

①コードを沢山書きましょう
②エラーを経験しましょう
③完璧を求めることはやめましょう

私は今でもこの3つを意識しています。「新しいプログラミング言語に挑戦するとき」や「開発するとき」に常にこの3つを思い出します。この3つは初心に戻る時におすすめです。

今回は③について深掘りしていきます。



プログラミング学習とは?

「③完璧を求めることはやめましょう」

↑この意識はとにかく大事です。まず「完璧」をやめること。

これは読書で例えると最初から最後まで順番に隅々まで全てを読んでいくことです。つまり、プログラミングの参考書であれば第一章から目次通りに順番に理解しながら読んでいくことです。これをまずやめることがプログラミング学習の改善の第一歩です。

(技術参考本の読み方が違うだけで本を読むなという話ではないです)

学習を挫折する原因の主な要因に「ちゃんと覚えようとする」があります。全ての仕組みを覚えないと、理解しないとプログラミングはできないという思い込みです。沢山の情報などを覚えようとしてうまく理解できないと心が折れてしまいます。まず覚えなくて良いです。Googleで検索すればすぐに分かります。

「コードを書く時間よりも『ググる』時間の方が長かったな」という話はよくあります。必要なときに必要な情報を仕入れるイメージで学習を進めていきましょう。ここで出てくる学習法が「パラシュート勉強法」です。

「パラシュート勉強法」とは?「遅延評価勉強法」とは?


数学の勉強法には、「パラシュート勉強法」と呼ばれるものがあります。

算数・数学の勉強はしばしば積木に例えられるように、基礎から積み上げていかなければいけないというのが常識ですが、この常識を打ち崩すのが「パラシュート勉強法」です。「下からコツコツ登らなくても、パラシュートでいきなり好きな所に着地していいんだよ」という発想です。

名称未設定-1


雑な言い方ですが、パソコンでWEBサイトを見るだけなら、パソコンの立ち上げ方とブラウザで検索の使い方だけを覚えるだけで十分.....なにもインターネットの仕組みやコンピュータ理論から勉強する必要など全くありません。
 
要はとりあえず始めてみて、足りないものは後から買い足しましょうという発想です。

似たような方法論として「遅延評価勉強法」というものがあります。


一言でいえば「必要になったら、必要なところだけ勉強する」この意識がプログラミング学習、特に初学者に伝えたいことです。

遅延評価勉強法とは、「その知識が必要になった時に初めて勉強する方法」です。もっと言えば、「○○を学んだから××をやってみる」ではなく、「××をやりたいから○○を勉強する」と定義です。

プログラミング言語Rubyを作った日本人で偉大なエンジニア「まつもとゆきひろ」さんも以下のように語っています。

わたしが過去にどのようなソースコードの読み方をしてきたのかを振り返ってみると、プログラミング能力の向上を目指したコードの読み方のヒントがあるかもしれません。
まず1つは、「全体を読もうとしない」ことです。ソースコードには「物語」はないので、全体を通して読む必要はありません。面白そうなところをつまみ食いして、先人の知恵を学べばそれで十分です。
もう1つは、「目的を持って読む」ことです。何かを学ぼうと思ってソースコードを読めば、効果的に読解して知識を得ることができます。

要は意味のないことに時間を使わず、最小の労力で最大の成果を出そう。効率を重視しようということです。

例えばプログラミングを勉強するときに「書籍を1ページ目からやる」のではなく「2ch型のような掲示板が作りたいから必要なところだけを勉強する」ことが遅延評価勉強法になります。

通常の勉強法と比べて、モチベーションが高く保てます。また、インプットとアウトプットがほぼ同時になされるので理解度、定着率がダントツに違います。

2ちゃんねるを作った西村博之氏なんかは、まさにこの方法でperlを学んだみたいです。


詳しくは以下のリンク先でご確認ください。


今からプログラミング学習をしたい方へ

もし手元に参考書があったとしたら、最初から1ページずつ読むのではなくて、必要なことが書かれているページとその周辺だけを拾い読みするようなやり方をしましょう。

参考書ではなく、Progateやドットインストール、Udemyで学習してる方も同様です。まず自分が必要としてるものだけ意識して進めましょう。

体系立った知識の習得よりも、まずは目の前の課題にフォーカスするやり方です。

これを繰り返していくと、点と点だった知識が線に、線と線が面になっていき、徐々に体系立った知識の習得につながっていきます。

ですが、ここで注意点があります。自分が必要としてるものが分からない場合です。可能であれば事前にざっくりで良いので作りたいもの決めてください。なんでも良いです。

例えば「Facebook」のようなサービスをつくりたい、「メルカリ」のようなサービスをつくりたいなど、世の中に実際にあるサービスを自分の手でつくれたら、と想像することが大事だと思います。自分にとってはスケールが大き過ぎて無理だと思うかも知れませんが、カリキュラムを進める中で「あれを作るにはどうするんだろう?」「あの機能はどうやって実装するんだろう?」と自然と学習意欲が出てきたら学習速度は上がります。自分に必要な技術が分かってきます。当時は分からなくて進んでいたとしても点と点が線になる時がきます。

作りたいものがあるからこそ「パラシュート勉強法」=「遅延評価勉強法」がすごく活きます。

大事なのは「学習してることが、自分のつくりたいものに繋がっている」と実感することだと思います。この意識はきっと役に立ちます。

意識せずに進むと技術があるのにつくりたいものが浮かばない状態になり、技術への学習意欲が減少する恐れがあります。

①エンジニアになりたいから学習する。
②作りたいものがあるから学習する。

私は②であってほしいです。①の学習は答えが広すぎて、色んな技術に目が向いて迷走する可能性があります。つまり学習方法に上記の勉強法が活かせません。学習のためにはこの目的の違いをハッキリさせるのはすごく大事です。

学習のコツ、学びの工夫でプログラミングは楽しいものになります。

プログラミングが理解できないのは過去の基礎が理解できていないからだと言われます。大抵はやりたいことに辿り着く前に挫折します。できる・できないに関わらずやりたいことからスタートしましょう。やりたい内容を理解するために必要な部分に限り学習、最小限に基礎の内容に戻るという方法をとりましょう。

プログラミングスクール(TECH::EXPERT、現TECH CAMP)を検討してる方は以下も合わせてお読みください。


最後まで読んで頂いて、誠に有り難うございます。

もしこの記事を読んで良かったと思ったら、
このnoteの “♡”(スキ)を押してくれたら嬉しいです。

また「サポートする」をクリックで(ご支援)頂けたら幸いです。

・(スキ) ボタンは今後の記事作成の励みになります。 ・サポート支援金はフリーランス活動の糧になります。