プログラミングの学習過程で、多くの曲がり道に出会いました。一部の曲がり道は短く、入ってすぐに出てきて、経験を積むことができました。一部の曲がり道は難しく、経験豊富なプログラミングのベテランでも失敗することがあります。しかし、もっと恐ろしい曲がり道もあります。前半はまっすぐで、後半に大きなカーブがあります。あなたは自分が大通りを歩いていると思っているかもしれませんが、実際には逆の方向に進んでいることに気づかないかもしれません。
私が知っている「見えない曲がり道」の一つは、学生の思考でプログラミングを学ぶことです。
- ノートを取る vs 技術チュートリアルを書く
私たちが 10 年以上の学生生活で知識を得る方法は、次の手順に従っています。教科書のチュートリアル例を学び、課後の練習問題を解く。これを繰り返し、試験に合格するまで続けます。
多くの学生は、この学習方法をプログラミングにも適用しようとします。基本的な構文を学び、いくつかの小さなチュートリアルを練習し、それを繰り返してプログラミングをマスターしたと考えます。
プログラミングの学習中に、ノートを取る習慣がコードのコピーに変わり、変数名や if 文の改行、関数名などがそのまま教科書の例になります。
初期段階では、コードのコピーは良い入門方法です。毎回コードが正常に実行されることで、プログラミングの自信が大いに高まります。しかし、コピーし続けることは明らかに合理的ではありません。技術チュートリアルを書くように調整する必要があります。
技術チュートリアルを自分で書くと、必然的に全体のプロセスを再確認し、自分で操作をやり直すことになります。以前の学習過程で見落とした点に気付くことが容易です。それを理解するために関連する情報を調べ、知識を補完します。
また、自分が書いた技術チュートリアルはインターネット上で公開されるため、より多くの人に理解され、認められるようにするために、できるだけ明確に説明する必要があります。明確に説明する過程で、学んだ知識をより多角的に理解することができます。
- 未知を恐れる vs 未知を受け入れる
学生時代、私たちは常に学びたくてたまらなく、すべての難問を理解しようとします。学生は未知を恐れ、すべての不確定な問題に対して不安になります。問題がどの範囲に属しているのかわからない場合、焦りの状態に陥ります。
学習内容が制限されているため、プログラミングの学習中には常に解決策が見つかります。教科書やクラスメート、教師、インターネットを通じて明確な答えを見つけることができます。理解できない場合でも、その知識が明確な範囲に属していることは明確です。ただし、自分の問題が解決できないだけです。
しかし、プログラミングは異なります。多くのプログラミングの問題は解決策がなく、誰も解決方法を知りません。
プログラミングを上達させるためには、一定の未知を受け入れる必要があります。
未知は永遠に存在するものであり、これは客観的な現実の法則であり、人の意志によって変えることはできません。客観的な現実と戦うことは無駄な行為です。
また、解決策のない問題もあります。解決策のない問題に時間とエネルギーを費やすことは無駄です。一部の未解決の問題は、現在の知識が不足しているために発生します。このような時には、一時的な未知を我慢し、後続の内容を学び続けることで答えを見つけることができます。
- 順序立てて進む vs 繰り返し振り返る
教科書の内容は段階的に進んでいきます。前の A の内容を理解しないと、後の B の内容は理解できません。
未知の存在のため、プログラミングの学習中にはいくつかの問題が私たちを阻止します。私たちがするべきことは、まずそれを記録し、一旦置いておいて前に進み、新しい知識を学び、新しいスキルを練習し、新しい領域に触れ続けることです。経験を積み重ね、成長し続け、時折振り返ってみることで、再びそれを見直すことができます。新しい知識を学び、新しいスキルを練習し、新しい領域に触れるときに突然明確になることがあります。「ああ、これが実際の状況なのか」と。