GeekFactory

int128.hatenablog.com

受託開発のコスト意識

システム開発では、開発を担当する会社と運用を担当する会社は異なることが多く、場合によってはユーザ企業内でも部門が違ったりします。一般に、開発コストをケチると運用コストは増加する傾向にあります。例えば、リファクタリングによりソースコードの保守性を高めると開発コストはかさみますが、保守コストは下がります(下がることが期待される)。冗長化により耐障害性を高めると運用コストは下がりますが、構築コストはかさみます。

保証すべきことを明文化したものが要件定義書やSLAですが、どこまでリファクタリングすればよいか、どこまで冗長化すればよいかといった微妙なさじ加減は、最後は現場の判断になっていると思います。エンジニアはここまでやるべきという心を持って仕事しているところはいつも感心します。日本人は真面目なのでしょうね。

ところが、プロジェクトが炎上したり工数削減圧力が高くなったりすると、現場の判断はすぐに逆転します。開発コストを削って運用フェーズで何とかしろという力が働きます。いわゆる「運用対処」ですね。こうなると結局イニシャルよりランニングの方が高かったなどと笑えないことになってしまいます。開発者が泥のようなコードを書いて、保守者は呪文を解析するようでは誰も幸せになれません。

現状では、システム開発を受託する側に運用コストを下げる力が働かないし、それが顕著に現れたのがオフショアかと思います。リファクタリングするほど自分自身の利益になるような構造を作った方がユーザ企業は幸せになれます。それはSIerへの一括発注ではなく開発者の直接雇用かもしれませんね。