The Pragmatic Programmer 一通り眺めた

Pragprog 20 周年版(Beta)読み始め のフォローアップ。

時代が内容に即してない、という印象は間違っていた。コードの部分はそれなりに書き換わっており, Ruby のみならず JS, Clojure, Elixir, Python までサンプルコードがいろんな言語をいったいきたりしていた。特に Elixir はさすがに本をだしているだけあって強く推されており、actor-based concurrency を含め Elixir の推し機能を他言語の類似機能と比較しながら軽く紹介していた。動的型言語界隈の流行りを全然追いかけていなかった身には目新しく、Elixir の本は読んで見る気になった。一年に一つ新しい言語をやろうと勧めてきただけのことはある(なお序盤にあるその自己投資に関するセクションはまるまる残っている。)

そんなかんじでテクノロジ回りはまあまあ書き換わっており、日本語の改訂版を読んだ時に感じたこりゃねーわ感はだいぶ薄れていた。たとえば MVC や Wizard の話などは姿を消し、かわりに ReactiveX のセクションが増えている。プレインテキストどうこうの話はまだあるが、コード生成の話は消えてかわりに ebook もビルドしようぜ、みたいな話に姿を変えていた。あんたら出版社だもんな。

テストの話も「20年前はテストしやすいコードだとか単体テストしろと説得する必要があったけど、もうそういう時代じゃないよね」とはじまり、TDD いいよ、でも原理主義になりがちだから気をつけてなどと話し時代を回顧する。そのあと Python の Hypothesis というツールをつかった property based testing を紹介し、セキュリティの話に進む流れ。Hypoethesis いいじゃん。今度ためそう。

説教セクションは小さな改定として日々の仕事記録 (engineering daybooks) の話が追加されており、やはりみんなやってるね、などと思う。

要素技術のでてこないセクションは旧版と同じ内容も多く、それらに新味は感じない。ただ当たり前の話をしているように感じるのは、たぶんいいことなんだろうね。


合意できない話もそこそこある。それは古臭さより立場の違いから来ているように感じる。

Dave Thomas と Andy Hunt はもともとが自営業コンサルで、その後電子書籍出版で起業し small business で食ってきた人たち。仕事では好きな動的言語をテキストエディタで書いてる。自分は各種零細で C++ を書いたあと感じの悪い大企業の末端として Java のスマホアプリを IDE で書いてる。プログラマのキャリアとしてある意味で反対側に振れている。彼らの価値観に自分が共感できないのは、まあ仕方ない。

自分は彼らの定義する pragmatism に同意できない。流行りには乗らず人の入れ替わりが少ない安定した小さいチームで顧客やエンドユーザと話しながらフィードバックループで物事を良くしてこうな、みたいのは、Basecamp 勢の自己啓発書に感じるどうでもよさに通じるものがある。そういうライフスタイルはきっと素敵だろうけれど、我々そういうんじゃないんで・・・という他人事感。

自分は流行りものに乗れるものなら乗りたいし、チームは適当に人が出入りして規模も大きくなっていく方が景気がよくて好きだし、フィードバックとかいわれてもエンドユーザ多すぎだし (チームとして UX study とかはしてるわけだが、それは「顧客との対話」みたいのとは違うでしょう)、物事はしばしばインクリメンタルに進まずバーンと変わって阿鼻叫喚になるものだし。まあ最後のやつは特段好きではないけれど世の倣いと受け入れている。

結局自分の関心は問題解決とかよりソフトウェアテクノロジの進歩を見届ける方に寄っているので, The Pragmatic Programmer の想定する地味に人々の役に立とうとする craftmanship な皆さんとはいまいち反りが合わない。ただそれに文句をいう筋合いはなかろう。

逆にいうと自分の価値観の偏りによって分かり合えなくなってしまった相手というのが世の中には結構いるということで、それはプログラマについて何か書くとき気をつけたほうが良いのだろう。