その落とし穴とは、『こだわりすぎる』ことです。
プログラミングの学習の落とし穴を避けるには、「こだわる部分」と「こだわらない部分」を、はっきり分けて考えることが、非常に重要です。
今回も家づくりに例えてみましょう。
住宅には何万点という部品が使われています。それぞれの部品の仕組みを、一つ一つ気にしていたら、家は完成しません。
図面の通りに、窓は窓の場所、ドアはドアの場所に取り付けるだけです。取り付けた部品は、それぞれの場所で、ちゃんと機能を果たします。
プログラミングも同じです。プログラミング言語には、数百から数千の部品(ライブラリ、クラス、関数など)が用意されています。
用意されたクラスの仕組みを、一つ一つ気にしていたら、いつまでたってもシステムは完成しません。
例えば、Java言語では、クラスのソースコードが配布されているので、中を見ることができます。
クラスがどのような仕組みで動いているのか、ソースコードを読んでみることは、勉強になります。また優秀な人が書いたプログラムの書き方も参考になります。
でもクラスの数は膨大なので、全てを解読するのは不可能です。
しかも、あるクラスのソースコード中には、別のクラスが使われているので、調べることが芋蔓式(いもづるしき)に増えてしまいます。
だから細かい部分を気にしていたら、いくら時間があっても足りないのです。
家づくりでは、窓の仕組みや原理を一から理解しようとする人はいません。サイズやデザイン、機能などを考えて、カタログから選び、取り付けるだけです。
これから窓を発明しなくても、市販されている窓はたくさんあります。既製品を使うことで、安くて早く家を作ることができます。
でもプログラミングでは、普段常識で知っていることでも、ついやってしまうのです。
プログラミングでは、時間以外のコストがほとんどかからないし、少し頑張ればできそうだからです。
特に初心者の中には、詳細な仕組みまで知りたがる人がいます。「100%理解していないとできないのではないか」という気持ちになるのでしょう。
また、既に用意されている機能まで、知らずに作ろうとする場合もあります。
プログラミングでも既存の部品を使うことで、短時間で簡単にシステムを開発することができます。
そもそも世の中は、私達の知らないことばかりです。自動車の部品の仕組みを理解して運転している人は、ほとんどいませんよね。運転の仕方を知っているだけです。
「全てを知ることは不可能」だと気付けば、プログラミングを学ぶ時の気持ちが、だいぶ楽になります。
したがって、初心者の内は、プログラミング言語側で用意された部品については、あまりこだわらずに、使い方だけを知っていれば十分です。
使い方とは、「どんな引数をいくつ渡すのか」とか「どんな戻り値が返ってくるのか」といったことです。
逆にこだわる部分とは、クラスや関数を使って、あなたが実現したい処理を行なえるように、きちんとプログラムを組み立てることです。
そのほうがずっと大事なのです。
プログラミング初心者の内は、細かいことを気にせず、プログラムの組み立てに集中したほうが、上達が速くなるし、途中で挫折することがありません。