崩れゆくアーキテクチャ

ソフトウェア開発の現場で起こっている一例。

  1. 最初の開発では開発リスクを考慮して熟練メンバーが開発に割り当てられる。ベテランなのでデザインパターンを駆使した高度な設計となるが、精鋭揃いのメンバーなので皆これが当然と思っており何も問題は起こらない。
  2. 時間が経ちメンテナンス段階になってくると「OJTを兼ねて」若手が担当することが増えてくる。当然のことのながら当初の設計の意図などを無視して「動けばよいコード」を追加するため、当初の設計が徐々に崩れてくる。
  3. さらに時間が経つと、教育用には相応しくないボロボロ状態のコードになる。しかし、OJT用教材の定番という位置付けになっているため、多くのこんな開発者が「これが当たり前」と思って学習してしまう。こんな開発者は、やがてさらに出来の悪いコードを量産するようになる。

優れたソフトウェアアーキテクチャは、それなりに技術を持つ人がメンテナンスしてこそ意味を持つものだろう。経験の浅い開発者がデータアクセスに便利なグローバル変数を一つ追加する毎に、当初の優れたアーキテクチャは崩れていく。ソースコードを生かすも殺すも、それは開発者次第という気がする。