要件定義か、それより少し進んで初期の基本設計工程あたりの話。
顧客から様々な要求や実現すべき機能などについて聞いていると、わりとよく出てくるのが次のような発言です。
「多くの場合はそこまで考える必要ないが、まれに起こることがある。だからその処理をシンプルにはできない」
「通常のケースではほとんど発生しないが、全くないとは言えない。そのレアケースは想定してほしい」
そう聞くと、多くの真面目なITエンジニア達はこう考えます。
「あり得るのだから、それを想定した情報システムにしなければ!!」
で、その「ないとは言えない」「あるかもしれない」ケースを想定して工程を進めると、途端に構築する情報システムの仕様や内部ロジックが複雑化を始めます。
想定すべきテストケースも格段に多くなり、当たり前ですがバグも続出、品質にもスケジュールにもよからぬインパクトを与えます。
もちろん予算も大幅オーバー…
ところが…
そんなこんなで艱難辛苦を乗り越えて、やっとのこと本稼働開始して5年くらい経ってみると…
「そんなレアケース、一度も発生していない…」
それどころか、
「こんな複雑なプログラムロジック、誰が何のために入れた?保守やりにくいったらありゃしない!」
なんてことも。
これから上流工程を担う若きITエンジニアの皆さん。
顧客が「念のために」想定するレアケース、実際はほとんど発生しないまま終わることがあります。
仮に発生したとしても、大抵の場合は「情報システムの機能」よりずっと手前の「業務運用」で皆さんとても上手く対処されます。
機能として想定しておく必要など最初からなかった、そんなことも多いのですよ。
つまり、ですね。
「ないとは言えない」とか、「あるかもしれない」というような話を、「ない」または「あったらその時考える(笑)」に寄せてしまえるかどうかが、良い情報システム(安価かつスピーディで高品質)にするための極意のひとつだと思うのです。
少なくとも私はそう考えています。
これまで数多くの無駄なロジックを生み出してきた経験からの結論です。