この問題は、今から8年ほど前に、セミナーを開催していたときに気付いたものです。
私は、セミナーに出席している皆さんに「・・それでは、こういうケースではどうでしょうか? 考えて見てください」と質問しました。
そこで出てきたのが「分かりません」という返事でした。その時私が期待したのは、各々の人のこれまでの経験を基に、“その場合は、〜するのがいいと思います”と推論の結果を待っていたのです。
これは全く予期しなかったものでした。たしかに、その場面のケースは事前には一つも紹介していません。その前に話したのは類似はしていても、直接は関係ないものでした。でも、何か考えられるだろうと思ったのです。
この時、そこにいる人達は、実は考えたのではなくて、その前に私が話した「語録」から該当するワードを検索していたことに気付いたのです。当然、検索エンジンは「該当なし」と返事してきます。その結果を受けて「分かりません」という返事が出たのです。
一般に「言葉」は、ある概念を代表したものです。「自動車」という言葉には、その言葉に表される概念をもっています。「動詞」も同じように、その言葉に対応した動作を持っています。「眠る」といって走り出す人はいません。「歩く」と「走る」にはきわどい部分もありますが、「競歩」の概念を持ち出して何とか区別するでしょう。
「考える」という動詞も、それにふさわしい脳の動作があるはずですが、実際には、「思い出す」という時の脳の動作が行なわれています。
「考える」というときに期待される動作は、その時点までに所有している知識の中から、問題に関連しそうな知識を幾つか(出来れば全部)集めて、その中に該当するものがあればそれを「考えた」結果として取り出します。もし、そこに適当なものがなければ、その知識を基にして「推論」を行い、適当と思われる結果を導き出さなければなりません。これが「考える」というときの脳の動作です。
しかしながら、私が見たのは、本来の脳の動作の前半部分だけです。後半部分が動かなかったのです。一体どうして後半部分が作動しなかったのか。
私たちは、小学生の時から(いや、もっと前からかも知れませんが)「さあ、考えて!」という言葉に接してきました。理科の授業の最後の処で、「この物質とこの液体を混ぜたらどうなるか。さぁ考えて!」と先生はいう。生徒は、その時間に習ったことを素早く思い出そうとします。そして、答えにふさわしいと思えるものを見つけたとき、「は〜い!」と手を挙げて答えるのです。その直後に「良くできました」という先生の言葉が戻ってきます。もし、ここで検索に失敗したとき、「分かりません」と答えるしかありません。小学生の低学年では、殆どの場合推論するにも材料が足りないのです。
しかしながら、高学年や中学生になれば、検索に失敗しても状況によっては推論が可能です。それに耐えられるほどの情報をもっている可能性があります。だか「分かりません」と答えたとき、先生は「推論」することを求めなかった。私自身も、思い返して見て「推論」を求められた明確な記憶はありません。
私が、この「考える」に疑問を抱いてから数年後、ある企業の新入社員の研修の場で、この後半の「推論」エンジンをちゃんと動かすことの出来る人に出会ったことがあります。その人は、その日の研修資料には必ず目を通してきていたのですが、私の(沢山の)質問に対して「分かりません」と答えたのは、10数日の間に数回しかありませんでした。さすがに推論するための情報を集めることが出来なかったのでしょう。それ以外は、必ず“私の期待している答え”にふさわしいと(当人が)判断できるような答えを見つけてきました。勿論、全部「◯」というわけではなく、そのなかの半分ぐらいは、まさに「推論」そのものでした。
その人は推理小説が好きだったようで、この時の推論も、犯人を推理している感覚だったのかも知れません。
この1件によって、私は「考える」ことの問題、すなわち意外と後半の推論エンジンが作動していないことに確証を得たわけです。
例えば私の場合、推論エンジンが働いていると思われるときは、自分に対して話しかけています。あるいは、堂々巡りしそうなときには、パソコンのキーを叩いて、要点などを整理し、それをネタに、またしゃべっています。そして要点の行の下に、まとまったことなどを書き加えていきます。
一般にはこのときは「紙メモ」が使われるのでしょうが、私の場合は、習慣の所為か「紙メモ」は殆ど書かなくなりました。パソコンが傍にないときだけです。
もう一つ、「考える」に似た行為に「思い付く」というのがあります。「思い出す」ともちょっと違います。私は、この場合は「思い付きのスタック」というのがあって、反射的、連想的にこのスタックから出てくる行為というふうに定義しています。思い出すよりも、時間的に短いし、それに推論エンジンはあまり作動していません。もちろん、実際には「思い付く」と「考える」を連動させている場合がありますが、そうでない場合も、確かにあるように思われます。
もちろん「思い付きのスタック」には、これまでの体験の中で考えたことも蓄えられることがあります。ただし、「考えた」かどうか明確ではない場合もあります。所謂、体験を通じて感じたことが整理されたものというケースもあるようです。
私がこれを区別する理由は、そのスタックを充実させることを怠った場合、数年という時間が経過していても同じアイデアしか出てこないとことを目撃したからです。確かに「思い出す」ときのように記憶を辿っているわけではない。さりとて推論エンジンが作動している様子もないのです。これを「考える」行為と一緒にするわけにはいかないと考えたからです。
というのが私の基本的な考え方です。
民主主義という言葉もそうだし、プログラムのバグの「原因」というのもそうです。言葉が、正しく実態を表さないまま使われたために、他に「本物」があることに気付かなくなるのです。こだわるようですが、「考える」も同じなのです。いま、行っている行為が「考える」行為でないとすれば、他に考える行為を求めることが出来ます。もし、違った行為に対して、それを無意識(あるいは無理矢理)に「考える」行為であるというように認識してしまった場合、他に考える行為を求める機会を失います。
私たちは、「生徒」である期間を通じて、「考える」ことを見に付けてこなかったのではないでしょうか。「思い出す」と「考える」の違いを教えてもらっていないのではないでしょうか。だとすれば、今からでも、明確に「考える」行為を身に付けるべきでしょう。
いま、私たちに求められているのは、
どうすればバグをなくし、ソフトウェアの品質を飛躍的に向上させることが出来るのか、
どうすれば身をクタクタにしないで市場の求めるものを提供できるのか、
どうすれば継続的に最適化し続けるプロセスを手にいれることが出来るのか、
と言ったことを「考え」て「行動する」ことなのですから。
私が、このページを通じて幾つかの「サンプル」を見せることは出来るでしょうが、それを実践するには“チューニング”が必要になります。そう簡単には違う文化のものをそのまま移植出来るわけではありません。したがって、そこにも「考える」ことが求められるのです。
プログラムは、数多く書けば慣れて、手早く書ける様に成るでしょう。
でも、“良い”プログラムは、考えた数に比例するのです。