使わない知識はどう扱うのが正解なのか

使わない知識はどう扱うのが正解なのか

やっかいな”使わない知識”

知識の全てを覚えられれば良いのだけど…

日々、プログラミングを勉強している私ですが、タイトルの通り「使わない知識ってどのように扱うのが正解なのか」と最近、考えています。

プログラミングの世界とは膨大な知識体系です。とんでもなく巨大な学問。
全ての知識を理解して、使いこなせることができれば、もう言うことなし!文句なし!なのですが、全てを網羅できる人なんてまずいないでしょう。
学習する言語が複数に渡れば尚更です。

まぁ結局のところ、プログラミングの中でも使う機能や関数などは全体の極々一部ではあるのですが、それを加味しても学習する範囲は膨大です。
しかも、常に情報がアップデートされるときた………。

正直、実際に知識を使うよりも、知識を仕入れる方がよっぽど労力がかかっている気がします………。


プログラミングを勉強していると「これ、いつ使うんだろう…」って機能に出くわすことがあります。
1回だけ使って、それからご無沙汰な機能・知識ってたま〜に出てくるんですよね。
プログラミングなので、しっかりと覚えていないと動作しないし…かと言って、毎回使う機能ってわけでもない…。

うーん。とても厄介ですね。

使わない知識の問題点

前置きはこれくらいにして…
今回は「使わない知識はどう扱うのが正解なのか」というテーマで話していきます。
使わない知識とは、文字通り”使わない“、あるいは、”使う頻度が極端に少ない“知識のことです。

使わない知識の問題って何でしょうか。
私なりに考えてみたところ、主に下記の2つではないかと。

  • 使える知識と使わない知識の判別が困難
  • 保守コストがかかる

使える知識と使わない知識の判別が困難

そもそも知識が使えるか・使えないかってパッと判断できるものではないですよね。
使わないと思っていた知識が、ある日突然、必要になる時があります。
逆に、使える知識が陳腐化し、どんどん使えなくなっていくこともあります。

この判断がなかなかに難しく、どの分野に労力を注げば良いのか、判断に迷ってしまいます。

保守コストがかかる

知識って筋肉と同じで普段から使っていないと、すぐに忘れてしまいます。
使わない知識であれば、尚更です。
使わない知識はそのまま忘れてしまうことができたら楽なのですが、そうしてしまうと、いざという時に対応できなくなるのが難儀なところですね。

使わない知識の保守コストは、往々にして肥大しがちです。

使わない知識の扱い方

さて、本題です。使わない知識ってどのように扱っていくのが正解なのでしょうか。
私が思うに、下記の方法があるかと。

  • 評価遅延学習法
  • トリガー式記憶方法
  • 使わない知識は切り捨てる

評価遅延学習法

プログラミングの世界で、よく出てくる勉強法が評価遅延学習法です。
ハッカーと遅延評価勉強法の記事で、言及されている通り、どうやらネット上の造語のようです。

下記が遅延評価勉強法の説明の引用です。

「遅延評価」という言葉を調べてみると「ある式を、その結果が本当に必要になる時点までは評価しないでおくテクニック」とあります。
そのメリットは「条件次第で捨ててしまうような値を事前に準備することは非効率的である。このような場合遅延評価を行うと必要なときだけ値が計算されるので計算量を低減できる」とありました。
 

ここから遅延評価勉強法とは「その知識が必要になった時に初めて勉強する方法」です。
もっと言えば「○○を学んだから××をやってみる」ではなく、「××をやりたいから○○を勉強する」と定義できます。

参考元:ハッカーと遅延評価勉強法

要は「必要になった時に、初めて必要になった知識を勉強すれば良い」という学習方法です。
遅延評価勉強法を採用すれば、無駄な知識…もとい使わない知識に出会うことなく、効率的に勉強を進めることができます。

その反面、遅延評価勉強法には、知識に偏りが生じたり、知識を体系化しづらいというデメリットがあります。

トリガー式記憶方法

トリガー式記憶方法」は私の造語です。
実際にこの用語が使われているわけではありません。便宜上、このように命名しました。

ここで、ちょっと学生時代の国語の定期テストを思い出してください。
国語って、歴史とか化学などの暗記科目ではなく、必ず文中に答えがあるんですよね。

つまり、国語の定期テストって、答えの全てを記憶していなくとも、どこに答えが書いてあるかさえ覚えておけば、問題って解けるんです。
この「どこに答えが書いてあるか」を把握するために、文章の中の重要なキーワードだけを最小限覚えておきます。
たったこれだけの対策で、国語のテストって点を取れてしまうわけです。

トリガー式記憶方法」とは、まさに国語の定期テスト対策と一緒で、答えを探すトリガーだけを覚えておく記憶方法です。

例えば、JavaScriptの正規表現とかMath()の使い方とか。
私もよく書き方を忘れてしまうのですが、「RegExp」や「match」、「Math.abs」とか「Math.floor」などのキーワードだけは覚えているので、すぐにGoogle先生に聞いて、機能を把握できています。
ぶっちゃけ、どれがどんな機能で、どういう書き方をしないといけないか…等の細かいことは覚えていません。
大切なキーワードのみを覚えているだけです。さすがにJavaScriptの基本構文は覚えていますが。

こんな感じで「トリガー式記憶方法」は、詳細な情報を知らなくとも、トリガーとなるモノを覚えていれば、すぐに調べて対処できます。
必要最小限な物事を覚えるだけで良いので、学習コストを軽くもなりますね。

使わない知識は切り捨てる

はい。上記の通りです。
本当に使わない知識なのであれば、切り捨てましょう。忘れましょう。

結局、使わないってことは、不必要な知識だったってことです。
さっさと忘れてしまって、新しいことを覚えた方が良いでしょう。

使わない知識への銀の弾丸は存在しない

ここまで書いておいてアレですが、使わない知識への銀の弾丸は存在しないと思います。

そもそも「使う知識」と「使わない知識」の線引ってかなり難しいですし、使わないと思っていた知識が、ある日突然必要に迫られることだってあります。
また、上記で示した対処方法も全てを解決できるわけではありません。あくまで次善策のレベルです。

月並みな言い方ですが、評価遅延学習法にしろ、トリガー式記憶方法にしろ、どんな対処法を採用するにしても、常に勉強を続けていくことが大切なのではないでしょうか。

ある意味では、「勉強を継続すること」が銀の弾丸なのかもしれませんね。

まとめ

この記事のまとめ
・使わない知識の問題点
 ・使える知識と使わない知識の判別が困難
 ・保守コストがかかる
・使わない知識への銀の弾丸は存在しないが、対処法はいくつかある。
・使わない知識の扱い方
 ・評価遅延学習法
 ・トリガー式記憶方法
 ・使わない知識は切り捨てる

以上、私なりの使わない知識への考察と対処法でした。