遅延評価勉強法だと得られなかったもの

ハッカーは遅延評価勉強法をするものだそうです。確かに僕の知ってるすごい人達は、皆必要になった時の吸収力が半端無くて、それを紹介した時には自分の方が詳しかったはずなのに、あっという間に追い抜かれてしまいます。

僕はハッカーになりたいけどハッカーじゃない人間ですが、やはり大上段から入って時間をかけて勉強していくのは嫌いなので、基本的には遅延評価勉強法をしてきました。でも言葉どおりに「必要になるまで」勉強しなかったら、得られないものが多すぎるなと最近感じてます。それは「普遍的な知識」です。

自分の仕事や興味だけに従っていると、訪れる機会は必然的に偏ります。たとえばwebアプリの開発ばかりやっていれば、LLやHTTPや通信の知識は幅広く身につくかもしれませんが、スマホ開発や仮想環境やハードウェアなどはなかなか身につきません。必要にならないんだから勉強しなくていいんじゃない?というのはもちろんひとつの考え方ですが、僕は計算機に関することをもっともっと知りたいと思っているので、これじゃダメだと思いました。

「スマホだって所詮は計算機なんだから、基本的な考え方は変わらないから取り立てて勉強しなくてもいいよ」と言う人もいます。でもこれも違う。サーバサイドの開発ばかりやってる人はバッテリの消費とか考えないですよね。SDKみたいなのも毛嫌いする人がいますが、レールに乗ることでものすごいメリットを享受できるというのは実際にやってみないと理解しがたいものです。

そして何より得難いものというのは、異なるものを学ぶことによって得られる、普遍的な知識です。複数の異なるタイプの言語を学ぶことで得られる「プログラミング言語というもの」に関する知識、様々な仮想化技術を学ぶことで得られる「コンピュータ・OSとはなんなのか」という感覚、組み込み・スマホ・ブラウザ・サーバサイドと見ることで身につく「ソフトウェアを提供する」という仕事、webアプリ・APIサーバ・バッチ処理・ジョブキューといった「コンピュータに仕事をさせる」方法論、ステートレスなアプリケーションやデータをロスしてはいけないデータベースを通じて学ぶ「データやプロセスのライフサイクル」などなど。

言葉には到底うまく書き起こせていないのですが、そもそも言葉に書き起こせないようなものが普遍的な知識なのかもしれません。こうしたものを得るには遅延評価を待っていては遅すぎる、もしくは一生やってこないかもしれません。普遍的な知識もまた日々更新されていくものだから、今本当に必要な普遍的な知識を身につけるには、今勉強しておくしかない気がしてます。そして、その「普遍的な知識」の積み重ねによって、さらにメタで強力な「普遍的な「普遍的な知識」」が身についてくるものなのかな、と最近は思ってます。

ハッカーと呼ばれる人たちは吸収力がものすごい高いため、普遍的な知識を見出すスピードも半端ないので、こんなに積極的に頑張らなくても自然と「普遍的な「普遍的な知識」」を身につけて行けるのかもしれません。僕みたいな凡人はとりあえず手当たり次第に勉強していくことで、彼らの吸収スピードに対抗するしかないのかなと思っているのですが、こうしていると全然モノを作ることができなくて差は広がる一方だったりします。でも、たくさん知りたいというのも一つの目的なのでまぁそれはそれでいいかなと。

あと、そもそも「必要」を感じる感性が鈍いんですよね。だから、積極的に手を出していかないと、遅延評価すら起こらずに蛸壺で仕事をしてしまいがちです。今はそれでいいかもしれませんが、数年後にはきっと後悔するのでとりあえず手を出していくのは続けて、自分の「必要」を逆に見つけて行きたいと思います。

参考

コバタ 14-01-09 (木) 13:05

今必要なことはたしかに少ないかもしれませんが、自分の興味があることをやっていけば、それだけで時間がなくなりませんか?
例えばwebアプリだって、興味があれば仮想環境やハードウェアの勉強に結びつけることは、今なら十分可能なはずです。

自分もWeb上で機械学習、ニューラルネットや音声、画像解析など興味ある分野を学んで作ってきました。
あちこち手をだなさくても、自分が得意な環境から発展させて、気持ち的に楽に広く学ぶことは出来ると思います。

一般的でない分大変かもしれませんが、両分野の能力が高まって一石二鳥ですし、
Web上でいろいろした経験があるというのは、この先間違いなく大きなプラスになるのではないでしょうか。

Jannevar 14-01-09 (木) 18:46

主さんの主張も、コバタさんの主張も共感できる。
感覚的に言えば、コバタさんに同意したい。

フラクタル次元的に見れば、
「普遍的な知識」はどの分野でも同じだと思う。