経験から学ぶ
月刊「Windows Server World」の連載コラム「IT嫌いはまだ早い」の編集前原稿です。もし、このコラムを読んで面白いと思ったら、ぜひバックナンバー(2007年6月号)をお求めください。もっと面白いはずです。なお、本文中の情報は原則として連載当時のものですのでご了承ください。
■□■
●経験至上主義
何度も書いているように、筆者の本業はITプロフェッショナル向けトレーナーだ。場合によっては、お客様先に出向いて講習を行う。このとき、事前に講師経歴書の提出を求められることがある。経歴書には、過去に担当した教育コースや取得済みの資格、業務経歴などを記載するのが一般的だ。
多くのトレーナーは、担当分野の実務経験を持っている。たとえば、プログラム言語の教育コース担当者はプログラマの経験がある。もちろん、それ自体は不思議なことではない。不思議なのは、お客様の反応だ。一部の人は、実務経験が長いほど、優秀なトレーナーだと思い込んでいるようなのだ。
経験を積むことは悪いことではない。しかし、経験と知識は比例するわけではない。
例えば、大プロジェクトの下流プログラマは、全体像が分からないまま仕事をしているかもしれない。その場合、得られる知識は断片的なものとなり、全体の構造を俯瞰する技能は身に付いていないだろう。
また、長期プロジェクトでは、プロジェクトが終了するまで新しい技術を学べないかもしれない。プロジェクトが終わったとき、経験年数は増えたが技術力が伴わない可能性だってあり得る。そして、何より問題なのは、現場の知識が常に正しいと思い込んでしまうことだ。
「Windowsでトラブルがあったら再起動する」。これは、教科書には載っていない現場の知識だった。実際に、かなりの確率でとりあえずはトラブルが解決する。しかし、再起動によって解決するトラブルの多くは再発する。これでは最適な解決方法とはいえない。再起動しなくても直るならその方がいいし、再発しないように対処するのはもっと望ましい。
一般に現場の知識は即効性に勝るが、根本的な原因を考慮していない。とりあえず再起動してその場をしのぐことが必要な場合もあるが、真の解決策とはいえない。
●経験を知識に変える
どのような分野でも、技能を修得する学習サイクルは変わらない。「予習・実習(講習)・復習」を繰り返すことである。実務経験から学ぶ場合でも、「予習・経験・復習」を繰り返さなければ意味がない。経験だけでは駄目なのだ。
予習では、担当分野の知識を身に付ける。講習会の受講や自習書の講読が一般的だろう。復習では、経験した内容と予習した内容との違いはなかったかどうかを検討する。違いがあれば、それはどこか。その原因は何か。どうすれば違いを解消できるか。こうしたことを考える。予習と経験の差を識別し、原因を探ることで多くの知識が身に付くはずだ。
最近は、さまざまなメーリングリストが公開されていて、問題解決の役に立っている。しかし、メーリングリストで入手した回答をそのまま適用して終わるようでは、その人のエンジニア人生は長くない。得られた回答を基に、なぜその回答が正しいのか、また何が原因だったのかを考える人だけが上級エンジニアになれる。
たいていのメーリングリストには、常連回答者がいる。彼(彼女)らの多くは、知識があるから常連回答者になったわけではない。常連回答者を目指したから知識が付いたのだ。はっきり常連になろうとは意識していないかもしれないが「他人の質問に対して答えよう」という思いが自分自身のスキルを伸ばすことになったのは間違いない。
他の人からの質問を嫌がらないエンジニアは早く成長する。即答できない場合でも「分からない」と突き放さないからだ。それどころか、質問者に代わって自分で調べることもある。自分の仕事を後回しにしてまで他人の質問に答えるのは、損に思える。しかし、自分で調べた内容は記憶に深く残るため、結局は自分のためになるものだ。
●知識は経験を超える
デカルトは、著書『方法序説』の中で、読書の効果を認めている。しかし、実はその後すぐに読書の限界も指摘している。そしてデカルトは机上の学問に限界を感じて旅に出たという。「書を捨てて旅に出よう」というわけだ(*)。
だが誤解してはいけない。デカルトは当時の最高の知識を身に付けた上で、これ以上学ぶものはないと判断したのだ。
筆者の持論は「十分な知識は未熟な経験を超える」である。経験でしか学べないことはもちろんある。しかし、そういう分野は決して多くない。そして、十分な知識がなければ、経験も役に立たない。
たとえば、ある種の染料は材料を煮詰めるとき、大きな音を出してかき混ぜることでよい色が出るといわれていたらしい。これは経験からしか得られない貴重な知識だ。
しかし、真相は、激しくかき混ぜることで釜の金属が溶け出し発色が良くなったのだという。そうだとすれば、一所懸命かき混ぜるより、必要な金属成分を添加する方が効率的だ。
経験だけからしか学ばない人は、より大きな音を立てる練習をしてしまうかもしれない。何年もかけて、最適な音の大きさを見つける人もいるだろう。しかし、十分な知識を持っていれば、1日の作業を体験するだけで真相に迫る可能性もある。
繰り返すが、筆者は経験を否定するわけではない。問題は、経験則の奥に隠れている法則を見極めるための探求心があるかどうか、そして、実際に法則を発見するだけの深い知識があるかどうかということだ。
●経験のない知識
さて、筆者は20年間ITトレーナーをやっているが、実務経験はないに等しい。部内のシステムの管理作業を片手間にやっていたくらいである。それでもシステムの設計や構築、トラブルシューティングの教育コースを担当している。お客様からの質問にもきちんと答えているつもりだ。
極端ないい方をすると、実務経験がないからこそ多くの知識を身に付けることができたのだと思う。大きなプロジェクトに参加し、顧客のビジネスに役立つシステムを作ることはIT技術者の醍醐味である。しかし、大きなプロジェクトにはさまざまな制約がある。プロジェクトから学べるのは、その制約の範囲内に限られる。そして、その制約は、もしかしたら今後一切役に立たない類のものかもしれない。
実際に役に立つ、生きた知識を修得するために重要なことは3点ある。
第1に、体系的な知識を教科書から身につけていること。操作方法だけが書いてあるハウツー本は最初に読む本ではない。
第2に、経験から学ぶこと。ただし、実際に経験するより、人の話を聞いた方が効率のよいことが多い。
第3に、想像力を働かせること。少ない事例から一般化した事実を取り出すことは、エンジニアにとって重要な資質である。
想像力を養うには、経験が必要だし、経験から学ぶには基礎知識が必要だ。結局のところ、教科書に書いてある知識こそがすべての根源なのだ。
●知識のない経験
IT業界は、未だに職人芸の世界である。コンピュータサイエンス(計算機科学)という学問も存在するが、コンピュータサイエンスの及ばない部分も多い。
職人の世界には、理論的な裏付けのない知識がある。たとえば「大きな音を立ててかき混ぜる」といった類の言い伝えだ。すべてが論理的に動作しているはずのコンピュータで、こうした「伝承」が必要なのはおかしな話である。
ワンステップ上のエンジニアを目指すなら、経験を積むとともに、深い知識を身につけてほしい。
経験したことは理解した、と思いこんでいる人がたくさんいる。
ゲーテ『格言と反省』高橋健二訳
(*)前回のタイトルは「書を持って、現場に出よう」だった。もちろん寺山修司の「書を捨てて町へ出よう」からとったものだ。デカルトが「書を捨てて旅に出よう」と主張していたのは後から知った。
■□■
「染料の液で布を煮詰める際に、大きな音を出してかき混ぜることで良い色が出る」。この話は、学生時代に何かの本で読んだのだが、どうしても裏付けが取れなかった。もしかしたら真実ではないかもしれない。その本は、染料の専門書ではなく、いわゆる「人工知能」の教科書だった。せっかくなので、その骨子を紹介しよう。
知識には「浅い知識」と「深い知識」がある。浅い知識は、専門家が体験で学んだもので、実用的だが理論的な裏付けがない。深い知識は、理論的に導かれるもので正確だが、現場ですぐに適用できるとは限らない。
例えば「煮立ったら、火を弱めても調理時間は変わらない」というのは浅い知識である。本文で紹介した「発色を良くするには音を立ててかき混ぜる」もそうだ。「煮立ったら火を弱める」というルールは覚えやすいし役に立つ。しかし、どの程度火を弱めていいのか、このルールでは判断できない。
一方「水の沸点は大気圧では摂氏100度であり、液体は沸点より高い温度にはならない」というのは深い知識である。深い知識はそれだけでは役に立たない。
しかし、煮立った状態が沸騰している状態であることに気付けば「煮立ったら沸騰状態を維持できる程度に火を弱めてよい」という結論を導ける。
深い知識を現場に適用するには、現象と理論を結びつけるための推論が必要である。そのため、気付くのに時間がかかるかもしれない。しかし、初めて出合う現象に対して応用が利くのは深い知識である。
浅い知識は「経験」、深い知識は「理論」である。経験だけでは応用が利かないし、理論だけでは迅速な判断ができない。両方のバランスを取ることが重要だ。
そしてもう1つ。深い知識を現実に応用するだけの想像力も重要である。気圧が下がると沸点が下がることを知っていれば、高地でご飯を美味しく炊くには圧力釜が必要なことが予想できるだろう。しかし、高地では気圧が低いことに気付く想像力がなければどんな知識も無価値である。こうした想像力は経験を積むことで得られることも多いが、経験が必須というわけではない。十分な知識があれば分かることだ。
経験することも大事だが、知識を得ることはもっと大事である。ぜひ、体系的な深い知識を習得するように心がけて欲しい。