このページはKent BeckのTidy First?(アフィリエイト)の感想記事だ。

この本はコードの整頓について扱っている。ここでいう整頓とは、数分から長くても数時間で完了するコードの改善作業を指す。

本書は3部作の第1巻として企画されており、続巻では「リファクタリング」「アーキテクチャの進化」が予定されている。より大きなスケールのテーマへと発展していく構想だ。

そのため、本書の内容は細かい話に終始しているように見えるかもしれない。ただし、小さな積み重ねが大きな成果につながることは多く、その意味でも本書に十分価値はある。

第一部は整頓のテクニックが述べられている。ある程度経験のあるプログラマだと正直この章は退屈かもしれない。経験の浅いプログラマなら得られるものがあると思うが、類似の内容を扱う本は他にもあるのでそちらも読んだ方がより理解が深まるだろう。

第二部は整頓をどう実践していくかの話だ。整頓をいつ始め、いつ終えるか。整頓とそうでない変更をどう統合していくか。ここもそこまで目新しい話はないだろう。経験のあるプログラマであれば経験的に感じている話だ。

第三部は少しむずかしい。特にオプションについて詳しくない人は話がややこしく思えるだろう(自分もそうだ)。一方で「いつコードを整頓するのか?」に対して、丁寧な言語化をしていなかった自分にとってオプションの観点で説明されたのはなかなか興味深くあった。

なかなか理解が難しい部なのだが、正直そこまで丁寧に理解をしなくても良いかなと思う。結局Kent Beckも本の結論として、先に整頓した方がいいのか?という問いに「おそらくイエス」と言っているのだ。自分もそれでいいと思う。

オプショナリティ

  • 今日の1ドルは明日の1ドルよりも価値があるので、早く稼ぎ、あとで使う。
  • カオスな状況では、モノよりオプションのほうが優れているので、不確実性に対してオプションを作る。

上の2行は本書からの抜粋だが、前者の戦略に立つとコードの整頓よりお金を稼ぐコードを先に書くほうがよい可能性がある。逆に後者の場合はコードを整頓し不確実性に備えておいたほうがよいということになる。

オプションについて私の理解を述べると、不確実性が高い状況下では将来の選択肢を幅広く確保しておくことに価値がある、ということになる。。特に昨今のソフトウェアが扱うビジネスは変化のスピードが速いことが多いので、そのビジネスの変化に合わせた対応が取れるのかというのは非常に重要だ。つまり、結局変更容易性の話なのかなと理解している。

結局いつ整頓するのか?

オプショナリティを高めるためとはいえ、常に整頓を優先していいというわけではない。これは結局個々の判断になるのだが、その辺りのむずかしさが書名の「?」の意味するところだと思う。常に先に整頓してよいなら?をなくし「Tidy First」という書名でもよかったはずだ。

ただ、この本で取り上げている整頓はかかる時間も少ないし、整頓をする癖をつけるという意味でも最初に整頓をするようにして問題ないだろう。

それに整頓を行なうということは単純にビジネスの利益や価値のためだけではない。

だが、いちばん重要なのはあなただ。整頓はあなたのプログラミングに平穏と満足、喜びをもたらしてくれるだろうか? 多少はありそうだ。これは重要だ。なぜなら、あなたが最高の自分でいれば、より良いプログラマーでいられるからだ。いつも急いでいて、変更に痛みを伴うコードの変更をしているなら、最高の自分ではいられない。 ....

先に整頓するか? おそらく答えはイエスだろう。ほどほどに。あなたにはその価値がある。

この文章からはKent Beckらしい、人間性を重視する姿勢が感じられる。ビジネス的な合理性も重要だが、ソフトウェアを作るのは結局のところプログラマである私たちだ。なので、我々プログラマが満足に働けているのか、最高の自分でいられているのかというのも非常に重要だし、それが良いソフトウェアを作ることに繋るのだろう。