独学でプログラミングを学ぼうとすると残念ながら多くの人が挫折します。
『わけのわからないエラーがでて解決できない』
『いくら読んでも仕組みが理解できない』
『思ったとおりの動きにならない』
例えば自分のPCに開発環境を用意して、Java入門とかの本を片手に実際にコードを組んで実行してみる。
そうやって勧めていくと最初の方はスムーズに理解できても後半の方の章から段々理解が追いつかなくなってきます。
それでもごまかしながら進めていくと最後のほうでよくわからないエラーがでて完全に詰まる。
まあこれは初心者がほぼ100%通る道です。
なぜこうなってしまうのか?回避策はあるのか?
今回は、せっかくの努力を無駄にしないための【独学プログラミングの挫折を回避する4つのポイント】をご紹介します。
1【理解できない】対策:学習のための教材は複数用意する
プログラミング関連の書籍は高価ですし、かさばるのでなるべくボリュームがある1冊を購入してそれにそってしっかりとやっていこうと考えがちですがそれは危険です。
内容がしっかりと充実している辞書のような本は内容が詰め込まれすぎて、ほとんどの人には網羅しきれません。
大抵2章か3章あたりで心が萎えてきますし、途中で理解が追いつかなくなってきます。
かといって初心者向けのイラスト満載の平易な本はとにかく序盤の導入部分にひたすらページをさきすぎて、全体のほんの一部分しか触れられていません。
確かに理解しやすく噛み砕いて書かれているのですが、正直言ってこの本だけ見ても実戦で通用するレベルは難しいという内容の本ばかりです。
また、初級~中級向けに幅広く一通りの範囲をカバーしているような参考書は「あれ?じゃあこの場合は?」のように同時に思い浮かぶであろう疑問に対する回答が無い場合が多いです。
ありとあらゆる質問パターンを想定してFAQなどにまとめたらそれこそ辞典のようなボリュームになってしまいますから仕方ありません。
つまり1つの本で初心者から上級者までカバーできる教材は存在しないということになります。
そこで僕が提案するおすすめのやり方が1つの言語を勉強するならばできれば3冊はその関連書籍を用意するというものです。
- できれば【1)初心者向け】【2)中級者向け】【3)リファレンスマニュアルのような内容が非常に濃いもの】のように異なるレベル向けにするのが理想です。
- あるいは【1)初心者向け】【2)初心者~中級者向け】【3)初心者~中級者向け】のように中級レベルまで手厚くレベルアップしていけるようなラインナップでも良いでしょう。
そして、まずは最も平易な初心者向けの本をベースに学習していき、途中で「これってどういう意味だろう?」「このパターンって説明なかったけど?」「これを組み合わせた場合は?」という疑問点が出たときに他の本を参考にするのです。
ある本には載っていなかったことはもう一つの本には丁寧に記載されていることもよくあります。
また、中級者向けに書かれている内容が難しすぎて理解できない時、初心者向けの参考書の説明をみるとすんなりイメージできることもあります。
これら複数の参考書を組み合わせつつ、更に不明点があればネットで拾い読みしながらチェックするとかなり理解しやすくなるはずです。
更に動画で学べる実践的なサイトもセットで活用すると一気に理解度が深まるでしょう。
教材となる情報が増えれば増えるほどコストはかかるものの理解度は高くなります。
くれぐれも1冊の本だけで全てを理解しようとしないようにしましょう。
正直言って無謀です。
2【覚えられない】対策:とにかく実践。読んだだけでは知識にならない
2つ目のポイントは、プログラミングは見ただけは決して覚えられないという点です。
プログラミングは実際に手を動かしてナンボです。
例えるならば料理や美術と一緒です。
レシピ本やデッサン本をみると全体の流れや基本的な手法などは理解できるので「なるほど!」とわかった気になります。
しかし、実際にそのとおりにやってみようとすると始めは中々うまくいかなかったりしますよね。
プログラミングも一緒で本やサイトを見ていると初心者でも「あーそういうことか」と納得できるポイントって結構多いのです。
しかし、それはあくまでも『頭で理解した』というだけで『体に身についた』わけではありません。
理解しただけの知識はあっというまに忘れていきます。
有名なエビングハウスの忘却曲線によると2日も経てば70%近くが記憶から消えます。
2章3章あたりで『理解した』知識は5章を勉強する頃にはもうほぼどこかに消えているわけです。
しかし、参考書は以前やったところはすでに『出来る』前提で話をしてきますから、そのまま読み進めていざ実際にコードを書こうと思っても手が止まってしまうわけですね。
ですから理解しただけではなく身につけながら進めていく必要があります。
基本的に1歩進んで2歩下がる位のペースでゆっくりと体に覚えさせながらやっていかないと中々マスターできないものなのです。
3【中々進まない】対策:全部覚えようとしない
ポイント2との兼ね合いとして重要になるのが3つ目の『全部覚えようとしない』という点です。
実は参考書など、章立てで進んでいく参考書は体系的に学ぶため、ある程度一通りの内容は網羅しています。
しかし、実際の現場ではほぼ使わないような知識も非常に多いのです。
TVやエアコンのリモコンを見てもわかりますが、基本的に使うボタン(機能)ってほとんど決まっていますよね。
TVならば電源と各チャンネル、番組表そして音量ボタン位です。
しかし、参考書の場合【サブメニュー】ボタンやら【入力切替】ボタンやらの意味や機能を一生懸命教えようとします。
テストであればそんな重箱の隅をつつく様な問題もでてくるかもしれませんが、実際にはめったに使いません。
まず確実に各チャンネルの使い方や音量ボタンの使い方を覚えることが先決です。
プログラミングでも例えば各メソッド(言語によってAPIだったり関数だったり)の説明があった場合まず最初は「全体としてこんなものがある」ということを頭の片隅に留めるだけでよいです。
その上で後から再び出てきたらそのときに復習して身につけ、3回目に出てきたときには記憶だけで引っ張り出せるようにしましょう。
『頻度が高いものほど優先的に覚える』というのが最大のポイントになります。
これを繰り返していくと出来ることがどんどん広がっていきます。
4【ハマって進まない】対策:誰かに教えてもらった方が確実に早い
ポイント1の通り複数の学習教材を使い、ポイント2の通り実際に手を動かしながら学び、ポイント3のように頻度が高いものから優先的に覚えていく。
このサイクルを回していけば、たとえ0からの独学であっても十分にプログラミングの知識を得ていくことが可能です。
しかし、最終的には誰かに教えてもらうというが最も効率が良いのは確かです。
というのも、基本的に本や学習サイト、動画などの勉強法は全て受け身の勉強になります。
つまり相手が発信する情報の中から学習するしかなく、こちらがわからないことを質問するというのができないわけです。
受け取った情報だけで完結すると、その情報が不足していた場合に気付けないというデメリットがあります。
ポイント1で学習の教材は複数用意するといいましたが、それでも網羅しきれない情報はたくさんあります。
めったに使わないような細かい知識ならまだ良いのですが、場合によっては中級者以上では必須となるような応用テクニックなどで参考書に載っていないものもあります。
そういったときちゃんとした講師に教わる機会があれば、飛躍的にスキルアップ出来るでしょう。
また、プログラミングを続けていくと必ず【いくら頭を捻っても絶対解決できないエラー】にぶちあたります。
IT系の職場には大抵どの現場にも高スキルな人が一人はいますので、その人に聞けばよいのですが独学の場合は難しいですよね。
ある意味ではこれは独学レベルの壁とも言えるもので、それ以上の知識を単独で得ようとすると非常に困難です。
そういうときはもうごちゃごちゃ考えず【とりあえず上級者に聞いてみる】のが一番手っ取り早い解決方法です。
したがって『中級以上を目指したい』『効率よく知識を得たい』『なるべく短い時間で集中的に学びたい』という場合は有料のスクールがベストでしょう。
※有料スクールならば現役エンジニアがマンツーマンで教えてくれるプログラミングスクール【CodeCamp(コードキャンプ)】がおすすめです。
実は独学でやってきた人ほどスクールに入ってみると一気に壁を突破してメキメキと実力がアップする可能性が非常に高いのです。自主練と上級者とのマンツーマントレーニングでは、成長速度がまるで違いますからね…。
※今ならレッスン5回まで無料のチャンス!この機会に是非。
まとめ
というわけで知らずに独学でプログラミングを学習しているとほぼ確実にハマる4つのポイントに対する僕なりの答えをお伝えしました。
改めて整理しておきましょう。
- 【内容が理解できない】→学習のための教材は複数用意しよう
- 【覚えられない】→体に身につくためには必ず『実践』しよう
- 【中々進まない】→全部カバーしようとせず頻度が高いものから覚えよう
- 【ハマって進まない】→上級者に教えてもらって進もう
最後に、プログラミング学習には終りがありません。
すぐに新しいものが次々と出てくる業界ですから、常に勉強を欠かさないことがいちばん重要なポイントといえますね。
参考になれば幸いです。