レガシーシステムに立ち向かう
レガシーシステムにどう立ち向かうか
リライトは魅力的ではあるが、良い手ではない。リライトは最終手段だ。
残念ながらリライト自体は顧客価値を生み出さない。
顧客価値を生み出すには、機能を追加変更していくしかない。
変更に弱いコードを変更に強いコードに書き換えていくことは、将来を考えればコストを払ってでもやる必要はあるだろう。
しかし、現時点においてはコストでしかないし、そのコストを今払うことで将来にどのようなリターンがあるかなど測りようがないのである。(フェルミ推定しても良いが...) レガシーシステムに立ち向かうためのコストとリターンをROIで語ろうとすると泥沼にハマる。 プロダクトオーナーがエンジニアリングに対する知識もしくは経験からこれらを理解・認識しないと、エンジニアとの溝は深まるばかりだ。
とにかくプロダクトオーナーとエンジニアの相互理解を深める行為が必要不可欠であるが、往々にして互いに互いの理解を深めるためのコストを払わないのだが、それを棚に上げて相手の理解不足に文句をつけるのだ。
相互理解こそがレガシーシステムに立ち向かう第一歩なのかもしれない。
リファクタリング、リアーキテクティング
個人的な考え
勝手にやってしまうのが一番だろうと思う。
プロダクトオーナーは絶対の存在ではない。
お互いの理解には時間がかかる。
素早く大きな価値を提供したいというところはプロダクトオーナーもエンジニアも同じだ。
価値提供を早めるために自分たちが必要だと思うところを必要最低限やる分には問題はない。