【コラム】社会人向けと子ども向けではプログラミング学習の目的が違うはず
国内で子ども向けプログラミング学習の話題に触れるとき、大きな文脈として紹介されるのが経産省が2016年に発表したIT人材に関する報告です。
IT人材の最新動向と将来推計に関する調査結果を取りまとめました(METI/経済産業省)
IT人材が足りない、ぜんぜん足りない。
だから育成しなければ
⇨社会人も教養としてプログラミング技術を学んだりITリテラシーを高めるべき、という話へ
だから子どもたちも教育しなければ
⇨小学校からプログラミング教育、という話へ
このうち前者の話は、たとえばこんな感じのサービスが注目されることに繋がっています。
簡単にいえば、手に職を、という話です。
プログラミングスキルを身につけて転職したり、今の仕事の中でスキルアップしたり
いま求められるスキルであることに間違いはないので、プログラミングスキルを身につけておけば即戦力として自分をアピールできますね。
大人向けのプログラミング教育という話題は、自分自身がIT業界にいることもあって、とても共感できます。
一方で、子ども向けはどうでしょう?
先ほど紹介した記事を読むと分かると思うのですが、社会人向けのプログラミング学習はあくまでも即戦力であり、身につけているのはいわゆる"コーディングスキル"です。
プログラムを書くためには、プログラミング言語といってコンピュータに理解できる専用の言語を覚えたり、その言語を使ってプログラムを書くための環境を使いこなす学習が必要です。
社会人のプログラミング学習は、まず専用の環境を自分のPCにセットアップするところから始まって、プログラミング言語のお作法や文法を習い、少しずつステップアップしながら自分でプログラムを書けるようになるまで練習する、というスタイルです。
経産省のいうIT人材、というものが社会人向けにも子ども向けにも同じ文脈として使われるとしたら
子ども向けにも同じスタイルが適用されるのが正解なのでしょうか?
つまり、より低年齢のうちから即戦力となる人材を育成すべきなのでしょうか?
中学校では技術家庭の時間を使ってプログラミングを学ぶことになっています。
ロボットを操作して簡単なアルゴリズムを学んだり、ホームページを作ったり、大人顔負けのプログラミングをしたり、学校によって様々ではあるのですが、いずれも思考力に加えてプログラミングスキルを習得させようとしているように見えます。
技術家庭という科目の目的からして、そうなのかもしれません。
ここでプログラミングに関心をもつ子がいれば、その道へ進むこともあるでしょう。
とここまでは良いのです。
問題は、その前の過程である小学校では何を学ぶべきなのか?
というところです。
数年前の議論では、プログラミングスキルを学ばせることが目的ではない
とよく言われました。
プログラミングを学ぶのではない
プログラミングで学ぶのだ
といった論調もよく聞かれました。
多くの議論を経て、新学習指導要領ではコンピュータを使ったITリテラシーの教育
といった位置づけになりました。
ここまでにたくさんの議論がされたのだと思いますが、私が知る限り、小学生がプログラミングを学ぶ目的
について明確に答えているものはないように思います。
多くは
思考力を鍛えるため
ITを使った問題解決をするためのリテラシーを身につけるため
といったところでしょうか。
では、思考力を鍛える手段はプログラミングでなければいけないのでしょうか?
なぜプログラミング学習なのか?
といった疑問にはこたえられていません。
ITリテラシーは次世代の子どもたちにとって必須であることに異論はありません。
ここで指摘したいのは、果たしてそれはプログラミング教育なのか??
というところです。
ITリテラシーを習得するために、いわゆるコンピュータサイエンスの分野を子どもたちが先取りして学ぶのは賛成です。
こうした学習は家庭間で格差が生じるものなので、義務教育としてやるべきだと私も思います。
私にはこの中で「プログラミング」をどう位置づけるか?
といったところが曖昧になっているように感じるのです。
プログラムとは命令の集まりであり
アルゴリズムを決めてその通りにプログラムを動かすことがプログラミング
というのが私なりのプログラミングの定義です。
なので、コンピュータサイエンスの文脈で語るとスコープが狭くなりすぎてしまうんですよね。
本当はもっと、学べることがあるはずなのにもったいない。
ちなみに最近、子ども向けのオンラインプログラミング講座というものが出てきました。
Z会にもありましたね。
これこそ、大人のプログラミング学習と同じ文脈…
と思ってしまうのですがどうでしょうか?