2010年11月29日月曜日

プログラマを目指すなら本を読もう

プログミング技術を身につけるにはINPUTとOUTPUTの両方が必要です。INPUTは知識を身につけることで、OUTPUTは実際にプログラミングすることです。で、知識を身につける手っ取り早い方法は、本を読むことです。

以下のサイトで、プログラミング関連の本が紹介されているサイトへのリンクがいくつかあります。



プログラマを目指す人が本を読む前に読むべきネットの記事(もとまか日記)

そのリンクを紹介した上で、以下のように話が続きます。
ただ、一つだけ気になったのが、これからプログラムを始めて、アプリを作ってみようと志してる方が、これらの記事を読んだ時に果たしてどう思うんだろ?ってことでした。「こんな高価で難しそうな本を読まないといけないの・・・?」とか、思ってしまわないだろうか、と。

プログラマになりたいと考えている人がいきなり尻込みしてしまうのでは?という内容ですね。そのような人に向けて、「本を読むより手を動かせ」的なことが書かれた記事の引用が続くのですが、これに対する辛口意見が以下のサイトにありました。


プログラマーになるには(カレーなる辛口Javaな転職日記)


これらの内容に対して、私なりの考えを述べたいと思います。


「こんな高価で難しそうな本を読まないといけないの・・・?」
高価だとはぜんぜん思わないけど,答はYESです.


リンク先で紹介されている書籍の良し悪しは取り合えず脇に置いて、プログラマを目指す人は名著(良書)をしっかり読むべきか?という問いに関しては私もYESと答えます。ただし、プログラミング初心者がいきなり名著に手を出すべきか?と問われればNOと答える場合もあります。

名著と呼ばれるものの中には、事前知識のない初心者には敷居の高いものも少なくありません。自分の目指す分野に関連する名著にはいずれ手を出すべきだとは思いますが、最初は初心者向けの本で構わないと思います。

書店やAmazonなんかで何冊か自分に合いそうなものを漁ってみてください。


次に、INPUTとOUTPUTに関する話です。

私はたくさんの本を読んで、たくさんのことを勉強することにあまり意味を感じていませんし、そうした人ができる人だという印象も持っていません(物知りは所詮物知りです)。

 これに対し、以下の意見。

無知はしょせん無知です.無知は無能で馬鹿の証明です.馬鹿な奴に仕事は任せられません.単なる物知りなだけで仕事のできない奴もいるけれど,無知で仕事のできる奴はいません.

まぁ、本を読んで知識を身につけるということを軽視するような発言があったため、それに対する反論ですね。

本を読んでばかりで手を全く動かさないのは問題だ・・・という内容であれば私も納得だったんですが、多くを勉強することに意味は無いという意見には賛同しかねます。

おそらく、言葉足らずで誤解を招く表現になっただけだと思うのですが、無知はやはり無知でしかありません。

クイックソートで感動するには、クイックソートが必要な状況に出会った経験が必要なのです。

必要性を感じてから、その後で学べばいいという話ですが、それでは体系的な知識を得ることはできません。それに、過去勉強したクイックソート内容についてプログラミングをしていく中でその必要性を理解して感動するということもあるはずです。

・必要性を知る→勉強する
・勉強する→必要性を知る

この2つは共に大切なことです。

その順序が逆だから挫折する人が多いのだと思います(高校の勉強もそうですよね)。

経験的に必要だと感じたことしか学ばないのであれば、知識の絶対量が不足します。「経験から必要性を学ぶ」ことは確かに大切です。しかし、それが「たくさんの本を読み、たくさんの勉強をする」ことを否定する理由にはなりません。どちらも大切なのです。

真に無知な人はクイックソートが必用な状況に出会っても,それがソートアルゴリズムの問題であるということにさえ気づかない.クイックソートが必用な状況で「こういう時にはクイックソートを使えばいいんだ!」と閃くためには,前もって数多くのアルゴリズムを学んでおく必用があるのです.

事前知識が不足していると、せっかくクイックソートで感動できる場面にであえても、それと気づかずスルーしてしまう可能性もあります。これはモッタイナイ。

むしろ「どこまで勉強せずにゲームを作れるか」と逆に考えた方がいいと思います。

これが勉強ばかりしていて全く手を動かさない人に向けたことばなら同意できます。しかし、たいして本を読んでない勉強してない人に向けての発言なら不適切と言わざるをえません。文脈から判断すると後者ですよね。

怠け者の論理だし,それでいいプログラムができるわけでもない.努力する人なら専門書の5冊や10冊は読むし,読まない人は理由を付けては勉強をサボる怠け者ってだけ.

勉強しない人達に「どこまで勉強せずにゲームを作れるかを考えろ」なんて言っちゃったら怠けるだけですね。

と言いますか、手を動かす人って本も読むし勉強もするんですよね。で、本読まない勉強しない人に限って手も動かさない・・・と。


そもそも今回の話って、本を読むことに尻込みしている人達に向けたもののはず。とすると、怠けることの口実を与えているように聞こえてしまうのは無理ないかと思います。


ホビープログラマ向けのエントリーなら私もスルーしてましたが、「プログラマを目指す人が・・・」とタイトルに書いてありますので、そのプログラマを育てる講師の立場としてはちょっと待てと一言いいたくなってしまいました。