何か着ていればいいよ

ソフトウェア技術者の日常や技術の話を書こうと思います。

レガシーシステムに文句を言っていると本質を見失う恐れがある

経緯

レガシーシステムは、その歴史的経緯により様々な問題を抱えています。
例えば以下のような

  • テストが(ほとんど)無い
  • DB設計がいまいち
  • クラス設計がゴッドオブジェクトパターン
  • etc.

レガシーシステムに文句を言うのは簡単

テストが無いことに文句を言ったり、設計にケチをつけるのは結果から見た現在の人間からの傲慢な視点と言えないだろうか?

どういうことかと言うと、駄目なものに駄目ということの本質を否定したいのではなく、現実に現れているテストが無い等のデメリットの生じた経緯やそのことと引き換えに何を得たのか?ということを勘案すべきだということ。

例えば、テストを充実させる前にリリースすることで商機を逃さないことを選んだのかもしれないし、設計に関しては試行錯誤の末に安定したのが今の形なのかもしれない。

とはいえレガシーシステムに関する全体最適は歪むことが多い

レガシーシステムが存続しているということは過去から続くだけのメリットがあったということ。
すなわりそのレガシーシステムに関わる人間に利益があったはず。

しかし、レガシーシステムで往々にして起こる状況として当初の利益を享受した人間は既に去り、技術的負債を抱えたまま惰性で走り続けるためにアサインされる人もいるという状況。

全体としては利益があるが、個人レベルに分解すると利益を得た人と不利益を被る人が出る。
そのような状況でシステムに携わる技術者はレガシーシステムの現状に不満を漏らすことになる。

全体最適の歪みによる不公平はレガシーシステムの問題ではない

問題の本質は、そのようなアンフェアな利益分配であってレガシーシステムの存在そのものではないのではないか?
技術者は、次々に生じる技術的負債に起因する目先の問題に気を取られそのことを問題視するが本質的な問題では無いのかも知れない。

悪い設計などに文句を言って溜飲を下げ、本質的な問題に対処出来ずに時間を浪費していると待っているのはレガシー技術者として潰しがきかなくなっている未来なのではないだろうか…。

というようなことを、クソコードの上に上塗りするような判断をしてしまった言い訳*1として考えてみました。

*1:全然言い訳になってないけど