私がこれまで関わってきたのは「ビジネスシステム」の開発です。
受発注管理とか在庫管理、売上分析など、企業のビジネスにかかわる情報システムです。
スマホアプリやゲームなどの世界に比べ、「IT業界」の中でも歴史の古い分野と言えるでしょう。
最も多くの「ITエンジニア」が関わっている分野かもしれません。
ところで、これら「ビジネスシステム」にとって最も大事なフェイズは何だと思いますか?
設計?
要件定義?
いいえ、違います。
「運用保守フェイズ」です。
異論あるかもしれません。
しかし、小さいながらもビジネスシステムを20年以上構築してきた会社の代表として、ここに断言します。
ソフトウェア開発の一番難しいところは、建築などと違って、
「作る前の段階では『何を作るべきか』が実は誰にもよくわかっていない」
という点なのです。奇妙なことですけど。
だから、本当に役に立つ良い情報システムにするためには、本稼働後に「調整」していくことが重要なのです。
顧客にこの「調整」という考え方を理解してもらうと、
「最小限の機能でスモールスタートし、動かしながら徐々に機能追加、修正していく」
という、とても理想的なプロジェクト運営が可能になります。
ただし、それには本稼働開始後の手厚い(高価な)保守契約が必要で、長年の顧客ならともかく、初回取引ではなかなか理解して頂けないことも多いのですけどね。
で、そのような「本稼働後に成長する情報システム」とするためには、当初設計段階から、「柔軟性」を持たせた構造にしておく必要があります。
これは「分岐の判断は可能な限り外部パラメータ化しておき、プログラム修正なしに動作変更を可能とする」と言うことではありません。
むしろその逆です。
「分岐の少ないシンプルな構造にしておき、後で必要に応じたステップ追加や修正をしやすいようにしておく」ということです。
柔軟性に優れたシンプルな情報システムの方が、過剰品質のものより結局長生きします。
私は20年間、それをこの眼で見てきました。