2016.11.07
K.U.

「ハッカーになろう」を読もう

なぜこんなブログ記事を書いたか

 大学生時代や、社会人になってから会社内や会社外でも、時々ですが「どうやってプログラミングを勉強すれば良いか」という質問を受けることがあります。
 自分自身は極々平凡なプログラマーですし、プログラミングを教える専門家ではないので、これに対する最適な回答を持っているとは思わないのですが、一応その時その時の考えを答えています。
 しかし、実際に質問をしてくる人の大半は、既に何かしらのプログラミング言語を勉強している人である場合が多いです。
 では何故このようなことを質問してくるのか? と一歩引いて考えてみると、おそらく質問の本意は「どうやってプログラミングを勉強すれば良いか」ではなく「どうやれば自分が思った通りに動くプログラムを作れるようになるのか」……つまり、実装の仕方ではなく設計の仕方を学びたいという質問なのだと思います。
 この質問を「良いプログラマーになるためにはどうすれば良いか」と解釈した場合、その回答になりそうな文書に1つ心当たりがありました。
 そこで今回のブログ記事では良いプログラマーになりたい方々の参考になれば良いなと思い、その文書を紹介したいと思います。

「ハッカーになろう」って何?

 ハッカーになろう(原題:How To Become A Hacker)とは、インターネット上に公開されている、その名の通りハッカーについての説明と、ハッカーになるために必要なことについて書かれた文書です。
 何を隠そうこの文書自体がハッカーたちの成果物の1つであり、原文は英語ですが日本語も含めた様々な言語に翻訳されているため、ネットにつながった国であればいつでも誰でも読めます。自分が大学時代に読んでためになった(そしておそらく今読んでもためになる)、ハッカーを目指す人には必読の文書だと思います。
 この文書の「基本的なハッキング技術」の最初の項にプログラミングが挙げられているように、プログラミングはハッカーの必須技能的な側面があります。言い換えると「ハッカーであるならばプログラミングができる=プログラマーである」とも言えるということです(厳密にはプログラマー=ハッカーであるとは限りません。ですがその説明を書いているほどブログ記事公開まで時間がないので、細かい話は上記リンクの文書を読んでいただければと思います)。
 そしてこの文書にはハッカーになる方法について書いてあります。そのため、この文書に沿った行動を取ればおのずとプログラミング能力が身に付くはずなのです……!
 もちろん、この文書に書いてあることが全部本当であるとか、これを読めば絶対ハッカーになれるというわけではありません。
 ですが自分はこの文書の内容が概ねその通りだと思いますし(ただし『禅』についてだけは若干疑問で、海外の方々が過剰な期待を抱いているんじゃないかと思います)、自分が知っている優秀なプログラマの人たちは概ねこの文書の「ハッカー的心構え」を持っている人たちなんじゃないかなと感じています。
 今の自分はどうかと言えば……、この文書で挙げられているプログラミング言語5つ(Python, Java, C/C++, Perl, LISP)は一応一通り触っていますし、VPSを借りたりRaspberryPiを買ったりしてLinuxサーバを動かしてもいますし、英語はちょっと苦手ですが、HTMLを書いたりもしているので、最低限必要なハッキング技術は身に付けられているんじゃないかと思います。しかしハッカー社会に十分貢献できているかというと微妙な気がするので、そこは今後もう少し頑張らないといけないなというところですね。

それはともかく

 本気でプログラマーになりたい方が近くにいるようであれば、読んで損は無いはずなのでこの文書をおすすめしてみてください。
 ただ、仕事でプログラミングを勉強する必要性があって仕方なくやっている、という方にはややストイック過ぎる内容な気もするので、軽々しくすすめられるものではないかもしれません……。そういう人は無難にIPAの基本情報技術者とかの資格取得を目指して、まずは広く浅くICTについて学習した方が良んじゃないかと思います。

 そう言えば最近、小学校からプログラミングを教えるようになるとかいう話を聞きました。
 しかし考えてみて下さい。
「英語を授業で教えるようになったらみんなペラペラ英語を喋ることができるようになるのか?」
 おそらくノーと答える方が多いのではないかと思います。なので
「プログラミングを授業で教えるようになったらみんなスラスラプログラムを書けるようになるのか?」
 という質問の答えもまたノーとなるでしょう。
 論理的思考能力を鍛える云々という話も、別にプログラミングじゃなくても、国語や算数でだって鍛えられる能力のはずでは……?
 と考えてしまい、小学校へのプログラミング教育導入には懐疑的なK.U.でした。

 K.U.

一覧に戻る