独学の落とし穴:その1

―― “私は本からすべてを学んだ。” ―― Abraham Lincoln(エイブラハム・リンカーン)

 独学する上で気を付けるべき落とし穴が2つあります。1つはインターネットに頼りすぎることです。

 インターネットには、プログラミング言語のインストール方法から作ったプログラムを売っていく方法まで、探せばどんな情報でもタダで見つけられます。しかし見つかる情報の多くは、「一般的な解決方法ではないけど、私がうまくいった方法」です。自分にとって本当に重要な情報にたどり着くには情報の選定が必要で、選定眼を養うには基礎知識が必要でしょう。特に最初のうちは、むやみに検索することは得策ではありません。

 一方で、本は著者によって情報が選定され、体系立ててまとめられています。インターネットで表面的な情報を検索して時間を浪費するよりも、基礎や原理を解説してくれる本のほうがよっぽど効率よく技術を身に付けられます。とは言え、自分に合わない本を選んでしまうこともあります。合わないことに気が付いたら、それ以上読むことに無駄な時間をかけず次の本を探しましょう。

 自分に合った本を選ぶには、目次を読んだり、書店で立ち読みするなどして知りたいことが書かれていそうかを確認しましょう。この本は自分が進む方向に合っている!と思えたら、その1冊を徹底的に読み込むことをお勧めします。

写真1●自分に合った本を見つけたら、徹底的に読み込もう
[画像のクリックで拡大表示]

独学の落とし穴:その2

―― “実際のところ、良いプログラマーと悪いプログラマーの違いはデータ構造を重要であると考えるかどうかにあると言いたい。悪いプログラマーはコードそのものに気を使ってしまうが、良いプログラマーはデータ構造とそれらの関係性について気を使うものだ。” ―― Linus Torvalds(リーナス・トーバルズ)

 落とし穴のもう1つは、基礎や原理よりも結果を求めがちになることです。

 私がプログラミングを学び始めた頃は、インターネットはありませんでしたが、基礎を軽視したことで失敗したことが何度もあります。高校卒業後に進学した大学では情報工学の基礎を学ぶ機会がたくさんありましたが、データ構造やアルゴリズムの授業は(重要な知識でしたが)それほど楽しいものではなく、真剣に学んではいませんでした。それよりも、自宅でコンピューター画面上の2台の戦車(というか青と赤の四角形)同士を戦わせる単純な自律プログラム(今だとこれもAIと呼ばれるのかも)を書くことを楽しんでいました。

 戦車の自律プログラムを書いていると、プログラムがだんだんと複雑になっていき、弾を撃つ方向を決める計算にも時間がかかるようになっていきました。そのとき必要だったのが、データ構造とアルゴリズム、そして計算量の知識です。それまで重要だと思っていなかった授業での知識が突然必要になり、教科書を引っ張り出して勉強し直しました。

 独学で学んでいると表面的な結果を求めがちですが、基礎理論や原理原則はやはり重要です。そこから始める必要はありませんが、ときには基礎理論や原理原則にも目を向けて、自分が書いたプログラムにその知識を使えなかったかと振り返ってみることも必要です。