先日エントリーした「「科学的」って何だ!」の中で、科学というのは「わかるか、わからないか」という世界の話で、人間が関わるところでの議論はみんな「納得する」の世界のことになるというようなことを書いた。
これを情報システムの世界についてみていくと、どうも今は「わかるか、わからないか」の世界ばかりで動いているような気がする。突き詰めれば、コンピュータの0か1かの話になるわけで、厳密さ、正確さが求められる。この厳密さはハードウエアとかOSのところでは当然であるが、アプリケーションの領域に行くとだんだんゆるくなってきてもいいのではないだろうか。
それが、コンピュータ屋さんはそこにまで厳密さを要求している。特に基幹業務と言われているところでは顕著だ。はたして、そこまで必要なのだろうか。
例えば、業務アプリケーションをながめてみると必ずしも「わかるか、わからないか」の世界だけではなく、「納得するか、納得しないか」の世界も現にあるといえる。フロントエンドのところや顧客接点では、まさにこんな世界ばかりではないだろうか。言い換えれば、システムというのはゆるいところからだんだん固めていくプロセスでもあるといえる。
そう考えると、一旦この厳密性を外してみたらどうだろうか。ゆるくするのだ。どういうことかというと、極論すると、決まった処理順序、規則などを決めないのだ。もっと人間臭い世界にするのだ。
少し飛躍するかもしれないが、これはWeb2.0の本質のひとつではないだろうか。集合知や参加型のアーキテクチャなんてゆるさそのままの世界でしょう。
飛躍ついでにさらに言うと、よくSEは業務をわからなくてはいけない、業務の経験がないと要件を固められないと言われますが、この場合の業務というのは、おそらく現場の人が長年培った仕事のやり方であるはずです。もしそうなら、いつまでたってもわかるはずはない。例外的な処理やその人独特のやり方で固まっているわけだから。会社って組織的に動いているようで、実は個人でしか動いていないんですね。
そこでだ。そんなものは要件にしてはいけない。単なるひとつのケースとしなくてはならない。ただし、例外や固有を省いたところは厳密なものになる。そこは、“科学的”な世界にもって行けるので、業務を知らなくても論理的な思考回路をもっていれば要件定義ができる。
“納得”の世界はゆるくしてやればいい。そして、“納得”したいひとに作らせればいい。
若いSEのひとよ、おまえこんなことも知らないのかと怒られても嘆くでない、あなたの知らない業務はどうでもいいことなのだ。あなたが、磨かなくてはいけないスキルは、確定させたデータを会社のコアデータベースにどうマッピングさせるかということだ。
この硬軟をもたせてバランスをとることこそ、これからのシステムおよび開発に望まれるものと思う。