完全習得学習はプログラミングの勉強に応用できるか

完全習得学習という学習方法がある。詳しい説明は省くが、従来の学校の授業のような全員が同じ時間で単元を学習するといったものではなく、個人によって学習のスピードは異なるのだから、各々が学習単元における到達目標に達成してから次の単元に進むべきだといった内容だ。

知識に穴がある状態で、次の単元に進もうとするとどこかで理解が進まなくなり、それが積み重なると理解が追いつかなくなるからしっかり基礎を理解した上で次の単元に進みましょうという感じだと思う。

これをプログラミングの学習について応用できるかを考えてみた。

実際、プログラミングをしていても、ある前提知識を理解していないとトラブルが発生した時に応用が効かなくなったり、良く理解しないままなんとなくで書いていたコードが突然動かなくなったりすることはある。

しかし、プログラミングの知識の「繋がり」を考えてみると、何が前提知識として必要かというのは、非常に複雑になってくると思う。

例えば、Javaのサーブレットを理解しようとすると、前提としてHTTPを始めとするWebの知識が必要だろう。もちろん、Java言語そのものの知識も必要になってくる。しかし、前提知識としてそれで足りるだろうか。そもそも前提となる技術を知っている時点でそのものについてかなり詳しくないだろうか。初学者がそのものの前提知識を自力で調べるのは少し辛いと思う。

反対に、学校の授業で例えると、足し算・引き算を習ってから掛け算・割り算を習うといった具合に教える順番がある程度確立されている。

しかしプログラミングの世界ではあまりそういったカリキュラムは確立されていないように思える。プログラミングスクールなどを体験したことはないが、おそらく考えられていないだろうと思う。

何故か。プログラミングの世界で完全習得学習を実践しようと思うと、おそらく膨大な時間が必要となってくるからだと思う。そもそも、数学を習うのだって小学校で6年間算数を学んだ後、さらに中学、高校で6年間学ぶのである。それでも数学の全てではなく、理数系の大学にいき更に学ぶのであろう。

プログラミングに生涯を賭けたければ膨大な時間をかけてやれば良いが、そうでない場合はどうするべきだろうと考えてみた。

まずは「目標」をどこに設定するかだと思う。例えばスマホアプリを作ることが目標だとすれば、そこから逆算して各技術要素の到達目標を決めるのはどうだろうか。各技術要素でスマホアプリを作成するのに必要な分だけの知識さえ身についていれば次の単元(技術)に学習対象を移せば良い。

だが、現実的に考えるとやはりスマホアプリに必要な知識というものがわからないからスマホアプリを作ってみて、必要な知識をその都度埋めるしかないと思う。

色々と考えてはみたが、やはりプログラミングの勉強で基礎から順番に、というのは難しいのではないかと思うので、完全習得学習の考えはそのまま適用できない気がする。

とはいえ、僕は完全習得学習についてそこまで深く調べれてないので、完全習得学習そのものをうまく捉えれてないからこの結論に至ってるかもしれない。

引き続き完全習得学習については調べていきたいと思う。

この記事が気に入ったらサポートをしてみませんか?