欽ドンの良い子悪い子普通の子でも紹介されたなぞなぞにこんなのがある。コンピュータネタ、目次へ
「太郎君はかぜで休んでいました。花子さんがお見舞いに行きました。途中、牛がモーと鳴き、蝶々がひらひらと飛んでいました。さあ、太郎君の病気は何でしょう。」
どういうわけか、たいていの人は「盲腸」と答えてしまうのだ。最初に「かぜで休んでいます」と言っているにもかかわらず。これが何を意味するかというと、教えられたことよりも、自分で思いついたことの方が何倍も印象が強く、それを覆すのは大変だということである。
確かに論理的には牛と盲腸炎の間には何の関係もない。蝶々には盲腸すらない。だから「盲腸」などという推論が出てくるはずはない。更に、最初に「かぜ」と言っている。誤解の余地は全くないはずだ。ところがそうはならない。
これは、コミュニケーションをとる上で非常な障害となる。なにしろ論理的には出てこない思いこみなのであるから、説明の必要すら感じられないのだ。あとで話が違うともめるときに、この手の思いこみが障害になっていることが多そうだ。
例えばソート順。ポピュラーなソートアルゴリズムは、ソートのキー項目以外について安定的ではない。ところが、ソートというと順番を並び替えることで、そのアルゴリズムについてせいぜいトランプの順序を直すくらいのことしか考えない場合は、ソートのキー項目以外については、元の順序が保たれると誤解しがちである。
システム要件としては「定められたキー項目でソートする」ことしかうたっておらず、どこにも「それ以外については元の順序が保たれる」とは書いていないが、そうはとってくれそうもない。
おかげさまで、出力レコードに外部ソートをもう一度かけるというみっともないことをおこなった覚えがある。しかしあの新人ちゃん、どこであんなアルゴリズムを覚えてきたのだろう。さらにこれに「マーケティング用語」が入ってくると話はややこしくなる。「自動転送機能」などと書いてあるので、ついつい何もしなくてもデータがネットワーク上を飛ぶように思うではないか。でもよく見ると単純なオンライン転送機能をサポートしているだけで、送り側端末でも受け側端末でもオペレーションが発生する。
運用を考えるとき、双方の端末でオペレーションをすることを考えなければならないわけで、それを前提に運用設計をしていた。「自動転送とかいてありますが、実際には手動です」と何回も説明した。でも、やっぱり端末には手を触れなくて良いと思ってしまうんだなあ。実際にさわる人は。要件定義は誤解を生みやすい作業で、とても気を遣うのが常とはいえ、これに関しては絶望的である。最初のなぞなぞの例でいえば、相手がお見舞いにゆく前に「何が見えても関係ありませんよ、病名はかぜですよ」と言わねばならない。でもそこまでの予測は不可能に近いぜい。
精一杯走り回っているつもりなんだけどね。