「美しいソースコード」に価値はない
「美しいソースコード」を書くために頭を捻っている時間は「コスト」だ。「価値」じゃない。
同様に、「醜いソースコード」の解読やデバッグに費やす時間も「コスト」。
要件定義も設計もテストもリファクタリングもみーんなコスト。どれもそれ自体に価値なんてない。
それがお客さんの手に渡って、きちんとお客さんに利便性を提供したときに初めて「価値」が生まれるんだと思う。
つまり「価値」を自分だけで生み出すことは不可能ってこと。「価値」とは「評価」だから。他者に評価してもらって初めて「価値」になる。僕たちが自分だけで出来るのは、ただ「コスト」を積み上げるだけ。それに「価値」を認めてもらうにはお客さんの存在が絶対に必要。
できるだけ大きな「価値」を最小の「コスト」でお客さんに届けたい。そう考えたときに「美しいソースコード」にこだわるべきか否か。コードの洗練にかかるコストと、醜いコードのまま放置した場合にメンテでかかるコストと、どちらが大きくなってしまうか。そういう問題。
僕はコードは美しいほうがいいと思うよ、もちろん。でもそれはコストを最小に抑えるため。美しいコード自体に価値があるからじゃない。美しいコードは手段であって目的じゃない。
だから、例えば美しいコードにこだわりすぎて納期に間に合わないとか、ダメダメ。どんなに美しいコードでもお客さんに届かなかったらコストにしかならない。価値が生まれない。
もっと踏み込むとね、「私」という人間に「価値」はないと思ってる。私はコストしか産まない。私が行うありとあらゆる活動はコストに過ぎない。その活動の結果がお客さんに評価されて初めて「価値」が生まれる。
まーここで言っている「価値」は、身も蓋もない言い方をすれば「売上」のことであって、狭義の価値を指しているに過ぎないのだけれど・・・ね。「美しいソースコード」というものに、売上とか金銭的な価値を超えた「価値」を見出そうとするのは、それはそれで素晴らしいことかもしれないけれど、職業プログラマとして幸せになれるかというとちょっと苦しい気がするよ。
読むと感動するようなすごいコードって実在すると思うし、そういうのを競いあう文化とかも好きだし、そういうのを目指す努力も楽しみとしては良いと思う。でもそういう「美しいソースコード」を書くのが我々プログラマの矜持だ!などと思い詰めると結構辛い職業人生になるんじゃないかと思う。
「プロ」の定義は価値をお客さんまで届けることであって、「美しいソースコード」を書く事ではないよね。