プログラマーの生産性は10倍、100倍も変わると言われているのはもやは常識として考えていただきたいところですが、生産性の高い偉大なプログラマーとなるために必要なポイントを丁寧に解説してくれているのが、今回の書籍です。
Neal Ford¥ 2,730
|
技法編と実践編にわかれており、技法編では、キーボード操作(ランチャー、ショートカット)、集中、自動化、正準化のはなし。技法編では、TDD、静的解析、オブジェクト、YAGNIなど、実際にソフトウェアを開発する上で大切な考え方などについて書かれている。
ヴァーサ号の教訓
最強の船、「ヴァーサ号」の建造は開始されました。王は、船にあれこれと注文をつけます。できる限り、威厳ある姿にしようとあちこちに凝った装飾もさせました。そして、途中で砲列甲板をC つ備えた船にしたいと言い出します。そんな船は今までどこにもありませんでした。どの船よりも強くしたいという思いからの要求です。しかも、王は船をすぐに造れと言いました。当時の外交情勢から必要に迫られていたのです。もちろん、造船技師は当初、砲列甲板はB つ、という前提で設計をしていましたが、王の命令なので、言われたとおりにせざるを得ません。大急ぎで造ったため、揺れのテストもできません。水兵たちが船の一方の端からもう一方の端に移動した時に大きく揺れないか(いわゆる「トップヘビー」になっていないか)テストすることは重要なのですが、それもできなかったのです。ヴァーサ号は、処女航海の時、わずか数時間で沈没してしまいました。色々と機能や特徴を盛り込みすぎたことで、とても航海に耐えられない船になってしまったのです。ヴァーサ号は北海の底に沈んだままになっていましたが、20世紀になって、ほぼそのままのかたちをとどめているのを発見され、引き揚げられました。現在は博物館に展示されています。
ここで難しいのは、「ヴァーサ号が沈没したのはいったい誰の責任なのか」ということです。あれこれと盛り込むよう命じた王でしょうか。それとも、懸案があるにもかかわらず、それを声高に言わなかった造船技師でしょうか。
アジャイルでの「価値を届ける」という意味について、上記のようなケースも当てはまると考えています。ただ単にソフトウェアをつくることだけが価値を届けることではないのです。プログラマーとして、期待に応えるということは、ヴァーサ号をつくるようなことではないはずです。
これはほんの一例であって、プログラマーとして、学んでおいた方が良い教養が詰め込まれています。新人さんには、まっさきに読ませたい本です。