目次
はじめに
プログラミング学習は挫折率が非常に高いと聞くが、挫折する理由はたいてい決まっていると思われる。そこで今回は、実体験をもとにプログラミング学習の挫折ポイントをまとめてみたい。
ちなみに本サイト管理人は一応C/C++, Java, C#, Python, R, VBAなどをひと通り実務で使ってきた経験がある。
挫折しやすい人の特徴:9個ある
結論は以下の通り。
- 暗記しようとする
- 作りたいものがない
- 手を動かそうとしない
- いきなり書籍で独学する
- いきなり難しい言語を学ぶ
- 綺麗なコードを書こうとする
- 自力で環境構築しようとする
- 初めから全てを理解しようとする
- エラーを全て自力で解決しようとする
さっそく順番に見て行こう。
1.暗記しようとする
文法など、書き方を一字一句暗記しようとする人は挫折しやすい。ライブラリの使い方や書き方も含め、ノートに書いて覚えようとする人もいるが、これも効率が悪い。
その主な理由は以下の通り。
- 暗記していなくても、いまどきネット検索すれば答えは出てくる
- 暗記することを目的にするとたいてい暗記できない
- 暗記できていないことがわかると、そのたびに心理的ダメージを負って、結果的に学習するのが嫌になる
- 手を動かしてたくさんコードを書いた結果、頭で覚えたというより手が覚えた、という状態が望ましい
プログラミングは仕事でも趣味でもカンニングOKなので、カンニングしないで済むようにがんばるのではなく、むしろうまくカンニングできるようにがんばる方がよい。
2.作りたいものがない
プログラミング学習それ自体が目的化しており、プログラミングを使って何をしたいのか、何を作りたいのか、がはっきりしていないと挫折しやすい。
その主な理由は以下の通り。
- インプットばかりでアウトプットがおろそかになる
- 自分で考えながらコードを書くモチベーションが少ない
「写経」という勉強方法も、その言語を初めてさわる日はそうやって学ぶしかないが、できるだけ早いタイミングで写経をやめて、自分で作りたいものを作り始めないといけない。
3.手を動かそうとしない
これは明らかだろうが、挫折しやすい理由は以下。
- 自分のプログラムが想定通りに動いたときの達成感が得られない
- 実際にコードを書かないとスキルが伸びないため、成長実感が得られず、モチベーションが保てない
- スキルが伸びないと、たくさん調べないとコードを書けない状態が長く続くので、それに耐えられなくなりがち
手を動かすことでしかプログラミングは習得できない。
4.いきなり書籍で独学する
これはやりがちである。挫折しやすい理由は以下。
- 環境構築は初心者が一人でやってもたいていうまくいかない
- 統合開発環境などのツールの使い方が、書籍ではどうしてもわかりにくい
- たいていエラーを自分で解決できず、そこから先の学習に進めなくなる
- 自分で解決できたとしても、エラーへの対処に何時間もかかり、「学習が進んでいる感」が得られない
- 初心者の学習中はたくさんの疑問が生じるが、それを質問できる相手がいないため、上達するチャンスを失いやすい
プログラミング自体が初めてという人は、書籍での独学より以下がおすすめ。
- Progateなど、環境構築が不要なWeb上の教材で独学
- UdemyやYouTubeなど動画教材で独学
- 身の回りで教えてくれる人を見つける
- オンラインかオフラインかによらず、超初心者の間だけスクールに通ってみる
5.いきなり難しい言語を学ぶ
これは学生にありがちである。なぜなら大学で学ぶプログラミング言語はC言語など、初心者には難しいものが多いからだ。初心者だとそもそも言語によってどれくらい難易度が違うのかもよくわからない。挫折しやすい理由は以下。
- ポインタなど、初心者泣かせの概念はすぐには理解できないことが多く、モチベーションが持続しない
- 学習中に発生するエラーを解決する難易度も高いことから、エラー解決に時間がかかり、学習するのが嫌になる
何か1つでもプログラミング言語を習得すると、2つ目以降の言語は比較的容易に身に付けられる。最終的に習得したい言語があったとしても、1つ目の言語はやさしめの言語を選択するのが賢明だ。
6.綺麗なコードを書こうとする
これもたまにあるのだが、写経のフェーズが終わり、自分の作りたいものを作り始めると、自分のコードが冗長で汚いのでは、と思ってしまうことがある。当然ながら、将来的に上達していくためには、綺麗なコードを書こうとするのは必須の心構えなのだが、初心者のうちはあまりコードや設計の美しさにはこだわらない方がよい。その理由は以下。
- 綺麗な書き方を考えたり調べたりして時間が過ぎていき、「学習が進んでいる感」が得られない
- 自分のプログラムが想定通りに動いて達成感を得る、という成功体験の回数が少なくなる
- 自分で書くコードの絶対量が不足し、上達スピードが遅くなる
- 初心者がいきなり綺麗なコードを書けるわけではないため、そもそも目標設定として少し無理がある
7.自力で環境構築しようとする
これも明らかだろう。環境構築は初心者にとっては非常に難しい。出てくるエラーも環境によって変わるので、ネット検索しても、自分と同じ状況にハマっているケースが見つからなかったりする。オンラインかオフラインかによらず、さっさと誰かに聞いた方がよい。
8.初めから全てを理解しようとする
- どうしてそのような挙動を示すのか
- そのような書き方をしないといけない理屈や背景は何なのか
といったことを初めから理解しようとすると、学習がなかなか進まないので挫折しやすい。理解できないことがあるたびに心理的ダメージを負ってしまい、学習が継続できなくなってしまう。
将来的には背後にある理屈を自分なりに理解することは重要だと思われるが、初めのうちから全部を理解する必要はないし、そもそも全部を理解などできるわけがない。
9.エラーを全て自力で解決しようとする
これは7.の環境構築と同じで、初心者が自分で自分のエラーを直すにはかなり時間がかかることが多い。将来的には、エラーへの対処は自力でできるようにならないといけないわけだが、初心者のうちからそれができる必要はない。誰かに聞いてさっさと解決してしまい、どんどん学習を進めていった方がよい。
おわりに
プログラミングで挫折しやすい人は、他の分野でもだいたい同じな気がする。
挫折しやすい人、と言われると、「我慢強くない人」などがイメージされるが、もちろん我慢強くない人も挫折しやすいだろうが、むしろ逆な気もする。
まとめると、
- 完璧主義の人
- 初心者なのにプライドが高い人
- 苦労をいとわない、頑張り屋の人
といった人は要注意である。頑張り屋の人は辛い状況でも耐えようとするが、人間の我慢にも限界があるため、耐えようと頑張ったが最終的には挫折してしまった、ということになりやすい。むしろ辛い状況を避けて、できるだけ楽して学習を進められるように工夫する、というスタンスの人の方が挫折しにくいだろう。
あわせて読みたい
【感想あり】おすすめのUdemy動画講座:機械学習・データサイエンスに必要な数学とPythonの入門編【随時更新】 | Quant College
【感想あり】おすすめのUdemy動画講座:機械学習編【随時更新】 | Quant College
C++を学ぶのにおすすめの本【随時更新】 | Quant College
クオンツ業務で必要なプログラミング言語は? | Quant College