『Joel on Software 』 〜あなたが絶対すべきでないこと

ずいぶん昔に、 『Joel on Software 』という書籍を読んだことがあります。(発売は2005年)

ソフトウェアエンジニアである著者 Joel Spolsky の有名なブログが書籍化したもので、当時多くのソフトウェア開発者のバイブルの一つになっていました。技術系のブログでもたくさん言及されていたように思います。すでに新卒の会社(中小SIer)から最初の転職をして3年近くが経ちコードから縁遠くなっていた当時の私でも、非常に興味ぶかく読んだ記憶があります。(今でも日本語訳の多くをこちらで読むことができます。感謝です)

書籍には、「あなたが絶対すべきでないこと PART I(原題:「Things You Should Never Do, Part I」)」として収録されている有名な文章があります。この場合のあなた(≒ソフトウェア企業)が絶対すべきでないこととは、「プログラムをスクラッチから書き直すと決めること」だと、Joel は指摘しています。

 

 私たちはプログラマだ。プログラマというのは、心の中では建築家なのだ。建築家が建築予定地に来て最初にやりたいと思うのは、その場所をブルドーザーでまっさらにして、何かすごいものを建てるということだ。私たちは、修繕して、改良して、花壇を植えて、という改修みたいな作業にはあまり興奮しない。 プログラマがいつでも既存のコードを捨てて最初からやり直したいと思うには、ちょっとした理由がある。その理由というのには、古いコードがクズだと思っているからだ。

『Joel on Software 』 P204

 

私がこの一文に惹かれるのは、それがプログラマに関わらず、何かを作り上げる・組み上げる類の仕事に共通する、避けがたい陥穽(落とし穴)だと思うからです。

職業柄、誰かのつくった広告アカウントを見たり調べたり、ときにコメントやアドバイスを求められたりすることが多いのですが、この「最初からやり直したい」という欲求は、その対象次第では、どうしてもついて回ります。

そして、時を経てその欲求に自制がきくようになってからも、誰かから似たような欲望の発動を認めたり、言葉の端々から漏れるそれを感じるられるようになるたびに、この一節を思い出すのです。

 

なぜフェンスが建てられたのかわかるまで、決してフェンスをとりはずしてはならない
(Don’t ever take a fence down until you know the reason it was put up)

G.K. Chesterton

 

上記はチェスタートンの格言ですが、「やり直したい」という落とし穴から自由になるには、フェンスの前で立ち止まる思慮深さも、フェンスが建てられた背景に思いを寄せる想像力も、その想像力の原資である多種多様な経験も、いろんなものが必要なのかもしれません。必要なことが、フェンスを無遠慮に外したがる人よりもいくつかは多いような気がします。

とはいえ、本当にやり直した方がいいケースもあったりするので、そういう意味でもやっぱり「想像力」は重要な能力であり資質なんだろうなあと思ったりもします。むずかしいですね。

本書は現代の変化する速度の前ではすでに古文に類する書籍ですが、先のことを考えるのにこれまでの背景や経緯を無視することはできないという前提に立つと、古い本にこそ学べるエッセンスがあるのではないかと思います。

いや、別に無視してもいいのかもしれないですけど、先人の積み上げを無視できるほど、自分や周りの環境だけを過大評価して得することは少ないような気がします。