Joel on Software

| | コメント(7)

Joelいいよ、良すぎるよ。
ハッカーと画家と並べられる理由がはっきりとわかるよ。
すべてのプログラマは四の五の言わずに読めや。
ビリビリきまくりな節があったので引用します。

プログラマがいつでも既存のコードを捨てて 最初からやり直したいと思うのには、ちょっとした理由がある。 その理由というのは、古いコードがクズだと思っているからだ。 そしてここに興味深い観察事実がある。 彼らはたぶん間違っている。 彼らが古いコードがクズだと思うのは、プログラミングの基本法則のためだ。

プログラムというのは書くのより読むほうが難しい。

これがコード再利用がかくも難しい理由だ。 あなたのチームのプログラマが、 文字列を分割して配列にするための関数に、 みんな違うものを使っているのはこのためなのだ。 彼らが自分で関数を書いている理由は、 古い関数をどうやって使うのか調べるよりも、そのほうが簡単だし、楽しいからだ。

ああ、まったくもってその通りですJoelさん。
わかっちゃいるが・・・これは難しい問題なんですよ。

多くのヲタプログラマ同様、僕も他人の書いたコードを読むときはぼろくそに言います。
こんな糞コード読んでられっかよ、アホじゃないかしら、と。
うざいからスクラッチで書き直します、て言いたくなると思うよ。エリート新人君は。

でもね、それやったら全部テストしないといかんのよ。
売り物のテスト稼働ってすんごいかかるんですよね。
テスター雇うならまだいいんだけどさ、大抵の場合は書いたお前がやれや、てなるわけで。
スクラッチで書き上げる楽しいひとときの代償が、
非常につまらない眠くなる鬱だ氏のうやってられないテストテストテスト。
そりゃ割に合わんわ。大人しく糞コード眺めてる方が利口ってもんだ。

いくら醜かろうとそいつが動いていることは紛れもない事実なわけで。
我々残された人間はそいつと向かい合って生きて行かなくてはいけない。
目を背けちゃダメだ。逃げちゃダメだ逃げちゃダメだ

だから、コードをいかに効率よく読むことができるか、
これがこれからの時代においてプログラマとしての勝敗を決める鍵であると私は思います。
# あくまでプログラマ限定ね

優れたアルゴリズムだとかアーキテクチャを考えられる能力、
それはもちろんとてつもなく重要です。
でもその能力を発揮する場というのはものすごく限られている。
特にプロダクトコードに直接関わる場合には。
そういう場に巡り合わせることができた幸運な人をのぞくと、
普通のコードを書く能力よりかは、
普通のコードを読む能力の方がずっと有利に働きます。

つか学校なり本なりである程度の勉強をしていれば、
普通のコードを書く事なんて誰にだってできるわけです。
でも読み方は学校じゃ教えてくれない。本にも書いてない。
# Code Reading とかあるにはあるけど

読むことができるようになるためには読むしかない。
幸い読めるコードは腐るほどある時代だ。
というわけで学生はコードを読みまくるべきだと思う。
というか読みまくるべきだったなと。
僕にとってコードを読むことの重要性を認識できたことは、
会社入って得られた大きな収穫のひとつです。

まぁでも読みはじめてみるとわかるんだが、
読むのって地味だしもの凄く眠くなるし正直めんどい。
それが読むという行為に対する本質的な感覚だとは思えない。
僕は環境が整ってないだけなんだと思う。
だから環境を整えたいと思った。
出発点はそんな感じかな。

なんか話のベクトルがいつの間に曲がっているような気がしますが、
多分それは意図的ってことで・・・

コメント(7)

wiz@(つД`)ネムポ :

>ビリビリきまくりな節があったので引用します。
(´Д`)まままぁ。とりあえず、良い感じな事が書いてある感じですな。

でも、私的には、他人のコードに関して、コードが読みにくいとか、調べるのが面倒とか、
そういう理由で使わないのではなく、基本的には、論理的な部分で不満があるから、ってことが、
結構ある感じで。

>読むのって地味だしもの凄く眠くなるし正直めんどい。
つ 解析

解析だと、読むのが禿げしくたのCでつよ。私だけな気がしないでもないですが。

まぁ例えば、MIDI編集ソフトが、ウィンドウメッセージのIDハードコードしてるせいで2000で動かないのを、
動くようにするとか、親が使ってる将棋の棋譜を入れるソフトで、
フォント指定時の文字コード(正確にはcharset)が0x01なせいで、
先手と後手を表す記号が文字化けるのを直すのとか、そういう作業で読むのもなかなかに面白いですよ。

ま、一部の人だけご存知な目的で解析するのはもっと面白いですが(゚∀゚)にやりこにやりこ

そっちの方は、解析し終わったときに、(゚∀゚)カッタゼ、つーかんじになるので。

ま、ソースコードとは呼べんものを追う訳ですが、頭の中でかってにCコードくらいに抽象化されるんで、
まぁ読んでるってことでいいんジャマイカと思う('A`)・・・

wiz@やっべ :

二重投稿になった悪寒。

('A`)スンマソン・・・

acht :

納得お得。
人が書いたコードってのは難しく見えるもんだわ。
ま、個人的な性分だと、低次元なコード書くの楽しいから書き直すってのもあるけどね。
がしかしかし、最近は他の人が書いたコードでも動けばよしな感じにはなってきましたよ。
つっこんでたらきりがないことに気づき始めたwww
あとは年老いて書き直す元気が…www

eclipse :

>>wiz
>論理的な部分で不満があるから
それは問題ないですね。
そう感じるということはコードをちゃんと読んだということなんで。

解析ってバイナリあるいは逆アセしたものを読むってことですよね。
当然高級言語より読むのに時間かかるよね。

>頭の中でかってにCコードくらいに抽象化される
このレベルまでいくまでがしんどいなぁ。

>>acht
>つっこんでたらきりがない
ですね。
細かいところに文句を言うのは簡単なので、
ついついつっこんでしまいがちですが、
大きいレベルで見るとそんなところに
いちいち口出しするのは双方にとっていいことないなと。
ストレス溜まるしね。

wiz@('A`)28日が停電ダッタカ :

データセンター停電発生につき29日くらいまでwizlogお休みの悪寒。

んでま、とりあえず、解析は読むの時間かかるのはたし蟹かかるんだけど、
まぁそうやって時間をかけて、ってことろも楽しみの一つみたいな感じかな。

ソースがあるならそっちを読むけど(゚∀゚)

まぁなにはともあれ、ソースが役に立たない状態でのデバッグ、てのに遭遇する機会がないなら、
まぁ解析には突っ込まなくてもいいんジャマイカと思うけど、
やっておいたほうが、プログラムやハードの動作を捉えた物を書けるようになるって感じで。

ソースが役に立たなくなるってのは、まぁ最適化をバリバリかけたりしたり、
高速化のためにasmコード混じらせたりするからいかんのだけど、
たまにインタープリタとかに変な部分があったりして、つーのもある感じなので。

まぁあとは、古き良きソフトを使いたいけど、バージョンアップが出ない、なんて時にも。

eclipse :

できたらいいけど、
個人的にはあんまり楽しくない世界という気がしてね。
でも見せ方工夫すればマシになるかもなぁ。

wiz@_( (_´Д`)_ :

まー見せ方によっては、やってみようと思う人が増えるんじゃなかろうかと。

とはいえ、まぁ別にできなくても、今のソフトウェア業界の品質なら、問題はない感じなのがあれですが。

このブログ記事について

このページは、yuchが2006年5月26日 22:57に書いたブログ記事です。

ひとつ前のブログ記事は「鯖復活」です。

次のブログ記事は「クローンソフト」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01