Software Engineering at Google

Software Engineering at Googleを購入した。日本語版が欲しかったが、まだ出てないのと、結局参考文献をして使う場合は英語版で確認するのでめんどくさいが英語で読んでいる。なかなかのボリュームだ、アメリカの本の特徴としてちゃんとした本ほどボリュームがある。日本語版が11/末に出るが値段が5千円、基本日本語のほうがボリュームが多くなるので(Code Completeは英語版が1冊で収まっていたのに、日本語版は2冊の分冊になっていた)、きっと買う人は多くないのだろうと思う。

しかし、現代のソフトウェアの開発に従事している、開発者およびテスト担当者には是非読んでいただきたい。たぶんこの本に書かれることが今日現在のソフトウェア開発のmajorityだと思われるので。

内容としては目新しいものはないけど、1冊にまとまっている点が素晴らしい。組織にしろ個人にしろこれを参考にするのはステキだと思う。いくつか気になったというか、参考になった点は。

テストについて

テストについては単体テストから、large scaleまで大きく扱っている。その主題は。

“The later in the development cycle a bug is caught, the more expensive it is; However “catching bugs” is only part of the motivation. An equality important reason why you want to test your software is to support the ability to change. Whether you’re adding new feature, doing a refactoring focused on code health, or undertaking a larger redesign, automated testing can quickly catch mistake, and this makes it possible to change software with confidence.”

「開発の工程が進むほどバグの発見コストは高くなる、しかしバグを見つけること同じぐらい重要なのが、コードの変更をテストは可能にします。新しい機能追加、リファクタリング、大きな設計変更、自動テストは素早く間違いを発見し、ソフトウェアの変更の精度を高いものにします。」

今後のテストの役割は明示的にどんどん重要になっていかねばらなないんだけどなー。。。

オフィスについて

  • 個人の部屋はやはりコミュニケーションがとりにくい、ソフトウェアはチームで作るものだ
  • 大部屋ではriskのある会話ができないし、それもまた問題である
  • 4-8人が小さい部屋(もちろん部屋のサイズは大きくてもいい)で作業するのが好ましい。4-8人と言い切ってしまう、アメリカの本はいい。日本人が書いたら具体的にそうは書かない人が多いので。

と書いてある。日本ではソフトウェアエンジニアの数が足らないと言っている、しかしいったいどれだけの会社が(特にもうかっている)エンジニアのオフィスについて考えているのか?1兆円を越す利益の会社がエンジニアに対して全く生産性や敬意をはらってない日本はこれからもソフトウェアエンジニアリング分野で世界のトップレベルに追いつくことはないんだろうなと思った。

One Version

Googleではソースツリーがone versionだというのは知られている。ソースコードがあちらこちらのバージョンにちらばっっているのは、大きな弊害しかない。日本での多くの組織でブランチをしている、それは自分のコードが依存関係を考慮できないと宣言しているようなもので。また自動テストが揃ってないので、怖くてシングルソースにできない。私がコンサルにはいる組織(もしろん品質の問題を抱えている)では、かならずシングルソースにしましょう!と提案するが、いまだその提案を受け入れられたことがない。