読書メモ

・「ソフトウェア開発の名著を読む
(柴田 芳樹:著、技評SE新書 \840) : 2008.08.09

内容と感想:
 
本書では著者が「ソフトウエア開発とは何か」、「ソフトウエアエンジニアとはどうあるべきか」に関して影響を受けた 名著8冊を紹介している。もともとはソフト開発者向けの雑誌「Software People」に連載されていた同名の記事がベースとなっている。 いずれも知られた書籍であり、この業界の人ならタイトルくらいは目にしたことがあるのではないか。
 紹介されているうち『ピープルウエア』、『デッドライン』は私も読んだことがあるし、 『プログラミング作法』もすみからすみまで読んだわけではないが、作法の確認のためにときどき利用している。
 「あとがき」で面白いことを書いている。 著者が大学入学した頃にもしタイムマシンで(28年後の)今日に現れたら、「相も変わらず人が実際にプログラミングやデバッグを していることに、さらに驚くかもしれません」と。おそらく、その頃の著者は28年後には技術の進歩でソフトウエア開発は人の手を介すことなく 自動的に作られるようになっていると、想像していたのかも知れない。 実際、開発効率を上げるための開発ツールも進化している。きちんとモデリングすればソースコードを自動生成してくれるようなツールもある。
 しかし、著者が言うように「ソフトウエア開発には職人芸の世界が依然として強く残ってい」るし、 「これからも変わらないであろう」と予見している。 つまり「ソフトウエアは人が開発するという事実」は、 本書で紹介されているいくつかの本の「発売から数年〜数十年を経た今日でもその状況は変わ」らないし、 それらの本の内容が「時の試練に耐えて」きたことが証明している。 つまりそれらの本の著者らの洞察力の深さや、ものごとの本質の捉え方の正しさ(本質は変わっていないこと)を示している。
 かつて『ソフトウェア職人気質』を読んだ著者は一つの大きな決断をするほどの影響を受けたという。 開発者として第一線に戻るために部長職を離れ米国駐在を決断したのだ。 本との出会いはそれほど人生の転機になることもあるということだ。
 ソフト開発に関わる人ならエンジニア、管理者を問わず、本書で紹介されている本を手にして、 今の仕事のやり方を振り返り、確認し、あるいは改善のきっかけにしてみて欲しい。

○印象的な言葉
・ものの書き方を学ぶための方法として読んでみるという方法もある
・何気なく雑談をしながら、いろいろ有益な議論をすることの重要性。休憩コーナーの壁全体をホワイトボードにする
・人と月が交換可能になるのは、作業者間でコミュニケーションを図らなくても仕事が分担できる場合だけ。コミュニケーションのコストの重要性
・システムデザインにおいてコンセプトの完全性こそ最も重要
・二度目に作ったシステムあ一度目と比較して、どうしても多くの機能を入れようとして失敗する
・パイロットプロジェクトで最初に完成したシステムは使い物にならないので、捨石にするつもりでなければならない
・生産性、信頼性、容易性での飛躍的な改善方法はなく、段階的な改善を進めていくことが重要
・ソフト開発上の問題の多くは、技術的というより社会学的なもの(人間の問題)
・プログラミングの生産性、品質はプログラミング言語、経験年数、年収などには無関係。能力差は10倍
・チームの誇りは、メンバーが成し遂げた成果だけ
・社員に遣う金は経費ではなく投資
・組織が学習能力を持つためには中間管理職が強力なリーダーシップで取り組む必要がある
・プレッシャーをかけても思考は速くならない
・ソフトウエアを書くことは芸術。熟練の必要な技芸
・職人の下で働くアプレンティス(初心者)、ジャーニーマン(一人前だが熟練には遠い)
・優れた開発者:継続的な学習という技芸の伝統を実践している人。熟練度を更に向上させようと絶えず努力する人
・ソフト開発の技芸に対する自分の意気込みと熱意を同僚に伝染させたことがあるか?
・組織内に講座を設ける:学習会。週に1〜2時間、何かを学習する時間。部外者も引き入れる。プレゼンテーションの練習
・常に良いものを作り出していこうとする
・リアルタイムで自身の作業を批判する
・自分自身を含めて信頼しない
・型は合理追求の結晶。美しさを備える。型を覚え、応用し、「型破り」できるようになる
・プログラムの品質に最も影響するのはプログラムを書く個人の能力
・プログラミングにおいては85%が人とのコミュニケーション

-目次-
第1部 ソフトウェアは「人」がつくる
『プログラミングの心理学』ジェラルド・M・ワインバーグ
『人月の神話』フレデリック・P・ブルックス,Jr.
『ピープルウエア』トム・デマルコ/ティモシー・リスター
『デッドライン』トム・デマルコ
第2部 実践する開発者
『ソフトウェア職人気質』ピート・マクブリーン
『達人プログラマー』アンドリュー・ハント/デビッド・トーマス
第3部 読みやすいコードを書く
『コードコンプリート』スティーブ・マコネル
『プログラミング作法』ブライアン・W・カーニハン/ロブ・パイク