【プログラミングで挫折】勉強に才能は関係ない
プログラミングをやってみようと思ったものの、構文やアルゴリズムを理解できずに、考え込んでしてしまうときってありますよね。
誰しもいくら考えても理解できないときは必ずあります。
今回はプログラミングで挫折しそうなとき、乗り切った方法を共有したいと思います。
プログラミングが難しいと感じる理由
プログラミングが難しいと感じる理由は単純にその作業に慣れていないというのが理由です。
初心者の段階であれば、文法など記述の仕方に対する「慣れ」が足らず、ある程度構文に慣れたとしても他の人が書いたコードを読むことに対する「慣れ」が足りないためです。
- 文法など記述の仕方に慣れていない
- 他者が書いたコードを読むことに慣れていない
決して「自分は能力が低いのかな...?」と簡単に考えないようにしてください。
初心者のときはすべてが未知の情報
当方は、プログラミングの準備段階でつまづいてしまった人間の一人です。
プログラミングの環境を準備するにしても、今まで触れたことのない情報にさらされるため、理解と作業が遅くなって当然なのです。
この段階ですんなりと準備できたという人は、既に何らかの似た作業を必ず行っているはずです。
似た作業を行っていないとしても、似た考え方を必要とする何らかの情報に触れているはずです。
他の人と比べ、自分の理解や作業が遅いとき「自分は他人と比べて能力が低いのではないか?」と劣等感に襲われることがありますが、それは結論を急ぎ過ぎかもしれません。
まず、理解や作業が遅いときは、それに慣れまで何度も反復することが大事です。
作業の早い人というのは、過去に要領を掴む「何か」を行っていたために、現時点であなたとの差がついているだけなのです。
「やっぱり才能のある人には勝てない」という心配が脳裏を過(よ)ぎることがありますが、感情に逆張りして反復していれば突破口は必ず見えてきます。
そして、どうしてもしんどくなったら、また気が向くまで休めばOKです。
他の人が書いたコードが読めない
他の人の書いたコードというのは非常に難解です。
半年前に自分が書いたコードでさえ意味が解らないことがあります。
プログラムの書き方そのものに慣れてきた人は、自分でプログラムできるけど、他人のコードが読めないという壁にぶち当たると思います。
考えても考えても「なぜこのように記述したのか?」と、頭の中が混乱するはずです。
この状態のときは、アルゴリズムの詳細を知ろうとせず、「仕組みはよく解らんけど、こういう機能を実現したかったのね」と大雑把にどんな機能かを掴むようにすればOKです。
こちらも、繰り返し他人のコードを読みまくっている内に、いつの間にかできるようになってきます。
人間の能力はあなた自身が思っている以上に高いので、安心して反復を続けてください。
プログラミングは挫折しそうなときがチャンス
どうしても理解できない問題って、先が見えない感じがして嫌ですよね。
実は、心が折れそうなときこそチャンスだったりします。
これは能力が上がる過渡期であり、勉強や作業を止めたくなるときに、あえてそれをやり続けることで思いもよらない発想が浮かぶのです。
まさに先の見えない暗闇に光が差す瞬間です。
とはいえ、あえてやり続けたけれど、どうしても答えが導き出せないというときはその作業を止めましょう。
そして、一呼吸終えてから再挑戦してみてください。
当方が大学生のときにお世話になった先生がこのようなことをいっていました。
恩師「誰でも情報を繰り返し頭に叩き込むことで、どんなに難しい理論であっても必ず理解できます。一度で理解できなくても、時間を置くと不思議とアイディアが浮かびます。」
その日に理解できなかったとしても2、3日後に理解できることがあります。
どうしてもすぐに理解できないときは、このように一呼吸おいて理解に努める事も大切です。
これはスランプのときの対処法です。
スランプのときは、今取り組んでいるものに一切手をつけず、やる気が出たときに再びやってみることで克服しますよね。
深く考えすぎず、どうしても難しいときはプログラミングを忘れることも大切です。
プログラミングに才能はあまり関係ない
プログラミングに才能はあまり関係ないと思います。
というのも「頭の回転が速い」と感じる人はあなたの周りにもいると思いますが、彼らは以前に経験した考え方や概念を組み合わせているだけです。
いかに、過去に難しい問題を考える訓練をしたかの差でしかありません。
しかし、その差は大きく、習得が難しいことであり、尊敬すべきことでもあります。
やはり、理解できるまで作業を繰り返すことが何よりの近道ですよ。
しかし才能という壁は存在する
とはいえ、プログラミング能力に完全に才能が関係ないわけではありません。
人間は生まれ持った能力によって得手・不得手があり、プログラミングが苦手と感じる人もいることは確かです。
また、生まれつき論理を組み立てたることに長けた人は確かに存在します。
そういった能力を持った人の上達の早さを間近で見ると、劣等感を感じてしまうのは仕方なのないことです。
しかし、その人は過去にプログラミングの経験を積んでいるかもしれません(言わないだけで)。
また、未経験であっても、プログラミングで必要な考えを使う別の経験をすでにしているだけかもしれません。
いずれにせよ、できるまで反復した結果を見ていないのに「才能がない...」とすぐに断定することこそもったいないといえます。
才能という壁を逆に利用する
世の中の多くの人は何か新しいことを始めてもすぐに挫折してしまいます。
なぜなら、最小限の努力で最大限の結果を出そうと近道を探そうとするからです。
しかし、そんな近道は存在しません。ある意味で「ズル」をしようとしている心構えなので逆に遠回りする羽目になります。
この人間心理を逆に利用します。
多くの人が目先の苦しさに耐えられずに娯楽に逃げる中、自分だけはダラダラとでも継続するのです。
これだけです。
そして、反復を継続した結果、それなりに能力が身についたなら少なくても「才能がないわけではない」状態になれます。
人間は鍛(きた)えれば鍛えた分だけ、能力が人並み以上になってくるもので「やってみれば意外と何とかなるもんだ」という境地になれさえすればもうこっちのものです。
「習うより慣れろ」と「継続は力なり」の終着点は同じ
「習うより慣れろ」と「継続は力なり」は、意味を確認するとそれぞれ違う定義が書いてあります。
しかし、これらに共通するところは、作業や勉強などを繰り返すことで徐々に慣れて行き習得できるということです。
これらの ことわざ・標語 は、それぞれ別な形で生まれた言葉ですが、創られた経緯は似たような経験を基にしていると感じます。
プログラミングに限らず、物事がなかなか上達しないと悩んでいる方は、慣れるまで繰り返せばOKです。
習得がみんなより遅かろうが、他のみんなは以前に似た経験をしていると割り切ることが大切です。
心無い人は、「才能がない」の一言であなたをけん制するかもしれませんが、あなたが実力をつけて少数の既得権が危うくなることへの単なる「恐れ」のようなものなので気にしなくてOKです。
「習うより慣れろ」
習うより慣れろとは、人や本から教わるよりも、自分が練習や経験を重ねたほうが、よく覚えられるということ。
出典:故事ことわざ辞典
「継続は力なり」
今現状としては実力不足でも、くじけずに訓練していけば、いつかは大成できる。
出典:コトバの意味辞典
どんなに辛くても続けてください。それだけで、能力は少しずつ上がっていきます。
能力向上の実感はないとしても、気がついていないだけで考えた分だけ思考力は上昇します。
理解の仕方は2種類存在する
物事の理解は、2種類存在するのではないかと思います。
それは...
- その場で理解できたと分かる理解の仕方
- 理解したと後で気づく理解の仕方
1. の場合は、比較的簡単で具体的にイメージしやすい問題に接したときに起き、
2. の場合は、イメージしにく抽象的な内容の問題に接したときに起こる、
と経験を通して感じます。
もちろん、どこかの専門機関の研究によって導き出された答えでないので、違った意見・見解もあると思います。
その場で理解できたと分かる理解の仕方
その場で理解できたと分かる理解の仕方は、小学校の算数の問題を解くときがいい例です。
というのも、算数は数学と違って「変数」といった抽象的な数は使用せずに、一貫して具体的な数値を計算するからです。
計算方法さえ教われば、すぐに理解できたと感じるはずです。
理解したと後で気づく理解の仕方
理解したと後で気づく理解の仕方は、数学を勉強しているときがいい例です。
数学は、「変数」や「等式」を使って具体的な数値を使わずに、数式によって形作られる概念を理解しなければなりません。
数学を使ってどのような物事を成し遂げなくてはならないのか、を考えないといけないからです。
実は、この作業がプログラミングにも共通しています。
こういった抽象的な概念は、兎に角回数を熟(こな)して抽象的な物事を自分自身の経験によって具体化しないといけないのでの理解に時間がかかります。
それは同時に、理解に達するまでの間、辛い作業を強いられるということです。
この段階で脱落してしまう人が多いのではないかと思います。
しかし、くどいようですが、この理解できない壁を乗り越える簡単な方法は、兎に角繰り返すことです。
でも繰り返す(習慣化)って難しい...
とはいえ「繰り返しが大切」と述べてきましたが、そもそも「繰り返すこと = 習慣化」ってかなり大変な作業です。
頭では分かっていても、心が追いついてくれませんよね...。
なので、いきなりガンガンとプログラミングの作業に打ち込むのではなく、ダラダラでもいいのでゆるく継続すること試してみてください。
「ゆるく継続する」とは毎日勉強や作業をするのではなく、例えば「昨日はプログラムのこのアルゴリズムを理解できたから、今日はサボろうっと」という具合に始めてみようということです。
もちろん、これについては賛否が分かれると思います。
ダラダラと継続するということは、シビアに継続するよりも結果が出るまでに時間がかかってしまうためです。
しかし、自分のペースでゆっくりでも継続することで「確実」に習慣化されるのでやる価値は十分にあります。
やはり、何事も「長期目線」が大切になってきます。
ダラダラでも継続することで習慣化に近づいて行くので、諦めないことが何よりの近道です。
どうしても難しいときは誰かに頼るのも手
どうしても難しいときは、他の人に教えてもらうのも手の一つです。
なぜかというと自分一人で突破口を見つけるよりも既にプログラムに精通した人に頼ることで時間を短縮できるからです。
もちろん、長期目線で勉強に取り組むのがベターですが、
「そりゃ長い目で勉強したいけど、今は悠長(ゆうちょう)なこと言ってられない状況...」
とか
「手に職をつけて転職を急ぎたい」
といった場合には検討する価値は十分にあります。
本来自分で突破口を見つけるまでに必要な時間を圧縮できるのは大きいですからね。
なので、プログラミングの勉強に「ネオカレッジ」というサービスを使ってみましょう。
ネオカレッジは、サポート期間が無期限であることが特徴で、プログラミングで分からないところを無料でいつまでも相談できるようになっています。
つまり、プログラミングのように身につくまでに長い時間がかかる勉強には最適なのです。
プログラミングは、長期間勉強することになるので疑問が浮かぶ度に相談できるのは助かりますよね。
また、無期限でいつでも相談できるということは、長く利用すればするほど料金が安くなることを意味しています。
そして、相談しながら教えてもらったことを反復することで、これから先の見通しだったり、考えがまとまったり、と何か答えが見えてくるでしょう。
その何かが見えた瞬間に、劣等感や焦燥感といった心のモヤモヤが吹っ切れてスッキリするはずです。
【ネオカレッジ】69,000円で永久サポートのプログラミングスクール
さいごに
プログラミングでも何でもそうですが、繰り返しを続けた人だけが生き残ります。
本当の勝者とは諦めずにその土俵に居座り続けた人間です。
それでは次回にお会いしましょう。