レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

子供向けプログラミング教育をやっていて辿り着いた先

先に結論を言えば、プログラミングのスキルの根底にあるスキルは「読解力」なんだなと考えています。

プログラム言語は、やはり言語なので、国語的能力がとても大事だということなんです。

2歳になる娘が日に日に言葉を覚えていく様子を見ていると国語の習得のステップとして、以下のようになると感じています。

  1. 単語を覚えるステップ(ルールを覚える)
  2. 人のマネをしてみる(例えば親や友達のマネで語彙力が上がっていく)ステップ(受動的なマネ)
  3. マネのネタを増やすに読書をするステップ(能動的なマネ)
  4. 自分らしい表現ができるようになるステップ(オリジナル)

こういうステップを経ていると思うんです。
親のマネをしたり、絵本を読んだりアニメを観たりしていく中で語彙力が上がっていきます。


守破離」にも通じる、学びの本質だと思うんです。


さて、僕は子供や学生に向けたプログラミングの教育をやっています。

彼ら彼女らの学習の変遷をみているとやっぱり類似するステップがあります。

  1. プログラミングのルールを知るステップ(ルールを覚える)
  2. ルールとお手本に従ってマネしてみるステップ(受動的なマネ)
  3. マネの積み重ねから改造による新しいアイデアが生まれるステップ(能動的なマネ)
  4. マネのネタとして、書籍やオープンソースなどの他人のコードを読むことでスキルアップするステップ(能動的なマネ)
  5. イデアを先にだして、実現する手段としてプログラミングがあるステップ(オリジナル)


そうです。国語の取得と完全に類似するステップを経るのです。


僕自身も文系上がりのSEだったので、すごく国語力に助けられたSE人生でした。

最初はプログラミングのルールを覚えるのに四苦八苦しました。
そしていろんなモノマネや写経をへて、少しずつアイデアが湧くようになり、アイデアありきで形にできるようになっていきました。

これらのステップの中で、「ルールを覚える」や「受動的なマネ」は大人や教師が与えてあげなくてはいけない部分だと思います。
ですが、「魚を与えるよりも魚の釣り方を教えよ」という格言に従うと、次の「能動的なマネ」ができるようにしてあげるのが大事だと思います。

プログラミングの世界で言えば、一流のプロレベルのスキルを習得するときには、現場作業だけではなくいかに多くの人のマネをするかが分かれ目になるように思います。

オープンソース読めとか、ネットコピペではなく本を写経しろとか、
プログラムの達人たちがいう言葉を言い換えれば、「プログラムの読解力」なのかなと思います。

しかし、単にプログラムソースを読むということだけではなく、国語的な読解力を身につけていくことは大事だと思います。なぜなら、プログラミングを行うことは自然言語とコンピュータ言語の翻訳だからです。


ということで、子供や学生向けに教育をする際にも読解力というスキルを身につけてもらうことを大事にしていきたいと思っています。