『ZERO BUGS』を読んだ

バグをテーマに先人達の知見がコラム形式でまとめられており、不具合回避のための行動哲学が上手く凝縮された本だった。

ZERO BUGS シリコンバレープログラマの教え
Amazonでケイト・トンプソン, 酒匂 寛, 小田 朋宏の{ProductTitle}。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽…amzn.to

全体が78個の物語によって構成されており、それぞれの物語において教訓が紹介される。ZERO BUGS というタイトルの通り、どの物語もソフトウェアの不具合をテーマにしている。文章の内容は平易で、プログラマ初心者にもわかりやすく、しかしながら示唆に富んでおり、経験が浅いプログラマであれば「なるほど」、経験が深いプログラマであれば「あるある」とどちらも頷きながら読み進めていけるはず。

それぞれの物語は2ページ程度でとても短く、何かの合間にも少しずつ読み進めていける。出来る限りコンパクトに話を収めようという気持ちで書かれていることが文面から伝わり、とても好感が持てる。翻訳された文章も素晴らしく読みやすい。和訳された技術書特有の回りくどい言い回しが現れないことに、快適さを覚えた。

本書で示される個々の教訓は、どれも難しいものではない。例えば、変更を加えるときは一気に変えるのではなく少しずつ変えようとか、二箇所以上で必要になったときに初めて処理を共通化するように進めた方が良いとか、稀にしか実行されないコードもきちんとテストする必要があるとか、それぞれとても素朴で、取り組み始めやすいことばかりが書いてある。

パンチカードの話やエクストリームプログラミングの話など、いろいろな時代背景のエピソードが紹介されており、それでいて、現代においてはもはや使いものにならないような話が延々と述べられるというようなこともない。先頭から一気に読み進めると、目まぐるしく時代が変わるスピード感が味わえるが、自分が普段プログラムに向き合っているときの考え方と紹介されている教訓とを比較しながらゆっくりと読み進める方が、結果として良い読書体験が得られることは間違いない。

物語群は特に系統立てられておらず、ごった煮の様相を呈しているようにも見えるが、物語の配置方法を利用した緩やかなストーリー構成も面白い。ユニットテストで堅実に不具合の可能性を排除していこうという話で気持ちを盛り上げさせたあと、次の物語では、間違ったユニットテストの導入方法を推し進めて破滅するエピソードが紹介されていたりする。

明日からすぐに使えるような技法が紹介されている訳ではないし、これを読んだからと言って必ずしもバグの無いソフトウェアを構築できるようになる訳ではない。けれど、プログラミング活動に従事するときの基本的な立ち回り方として、どういう指針や判断基準を持って行動すればより失敗を回避できる可能性が高まるのかを学ぶことができると思う。

自分が気に入った一節は「最善のコードが書けないからといって、それが酷いコードを書く理由にはならない」というところ。全てが上手く行かないように思えることがあったとしても、自暴自棄にならずに、正しいと思うことを前向きに積み重ねていこうと思わせてくれる。

謝辞

以前書いた記事に載せた Amazon のほしい物リストがきっかけで、この本を読む機会が得られました。この場を借りて、改めてお礼を申し上げます。

Incrementsを退職します
今月いっぱいで Increments 株式会社を退職します。今日が最終出社日で、残りは有給消化です。medium.com

普段から技術書を購入すると積んだまましばらく放置してしまうことが多いものの、贈ってもらった本くらいは読むかという気持ちに後押しされて、結果的に読んでよかったなと思うことが多く、気持ち的な意味でも非常に助けられています。贈ってもらった本については、こういった形でブログ記事を利用して感想を残していきたいと考えているので、今後もまた駄文にお付き合い頂けると嬉しく思います。