ravelll の日記

よしなに

レガシーソフトウェア改善ガイドを読んだ

いくつかの書評を読んで、自身が所属するチームの活動に役立てられそうに思ったので読んでみた。

タイトルからレガシーコード改善ガイドを連想してしまうけれど、彼の本はコードの改善方法に主眼を置く一方、こちらでは、リファクタリングの手法やテストのアンチパターンVagrant と Ansible による開発環境構築の自動化などのコードやプロジェクトの具体的な改善方法に加え、レガシーコードはどのようにして生まれるか、改善する際にはどのような姿勢を取るべきか、どのような選択肢が存在するか、それぞれの選択肢はビジネス的な観点からどのように評価できるか、といったレガシーコードを取り巻く営みについても焦点を当てている。

さて、読んでみたところ、自身が新たな発見を得て「なるほど!!」となる内容は正直に言って多くなかった。しかしながら、これから初めてレガシーなプロダクトのプロジェクトに参画する人にはぜひオススメしたい1冊に感じた。この本を通じて、レガシーなプロダクトへの怒りに囚われず、冷静に原因を分析して着実な改善を進めるための見方を得ることができると思ったからだ。

個人的に参考になったのはビッグリライトの章だった。その章では著者の実体験を以って「そのプロジェクトは際限なく引き伸ばされるだろう」「あなたの新しい実装によって、独自の新しいバグが導入されることは、ほとんど確実である」「もし可能なら、私は段階的なリリースのアプローチを、強く推奨する」「既存のコードは「究極の真実のソース」ではなくリファレンスとして扱い、あなたが下す判断のガイドとして、あるいは論争に決着を付けるために、利用すべきだ」といったことが綴られている。最近会社でスタッフが使うあるアプリケーションを0から書き直したい想いがあって、来る日に向けて手始めに不要な機能を削っていたのだけど、この章のおかげで一度立ち止まって冷静に状況を見ることができたし、仮に今後ビッグリライトに踏み切るとしても、以前よりは良い進め方ができるだろうと思う。

レガシーソフトウェア改善ガイド (Object Oriented Selection)

レガシーソフトウェア改善ガイド (Object Oriented Selection)