Max Kanat-Alexander氏の著書 "Understanding Software" は、プロジェクトマネージャやソフトウェアアーキテクトにとって興味深い読み物だ。ソフトウェアをシンプルに保つ方法、複雑な保守不能のソフトウェアを避ける方法について、知見を与えてくれる。
Max氏はwww.codesimplicity.comというブログを書き、2012年には、Code Simplicityという最初の著書を書いた。その年以来、彼は多数のブログ記事を書いてきたが、本書はその一部と追加の話をまとめている。彼のスタイルを知りたければ、http://www.codesimplicity.com を見てみるべきだ。本書の内容の多くは、Webサイトから入手できる。各章はブログ記事のように読めるが、書籍という媒体に合わせて、編集、整理されている。
本書は43章から成る。1つの章を読むのにかかるのは数分ほどだろう。毎日の通勤で読むのにぴったりだ。各章は独立して読めるので、しばらく読むのを中断しても、問題に直面した時に拾い読みしやすくなっている。章は7つのパートに分かれている。個人的には、4つのセクションに分けるのが内容に即していると思う。このレビューでは、そのやり方で説明する。
最初のセクション(パート1、2、3、4)は、よいプログラマになるためのヒントをまとめている。プログラミングが得意になるために、とるべき態度とやるべきことを教えてくれる。コードの複雑さとは実際に何を意味するのか、どうすれば複雑なプログラムを作れるのかがわかる。続いて、バグとは何か、どうすればバグを解消できるのか、バグはどこからやってくるのかを説明する。
2つ目のセクション(パート5)は、チームにおけるエンジニアリングについて説明する。ソフトウェアエンジニアのチームを扱う必要がある人にとって、このセクションは役に立つ。エンジニアリングの生産性を計測するために使えるメトリクス、チームの生産性を妨げているものを見つける方法を説明している。このパートで私が一番気に入っているのは、障害物を取り除くための人間中心のアプローチだ。生産性を上げるツールを説明するのは簡単だが、こうしたツールをチームと議論することで生産性を上げる方法について、Max氏は説明している。彼は会社での経験を共有するだけでなく、オープンソースコミュニティでの体験も語っている。自分のオープンソースプロジェクトのために、アクティブなコミュニティを育てて維持することに興味があるなら、本書のヒントはきっと役に立つだろう。
3つ目のセクション(パート6)は、ソフトウェアの目的とその作り方について説明する。私が気に入ったのは、テスト駆動開発のセクションだ。観察のサイクルは、開発プロセスを調べるのにうってつけだ。Max氏はこのセクションの最後の章で、テストの哲学とアプローチの仕方について説明している。
最後のセクション(パート7)は、実践的なソフトウェアエンジニアに焦点を当てる。興味深いのは、Max氏の「わるいプログラミングを避ける」アプローチだ。彼は主に、どんなアイデアがわるいのか、何を実装すべきでないか、どうするとソフトウェアを把握できなくなるか、について説明している。こうした原則は、ソフトウェア問題へのアプローチの仕方について、ソフトウェアエンジニアにうまく教えてくれる。だが、私がこの章に欠けていていると思ったのは、コードサンプルやアーキテクチャ図だ。わるいソフトウェアを避ける方法については多くの知見が得られたが、自分のソフトウェアを素晴らしいものにするには、まだ何らかの理解や指針が欠けているように思う。
まとめ
全体として、本書はプロジェクトマネージャやアーキテクトにとって非常に役に立つ。チームにおけるエンジニアリングと、ソフトウェア会社でコードの複雑さに対処する方法を説明したパートは、自らのプロジェクトにある複雑さに取り組もうという気持ちにさせてくれる。本書は、よりよいソフトウェアを作る方法、また、他人がよりよいソフトウェアを作る手助けをする方法について、ハイレベルな概要を与えてくれる。本書を読むソフトウェアエンジニアは主に、コードをよりよくする方法がつかめるだろう。だが本書には、実際にコードを改善するために必要な、実行可能な詳細が欠けているように思う。
Rate this Article
- Editor Review
- Chief Editor Action