プログラミング教育どうすべきか?あるいは論理的思考能力の鍛え方
Twitterにプログラミング教材の写真が出回っていて話題だ。
同じ( ) を繰り返す場合は、繰り返す( ) や ( )を指定する。
答え:前から「命令」「回数」「条件」 ということらしい。
穴埋めクイズですね。これは高度な忖度能力がないと解けない。
似た話として、ウチの娘(中3)の家庭科のテストを思い出した。彼女は料理などの家事能力は中学生にしては高いと思うけど、テストになると教科書の穴埋め問題で、全然点が取れないらしい(クラスメイトは教科書を暗記するのでそんなテストでも点が取れる。完全に人生の無駄である)。そう言えば僕も小学生の時に「玄米は( )が悪い」という問題に「味」と書いたら、正解は「消化」だったことがある。
さて。
プログラミング能力を調べるために穴埋め問題を出すのはクソだとは思うけど、じゃあ40人の生徒を相手にどうやって教える?どうやって短時間で能力査定する?と考えると、かなり難しい。僕はプログラミングもできるし人に教える仕事を長くしているけれども、ちょっと思いつかないな・・。
結局、「プログラミング能力と教育力を高次元で兼ね備えた化け物」以外がプログラミング教育を担当したらこうなるしかないのではないだろうか。そしてそんな人は今現在の教員にはいないだろう。例えば歴史だって本来虫食い暗記用の科目じゃないのに、私立最高峰の早稲田だって入試でトリビアクイズ出している。大人数を相手に、効率よく教えたり能力査定をするのは本当に難しい。
そもそも、僕はプログラミング早期教育に大反対の立場である。
この問題、天才と秀才と凡人の話が混ざっているのが議論をややこしくしている。
★天才とプログラミング
30年前から、小学生の頃から見よう見まねでプログラミングやってた、みたいな天才はいる。だが、公教育とは一切関係ないので、こういう人は議論では無視すべきだ。今は環境が整っているのでやる奴は勝手にやるだろうし、教えるにしても家庭教育や塾の領域だろう。個人的には模擬プログラミングを使ったゲーム(僕が大学生の時にやっていたのはプレイステーションのカルネージハート)を小学生全員にやらせて天才を選別するのが良いと思う。囲碁将棋の選抜みたいに競技にするのが手っ取り早い。
★凡人とプログラミング
次に凡人の話。論理的思考能力がない人に、前記の穴埋め問題を訓練しても何も生まない。
というかもっとまともなプログラミング教育をしたとしても、論理的思考能力がなければ身につかないんじゃないかな。これ言うと怒られそうだけど。
25年前にバイト先で会ったフリーターさんは「高校の勉強が苦手だったので、専門学校に行った。COBOLというのをやらされたけど、さっぱりわからなかった」と言っていた。バイト先は牛丼チェーンの運送センターだったが、その人はトラック運転にかけては僕よりはるかにスキルが高かったので、COBOLを途中で挫折して正解だったのではないか。
★秀才とプログラミング
学校でプログラミング教育するのに意味があるとすれば、論理的思考能力を身につけた人を少しでも増やすことと、身につけた人にプログラミングを経験させることだろう。
論理的思考能力は国語と算数数学で身につけるのが最も実績があり確実。これは議論の余地はない。「AI vs 文章が読めない子どもたち」で詳しく論じていたように、多くの人はプログラミング言語どころか日本語が正しく読めない。
そして数学。例えば「a>0の時にグラフはこういう形になって・・」みたいな場合分けを緻密に整理していく思考法を僕は高1の数学で学んだが、こういう能力が身についていないとプログラミングはつらい。同じことを学ぶのでも周回遅れからのスタートになってしまい、その間に挫折してしまう。僕が「プログラミングを中高生に教えるくらいなら、数学や国語(英語でもいい)をみっちり鍛えておいて」と強く願っているのはこういう理由だ。
もし論理的思考能力がある人をうまく育てられたならば、そういう人にプログラミングを経験をさせていくことは有意義だろう。僕自身は社会人になってからようやくはじめたが、もっと早くからやっていても良かった。
そのためには以下の施策が考えられる。
a)出来れば入試にプログラミングを取り入れる
学校のカリキュラムにしても、生徒が勉強するとは限らないが、入試の一部になれば確実に必死に勉強する。
ただし現時点ではやり方が分からない。プログラマー経験者の能力を1:1の面接で見極めるのだって各社試行錯誤している。1万人が受けるテストでどうやって本質的な(穴埋め問題ではない)プログラミング能力を測ったら良いのだろうか。
b)一定以上の偏差値の高校/大学でプログラミングを必修にする
僕自身は大学の情報処理概論の単位を取ったが、実際には何一つ理解していなかった(それでも当時は単位を取れた。方法は・・ゲフンゲフン)。
だが最近の学生は真面目だからちゃんとやる人も多いだろう。こういう風に偏差値で教えることを変えるのは批判が多いと思うが、上記の様に「数学、国語、英語をきちんと学び、論理的思考能力があるか?」の代替変数にはなると思う。というか、他に良い指標がない。
c)既存のエリートコースから外れた秀才を発掘する
偏差値だけで選抜すると、何らかの事情でテスト勉強はしなかったが、実は論理的思考能力がある人を漏らしてしまう。今までの日本社会はそういう人を有効活用できていなかったが、プログラミングとそういう隠れた逸材は相性がいい。既存のエリートコースにいる人はどうせ社会が有効活用するので、そうじゃない人こそプログラマーとして活躍して欲しい。
そのためにはネット上のトレーニングやコンテストを充実させるのが一番手っ取り早いだろう。
先にも書いたようにプログラミングを使った対戦ゲームができることはもっと大きいと思う。野球の甲子園よりも盛り上がるくらいのポテンシャルはあるだろうし、社会的意義は比べ物にならない。プロの野球選手には数百人しかなれないが、プロのプログラマーは何万人も必要だから、全国大会に出られなくてもクラスで1番程度でも充分飯が食えるからだ。
★まとめ
僕はプログラミングを論理的思考実践だと思っている。
だから論理的思考力がない人がやっても意味不明なだけで、それによって論理的思考が身につくとは思えない。ある程度論理的思考力が身についている人がプログラミングをやると、それをさらに伸ばす効果はある。伸ばすというよりも、身につけた論理的思考能力を実社会で活かす方法を、プログラミングを学ぶと知れるのかもしれない。
論理的思考能力を鍛えるのではななく、あくまでその実践がプログラミング。
なので、公教育というマジョリティを相手にする制度とプログラミングはとことん相性が悪いのだ。
もちろん「そんなことない、公教育で教えられる」という人もいるだろう(いて欲しい)。だが、そういう話を聞くと、僕たちの社会が、論理的な日本語文章を書くための教育すら成功していないことを思いだす。100年以上試みているのに。
***************************出版記念セミナー開催!
1/23と2/6、いずれも水曜日の夜、出版記念セミナーをやります。
1/23がコラム「極言暴論」でお馴染みの木村岳史さんと白川の講演。
2/6が本に登場してくださった住友生命とNHNジャパンの方々をお招きしての生々しい座談会です。
申し込みはこちらから。
https://www.ctp.co.jp/events/seminar/
***************************新刊ニュース
2018/12/17に発売してから3週間程度で、早くも重版になりました。
著者としては売れているのかどうか分からず実感はないのですが、1回も重版せずに終わる本も多いのだから、売れているのでしょう。良い本が売れるとは限らないので、大変うれしいです。
ビジネス書が充実している大きめの本屋さんでは、たいてい平積みか面置きしてくれているようです。Kindle版もあるけど図表が多いから紙のほうがおすすめかな。