ソースを使え、ルーク

ホースでもいいぞ。

技術系、特にIT系はちょっと目を離すと浦島太郎になる。でもそこで新技術をブラックボックス扱いし、ただ使うことでキャッチアップしてるつもりになってると、発想からダメになって新しいことを思い付かなくなる。

なので根源的な理解は必ず必要になる。だからなんでも理解することにする…ものとする。ところが、理解するにしても、理解しやすいタイミングというものがある。初期は情報があんまり出てなくて、なんかすごいからみんなが使い始めてるだけ。理解しやすいかというとしやすくはない。

ところがところが、情報が整備されてからの後追いが楽かといえば、まったくそういうこともない。バージョンアップを繰り返して複雑化してから全体を理解するのは非常に大変で、初期の発想から追いかけた方が、まだマシだったりする。

また、旬でみんながヤーヤー言ってる時は似たような理解度の人が多いから自分にぴったりの記事なども出やすく、わりあい楽に進んでいける。喧騒を避けて後から付いて行こうとすると、わけのわからない森に一人で挑むことになる。

なので若いときは流行ったら即座に使って理解しちゃうよりないと思い、片っ端から勉強するんだけど、廃れる技術もいっぱいあるので、時間がなくなってくると続かなくなっていく。理解の効率を上げる必要がある。

この効率という点では先人の行動が参考になる。トシ食っても平気で凄いことしてる人達って、だいたいソースから読んでるんだよね。初期のソースは小さいし、動作がストレートに書いてあることが多い。後になると機能拡張とかインターフェイスの統一とかスタイルの統一とかで、実はどんどん読みにくくなる。

初期にソースを読んでしまう。これがけっきょく一番効率がいいんだと思う。

そして後からついて行くときも、遡れるだけ遡った最初期のソースを読むのが良いと思う。シェルを教えるときに一番参考になったのは UNIX version 6 あたりのThompson shell(Bourne shell の sh の前にトンプソンが書いたshがあった)のソースだったりしたんだけど、こいつは現代的(?)な構文解釈をしてくれるシェルとしては最初期に位置してて、かつ1000行とかしかなかったはず。いまのbashなら数万行で、とても読めたものではない。

そしてThompson shellのように歴史的経緯があって残ってるやつじゃなくても、gitとかのバージョン管理されたレポジトリにあるソースなら、一番最初まで巻き戻すことで初期バージョンが読める。こういうのがいいと思う…なかなか行動に結びつかないけどw

いやほんと、プロのエンジニアは大変ですね。その場に留まるためだけに全力で走る必要があるというのは、進化生物学でいうところの赤の女王仮説にとても近くて親しみが湧く。まあ生物学者は「おもしろいなー」って言ってるだけで、自分で走る人たちの大変さは本当のところよくわかっていないわけですが。