ソフトウェア開発は技芸(アート)か工学か、という問題についてときどき思い起こして考える。アジャイル開発やその周辺について学び考えている時はソフトウェア開発を技芸と捉えていることが多い。ソフトウェアは、高いマインドセットを持つ少数のエンジニアによって作られる作品だ。大規模ソフトウェアや、システムオブシステムズといった複雑なソフトウェアについて考えるときには、ソフトウェア開発を工学として考えている。生産性と品質を管理し、作業のパイプラインが淀みなく流れていくようにマネジメントするのだ。どちらが正しくて、どちらが誤っているということはない。境界に立って、腕をまくる・・・。
2011年9月に刊行された「Making Software ―エビデンスが変えるソフトウェア開発」を読んで、ソフトウェア開発の工学的な側面についてまた考えることになった。
本書はひとことで言うと(私の理解では)『ソフトウェア開発に関する実証・証明付き論文エッセイ集』である。
そこで本書ですが、上のような考えに基づき実証的ソフトウェア工学を推進する著者たちが、その基本原理的な部分から、開発プロセス、組織、言語などの個別の話題に至るまで、さまざまな切り口から実証的ソフトウェア工学の実現例、言い替えればエビデンスの具体例を取り上げて解説してくれている、というのがその内容です。この1 冊だけで、実証的ソフトウェア工学がどんなものかということから、具体的に何をすればその恩恵に預れるのかまで、分かるようになっています。
「Making Software ―エビデンスが変えるソフトウェア開発」訳者まえがき より
オライリーのサイトで興味深い本書の目次が読める。
O'Reilly Japan - Making Software
また、私が興味深いと思った個所はPookに抜き書きをしているので興味があったら参照していただきたい。
http://pook.jp/4873115116
とはいえこの本はもの凄く難しいーッ
興味深い本であるし、個別のテーマも興味深いのだが、とても難しい本でもある。言うまでもなく結論の前にデータがある。分析がある。これを詳細に読み解くのはなかなかに難しいのだ。この手の書籍を読んだことがないのであれば、書店などで実物をよく見てから購入すれば良いと思う。また、初心者はいきなり手を出さず、「ソフトウエア開発 55の真実と10のウソ」あたりをまず手を取ると良いと思う。
以下、特に興味深かった内容に関してのわたしのメモを公開しておく。
- 3章 システマチックレビューから学べるもの
- 6章 性格・知能・専門性がソフトウェア開発に及ぼす影響
- 以下の3つの疑問に関する研究
- 優秀なソフトウェア開発者であるとはどういう意味なのか
- 優秀な開発者を見つける方法
- 人に焦点をあてるべきか、ツールに焦点をあてるべきか
- 以下の3つの疑問に関する研究
- 10章 アーキテクティング:いつ、どれだけ?
- アジャイル手法とアーキテクティングアプローチのどちらを使うべきか
- 11章 コンウェイの法則の系
- 12章 テスト駆動開発はどれくらい効果的か?
- 「もしTDDが錠剤だったら、あなたは健康のためにそれを飲みますか?」
- 15章 品質戦争:オープンソース対有償ソフト
- 16章 コードを語る人
- 19章 共同作業場か、閉じるドアか?
- プログラマに適したオフィス空間のレイアウトは何か
- 個室、共同作業場?
- 22章 デザインパターンのエビデンス
- 24章 バグレポート収集の技芸
- 開発者と報告者の視点を踏まえた「良いバグレポートとは何か」という研究
- 25章 ソフトウェアの大半の欠陥はどこから生じる?
- 百万行クラスの大規模システムの分析による、欠陥の原因分析
- 28章 工学ツールとしてのコピーペースト主義
- コピペは本当に「悪い」のか
- 30章 10倍が意味するものは?プログラマの生産性のばらつき測定
- このエッセイの筆者がSteve McConnellだ!
- 開発者の生産性は本当に10倍の差でばらついているのか