オーバーエンジニアリング

Railsを使って既存のJavaアプリケーションを書き直しているのだが、当時自分たちでで書いたプログラムに対して標題の言葉が浮かんでしまう。

当時、既にEJB(EJB1.1)に見切りをつけて独自のDAO(今のように立派なものではなくハッシュに属性を格納しただけのシンプルなもの)を使い、フロントコントローラー+MVC、ビューはJSP(除くスクリプトレット)とかなりシンプルにしたつもりだが、今見るとどうしても冗長で七面倒くさく感じる。

結局、当時は生産性が大事と言いながら、実は生産性のことなんてこれっぽっちも考えていなかったんだだろうか。いや、そんなことは絶対に無い。

同じようなケースを経験されている方はたくさんいるだろうと思うが、

「ひょっとしたらここは〜と変更されるかもしれないので結合を緩くしておこう」
「ここは〜のように修正されてもコンパイルの必要が無いように括りだしておこう」
「データベースベンダーが変わってもできるだけ影響が出ないように考慮しておこう」

このような当初の狙いはまず当たらない。10箇所あったとして、当たるのは1点あるかないかだろう。

不景気なのも手伝って今後はシステム開発の投資はますます厳しいものとなってくるだろう。
一昔前であれば対象にならないような小さな規模のシステムが、コスト削減と称して一括請負の案件として出てきているのを見ていると、もう上のような、ある意味贅沢な設計、実装はできないのだろうなと思う。