本書では、プログラミングの指針を具体的に解説している。テクニックよりも、ものの考え方や、プログラミング哲学に相当する内容が多い。たとえば「知識はプレイン・テキストに保存すること」や「モデルからビューを分離すること」など、短いヒントの形で論点を示し、それを具体的な事例を用いて説明している。プログラミングを中心に、比較的小規模のソフトウェア開発を段階に分けて論点を提示している。
内容は、授業や研修で聞くよりも、自分で少しずつ読み進んで納得していくほうがずっと学習効果が上がる。通り一遍の事例として聞き逃さずに、何度か繰り返して読むことで、著者の洞察が自分のものになる。一部にはプログラムコードを用いた説明も出てくるが、その言語を知らなくても、著者が言いたいことは十分に理解できる。
本書は、演習問題とその解答例、クロスリファレンス、索引が充実している。もう少し図版を用いてくれたら、もっと親切だったかもしれない。プログラミング入門を終えて、次の段階に進もうとしている人たちにぜひ読んでほしい1冊である。邦題は『達人プログラマー』。(有澤 誠)
彼らも、それなりに知識は蓄えたのでしょう。 他の人に比べたら、よりたくさんの「動けばよい」コードを書いたのでしょう。ただし、それが妙な悪達者と自己満足になって、かえって徒になっている気がします。 職業プログラマとして、彼らに欠落していると思われるのは、同じ過ちを繰り返すまいというコスト意識であり、ごく近い未来に発生するであろう改修へのリスク予測です。
この本は、区分としては別段目新しいことを述べた本ではありません。ただし、ソフトウエア開発上の積年の知恵がTipsという簡潔に形で列挙され、それがどういう意味をもち、効力を発するか詳述されています。
開発経験・力量を積んだプログラマには、「そうそう、これが言いたかったんだ」と、自分の知恵のよい要約になるでしょうし、自分のスキルアップに限界を感じ始めた若手や中堅には「自分に欠けていたのは、これだったんだ」と目を瞠るものがあると思います。
そして、プログラマチームを率いるべき管理職には、いかにソフトウエアの品質を向上・維持すべきかのよいガイドラインになると思います。特に、オブジェクト指向だデザインパタンだなんだと業界の流行の表面を追いかけるのに疲れたら、一読すべき本です。「OOPとは何か」という手法の具体像よりも、まず「なぜOOPか」という目的を知る意味で「ソフトウエア工学とは何か」の導入書とも言えるでしょう。
個人的に魅せられたのは「Rather than construction, software is more like gardening」の一文です。要求分析・基本設計・詳細設計・実装・単体試験・組合せ試験っといったワンパスで製品が計画通りできあがる、と自己催眠をかけては失敗している人たちには、以前から違和感を抱いていた私ですが、同文を読んで、自分の言いたかったことはこれだ、と共感を覚えました。
惜しむらくは、本書はどちらかというとノウハウを語るものであって、教科書やマニュアルではないため、コードの具体例があまり多くないため、人によっては理解が 腑に落ちないかも知れません。
ある意味では、プログラム言語に依存しない、「ソフトウエアの開発原理」を述べた本とも言えるでしょう。