プログラミング学習を始めたものの、理解できなくて苦しんでいる方が多いです。
あなたにも以下のような経験はありませんか?
- 難しくて理解できない
- 何を理解すればよいかわからない
- なんとなく勉強しているけど、理解できた実感がない
何事も始めたばかりのころは、知らないことが多すぎて、「分からないことが分からない」という状態になりやすいです。
この記事では、現役エンジニアである筆者の経験を元に、プログラミングを理解できない原因、解決策について解説いたします。
原因については、技術的なことを理解できない、というよりは、理解できないということに対する根本的な原因まで掘り下げてみました。
どうしても無理な方に向けて、最終手段についても紹介しています。
プログラミングを理解できなくて苦しんでいる方には、きっと解決策が見つかると思います。
ぜひ、最後までご覧ください。
目次
プログラミングが理解できない!根本的な3つの原因
プログラミング学習の挫折率は90%といわれています。(侍エンジニア調べ)
侍エンジニアの調べでは、挫折や行き詰まりを感じた理由の1位〜7位は以下となっていました。
- 1位:不明点を聞ける環境になかった
- 2位:エラーが解決できなかった
- 3位:モチベーションが続かなかった
- 4位:学習のゴールがわからなかった
- 5位:環境構築でつまづいてしまった
- 6位:教材がわかりづらかった
- 7位:学習時間が思うように取れなかった
プログラミングが理解できないことが起因となっている理由が多くみられます。
では、なぜプログラミングが理解できないのか、原因をまとめてみました。
- 理解できているかが分からない
- やる前から苦手意識を持っている
- 知らないと理解できていないは別物
1つ1つ解説いたします。
理解できているかが分からない
教材でプログラミング学習を進めて、内容は何となく理解できるようになってきた!
ソースコードも読めるようになってきた!
自分の手でコーディングして、実際に動くアプリやシステムも作ってみた!
ですが、
・これって本当に理解できているのだろうか?
・教材の内容を素直に受け入れたけど、何のために使うんだろうか?
というように感じ、心がモヤモヤした経験はないでしょうか?
最近の教材は親切なものが多く、環境の構築方法から説明してくれます。
わかりやすくできていますので、学習自体はスムーズに進んでしまうと思います。
少し悪い言い方になってしまいますが、答えを見ながら問題を解いている状態に近くなってしまうんです。
自分自身の頭で悩んで、必要な情報をかき集めて、問題を解決する。
この行為が必要無いため、理解できたという実感が湧かないことが原因の1つだと考えられます。
やる前から苦手意識を持っている
以下のような理由で、プログラミングの才能が無いと決めつけていませんか?
・英語が苦手で読めない
・学生時代は文系だったから数学が苦手
英語が苦手な方は、プログラミングに対して苦手意識を持ってしまいがち。
プログラミングは英語の文章を書くのではなく、機械に英語で指示を出すものです。
英語が読めなければプログラミングできないわけではありません。
エラーが発生した時の警告文などは英語で出力されますが、英語の警告文そのままで検索すれば対処法が出てくると思います。
筆者は英語ができませんが、度重なるエラーの修正により、英語の警告文が何を示しているかわかるようになりました。
プログラミング=数学、とイメージされる方も多いですが、データ分析など専門的なことをしない限り、数学的な知識は不要です。
苦手意識が高すぎると、プログラミングすること自体を投げ出してしまう恐れもあります。
理解できない以前の問題となってしまいますので、英語・数学ができないことを理由に、苦手意識を持つ必要はありません。
知らないと理解できていないは別物
プログラミングで、ある程度大規模なアプリやシステムを作ってみると、複数のプログラム言語を書かなければいけなくなったり、今まで使ったことが無い開発ソフトやツールを使うことが出てきます。
新しいプログラム言語や、ツールの使い方を覚える必要があり、次々と知らないことが出てくるので、「こんなに理解できるはずがない。。」と自信をなくしてしまっていませんか?
知らないことと、理解できていないことは全くの別物です。
新しいことを学んでいるので、知らなくて当然なんです。
知らないことは、調べて解決すればよいのですから、理解できていないと勘違いするのはやめましょう。
プログラミングが理解できない!5つの対処法
プログラミングが理解できない場合の対処法についてまとめてみました。
- 分からないことを書き出して見える化する
- 全てを理解しようとしない
- 見方を変えてみる
- 人に教えるつもりで理解する
- 学習するプログラミング言語を変える
あなたが取り入れていない方法があるようでしたら、ぜひ取り入れてみてください。
ここで紹介する方法でもどうしても無理な場合は、次項でどうしても無理な場合についても解説しています。
分からないことを書き出して見える化する
分からないことが分からない状態になっている場合、現状を把握することと、理解できていないことを明確にすることが重要です。
手書きでも構いませんので、以下のことを書き出してプログラミング学習のロードマップを作ってみましょう。
・プログラミング学習のスタート地点とゴール
・ゴールへ辿り着くためにクリアすべき課題
・あなたの現在地
現在地より前にあるものがクリアしてきた課題で、理解できているものを示します。
現在地より後ろにあるものが、これからクリアしなければいけない課題です。
理解できていないことがある場合、下記どちらかの状態になるのではないでしょうか。
・クリアすべき課題を書き出せなかった
・課題をクリアできているのか判断つかない
・クリアすべき課題を書き出せなかった場合
ゴールへ辿り着くために必要なことが理解できていない状態ですね。
次に何をすべきかが理解できていないということですので、ゴールに辿り着くために必要なものが何であるか、調べて書き出しましょう。
具体的に書き出せない場合は、ざっくりとした内容で構いません。
次の手順も実施して、具体的な内容まで掘り下げていきましょう。
・課題をクリアできているのか判断つかない場合
課題をクリアするためのロードマップを作成してみましょう。
プログラミング学習のロードマップと同じものを、1つの課題に対して作成するということです。
クリアすべき課題を書き出せなかった場合や、課題をクリアできているのか判断がつかない場合は、同じように1つの課題に対してロードマップを作成します。
ロードマップを完成させられるまで、掘り下げてロードマップを作成するイメージです。
課題をクリアできていない原因を深堀していくことで、何が理解できていないのかが明確になります。
具体的に理解しなければいけないことが明確になるまで、ロードマップを掘り下げてみましょう。
見える化することで、これから何を理解しなければいけないのか明確になりますので、分からないことが分からない状態から抜け出せると思います。
心配性がいたずらして、理解できないと思い込んでしまっていただけであり、プログラミング学習自体は順調に進んでいる、という場合もあると思います。
全てを理解しようとしない
プログラミングの概念だったり、プログラム言語の仕様だったり、いきなり全てを理解しようとしていませんか?
このライブラリには、このようなメソッドがあって、どのようなオプションが設定可能で、オプションの指定の仕方はこうで。。。など
初めから全てを理解しようとするのはやめましょう。
覚えなければいけないことは膨大ですので、現実的ではないからです。
プログラミング学習しているのであれば、コーディングして動くものを作っているはずです。
どのようなプログラムを書くと、どのような振る舞いとなるのか、実際に動かして確認していると思います。
学習の過程で経験したことだけを覚えるようにしましょう。
正直言いますと、覚える必要もなくて、「こんなことができる」程度の理解で問題ありません。
忘れてしまったのであれば、教材を見直して確認すればいいだけですので。
小さな経験をちょっとずつ積み上げていくことで、プログラミングで出来ることも増えてきます。
プログラミングで壁にぶつかった時に、今まで積み上げてきたものを組み合わせることで解決できたり、知らないことを調べて知識を付け足すことで解決できるようになり、理解できていると実感出来るようになります。
見方を変えてみる
プログラミングの理解の仕方は人それぞれです。
・プログラムの細かいところを理解しながら、最終的に全体を理解する人
・視野を広げて全体を理解してから、細かいところまで掘り下げて理解する人
・データベースや開発に使うツールなど、外堀から理解する人
人によって得意不得意がありますので、見方を変えてみましょう。
プログラムを理解するうえで、上にあげた3つの見方は全て大切なんです。
行き詰まったら視点を変えてみる、これを繰り返して色々な視点で見るクセをつけましょう。
人に教えるつもりで理解する
あなたが理解しようとしていることを、前提知識の無い人に教える場合を想定してみてください。
あなたが100%理解していたとしても、相手に伝えると70%ぐらいしか伝わらないものです。
そうなると、あなた自身が130%理解している必要があり、必要な情報をかき集めることで自然と知識が増えて、理解度も高くなります。
見落としがあったり、物事を理解する上で重要なポイントを発見できて、理解できたと実感を得られるでしょう。
学習するプログラミング言語を変える
プログラミング言語によりますが、以下のようなキーワードが出てきて理解に苦しんでいませんか?
・クラス
・インスタンス
・ポリモーフィズム
・継承
JaveやC#など、オブジェクト指向言語というものに分類されるプログラム言語で頻繁に出てくるキーワードです。
もし、オブジェクト指向言語からプログラミング学習を始めたのであれば、学習するプログラム言語を変えてみるのも1つの手です。
オブジェクト指向言語は難易度が高い言語になりますので、HTMLなど難易度の低い言語を学んでみてはいかがでしょうか。
難しい要素が減りますので、理解できないと苦しむことも少なくなります。
プログラミングが理解できない!どうしても無理な場合
前項にあげた方法でも、どうしてもやる気がおこらなかったり、理解ができない場合、強制的に学習する環境を作ったり、一緒に学ぶ仲間を作ることをオススメします。
プログラミングスクールに通う
強制力がなければ動けないタイプの人だったり、人に説明してもらわないとどうしても理解できそうにない場合には、スクールに通う手段があります。
費用はかかってしまいますが、その分取り戻そうとがんばれるものです。
プログラミング挫折率1位である、「不明点を聞ける環境になかった」という問題も解消できますので、環境としては最高なのではないでしょうか。
プログラミングスクールでは、プログラミングが学習できることはもちろんですが、その後の就職先についても紹介してくれるスクールがあります。
転職を考えてプログラミングを学習しているのであれば、一石二鳥ではないでしょうか。
無料のセミナー、勉強会に参加する
費用をかけたくない場合、無料のセミナーに通ってみたり、勉強会に参加する方法もあります。
他の人の勉強方法、プログラミングの理解方法に触れられます。
自分には持っていない新しいことを発見できるかもしれませんので、良い部分はどんどん吸収して自分のものにしてしまいましょう。
注意点として、変にプライドを持ってしまい、知ったかぶりするのはやめるべきです。
本当は理解できていないのに、周りからみたら理解している人だと思われるため、全くの逆効果です。
より自分を苦しめることになってしまうでしょう。
ハローワークの職業訓練に参加する
厚生労働省が、再就職や転職を促すため、求職者支援制度というものを取り入れています。
毎月給付金を受け取りながら、就職や転職のために必要な知識やスキルを身につけることができる制度です。
職業訓練自体は無料で受講できて、訓練の種類にはプログラミングも含まれています。
訓練に限らず、就職先の紹介や、面接の対策など、様々な支援を無料で受けられますし、厚生労働省が取り入れているということで、安心感も得られるのではないでしょうか。
特に失業手当を受けられない方は、この制度を利用しない手は無いと思います。
プログラミングをやめてみる
プログラミングは特定の人にしか理解できないものではありません。
誰にでも習得可能なものですが、人には得意不得意があり、理解に時間がかかる人、かからない人がいるのは事実です。
不得意なことを伸ばすより、得意なことを伸ばしたほうが、あなた自身に有利に働くと思います。
プログラミングすることにゆずれない理由が無いのであれば、やめてしまうのも1つの手段かもしれません。
今まで学習してきたことはマイナスにはなりませんし、また興味を持ったら再開すればいいと思います。
まとめ プログラミングが理解できない時の対処法
プログラミングが理解できない原因、対策について解説しました。
分からないことが分からない状態になっているか、理解できた実感が無いことが、根本的な原因ではないでしょうか。
プログラミングが理解できない場合の対処法についてもおさらいしてみましょう。
- 分からないことを書き出して見える化する
- 全てを理解しようとしない
- 見方を変えてみる
- 人に教えるつもりで理解する
- 学習するプログラミング言語を変える
プログラミングを学習すると、論理的思考が身に付きます。
論理的思考を身につければ、プログラミングに限らず、あらゆる場面で能力を活かすことができるでしょう。
プログラミングを理解できないと苦しむのではなく、現状を明確にして、前に立ち塞がる大きな壁を小さな多くの壁にくずして、小さな壁を1つずつ乗り越えて、プログラミング学習に取り組んで欲しいです。