言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

仕様もない話

fsck が終わるまで何も出来ないのでぼんやりと日記を書く。

私がどうやって仕事を選んでいるかについて書く。考えなくても書けるから。Viewpoints での仕事は、特に何をやれと言われる事も無く、大体の目標に向かって自分でやる事を考える。例えば今だったら、OLPC で eToys を動かす為にクリップボードを作っている。じゃ、何故クリップボードを選んだのか?

私は仕事を行う前に、そこから何が得られるのかを考える。そしてプログラムの場合、それは「約束事」だ。クリップボードの仕事をすると、クリップボードの「約束事=プロトコル」を覚える事が出来る。

実は作業結果のプログラムは自分にとってあまり価値が無い。なぜなら、プログラムはすぐに古くなり、使えなくなるから。世の中には長く使われるプログラムがあるが、大体そういうのは後でメンテする人の大量の無駄な努力の上に成り立っているわけで、本当はどんどん新しい考え方の元に書き換えていった方が良い。だけどプロトコルの価値は下がらない。なぜならプロトコルは機能の間の約束事だから特定の流行の技術に依存する事は無いし、約束事というのは、そんなに変化しない。そして一番重要なのは、正しい物を設計するには、過去のプロトコルを学ぶ必要があって、それはソースコードを書くよりもずっと難しい事だ。

ソースコードを一から書いている時の気分は、「全能感」だ、俺って賢すぎ、どんどん書けちゃう。だけどこの全能感が危ない。逆に仕様書を読んでいる時の気分は「無能感」だ、この仕様考えた奴糞だ。こんなの読んでる俺はもっと糞だ。だから仕様書読まないで一から書くほうが精神的にずっと良い。だけど一から書いている感じる全能感は、ただ自分の鈍感さから来るもので、後に残した仕事は他人の書いた仕様以上の糞な点を残していたと数年後分かる。だから自己満足が目的じゃなくて、良い物を作る事が目的の人は仕様書を読まないといけない。

だけどこれも両刃の剣。あまり人の仕様書や他人のソースばかり読みすぎると自分から若さが失われる。そして過去の事ばかり言って車輪の再発明をする勇気が無くなる。これはこれでやばい。だからどうという話ではないが、とりあえずまだ fsck が終わらない。