見出し画像

プログラミングができるようになる才能・素養は何か

こんにちはK研究員です。


私はプログラミング教育をするからには子供にプログラミングができるようになってほしいと思います。一方で、私は大学でコンピューターサイエンスを専攻していましたが、当時そこの学生の半分以上はプログラミングができませんでした。

例えば、ある授業で先生が、「3人組を作って、来週までに数を並び替えるプログラムを作れ。一番速いプログラムを作ったグループが勝ちだ」といったことがあります。私のグループの一人がプログラムを作って持ってきましたが、それは教科書の丸写しで、しかも文法が一部間違っていて動かないものでした。

彼は偏差値だけ見れば優秀な大学生のはずなのに、なぜプログラミングができなかってのでしょうか。

プログラミングの素養に関する研究はあり、ちょっと古いですがこんな話があります。原点を読んでないのであれですが、新しいルールを受け入れることができるかがカギなのかもしれません。

ところで、プログラミングができなかった彼の場合はそんなに難しい話でもない気がしています。プログラムは「コンパイル」という作業をすれば文法が間違っているかいるかどうかはすぐにわかるはずなのに、それさえしていないのです。


さて、私はプログラミングの素養についてちょっと違う仮説を持っています。それはプログラミングと他のことを勉強することとの違いについてから着想を得ています。

例えば数学などの高校までの学校の勉強では反復練習が非常に大きなウェイトを占めています。皆様も連立方程式は何百回と加減法で解いたのではないでしょうか。このような反復練習が重要な勉強の場合、自発的に課題を設定したり解き方を考えたりしなくても、いつかできるようになります。

何も考えず問題集とにらめっこしていれば、先生が来て、「これはね、加減法で解くんだよ」と教えてくれます。解けない問題があれば、またにらめっこしていると、先生がやってきて「これはね、両辺に3をかけるんだよ」と教えてくれるでしょう。これを繰り返していれば、自発的には何もせずに連立方程式が解けるようになります。先生も俺が教えたと鼻高々でしょう。

一方で、プログラミングは違います。先生が問題を出してくれることもあるかもしれませんが、基本的には自分でこれをやりたいという風にやりたいことを設定しないといけません。もちろんたまには「Scratchで猫を右に3歩、上に2歩動かしてみよう」という課題はあるかもしれません。しかし、「今度は左に5歩」というようにそれを何十回も反復することはありません。

プログラミングの学習はより自発的です。Scratchで迷路ゲームを作りたい、と思ったときに「壁と通路をどう作ろうか、そうだ!透明のところは当たり判定がないかもしれないぞ、試しにやってみよう、確かにそうだった。これで迷路を作れる」というように自分でアイデアを出して試行錯誤していかない限り、プログラミングはできるようにならないでしょう。


このような能力を「自発性」と言ってみます。難しいところはすべてにおいて自発性のない人間というのはあまりいないということです。誰でも自分の好きなことには自分でアイデアを出して試行錯誤をします。大学生ならサークル活動に自発的な人もいますし、コンパに自発的な人もいます。

私の大学の半数ぐらいの人たちは、プログラミングの”お勉強”には自発的ではなかったのではないだろうかと思っています。かっこわるくて”お勉強”なんかに自発的になれないという人とそもそも自発性が低い人の両方がいる気がします。

小学生のプログラミング教育に期待したい点としてもこの辺りがあります。プログラミングは小学生でもできることでお勉強というような堅苦しいものではなく、イケてるものなんだという空気が出来上がれば、自発的になれなかった人の中にはプログラミングに自発性を傾ける人も出てくるでしょう。

そうなれば、日本のプログラミング人口は大いに伸びる余地があると感じています

また、もしプログラミング教育の鍵が自発性にあるのだとしたら、それを伸ばすような教育は十分可能であるとも思います。

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。