令和2年4月から小学校でプログラミング授業が開始されます。
かくいう私は、平成元年にプログラミングを学び、以来13年プログラマーとして従事してきました。
その後ホームページ屋になってからも、webプログラム開発をさせていただき、プログラマーとしてのスキルを駆使させていただいております。
今回はプログラマー目線から、小学校のプログラミング授業について考察したいと思います。
私の場合プログラミングは今も3つの役に立っています。
子供のころ、素朴な疑問で「これって大人になったら何の役に立つんだろう?」と思うことがありました。
実際大人になってどうだったかというと、結果は「半々」です。
理数系はプログラミングやホームページ制作技術の役に立っていますし、文系科目はホームページの「原稿制作」に役立っています。
その反面、活かせなかった科目も当然あります。
ではプログラミングは将来なんの役に立つのでしょうか?
学生の時にプログラミングを学び、プログラマーとして従事してきた私の目線でお話いたします。
私の場合はプログラミング知識が、今も3つの役に立っています。
[その1]仕事として役に立っています。
私はプログラマーとして従事させていただき、ホームページ屋になった後も、webプログラムの制作もさせていただきました。今も収入を得る原資として役に立っています。
「手に職」と言われますが、技術を持っていると案外何とかなるものです。
技術としてのプログラミングは私にとっては「職業」として役に立っています。
これも高校生の時にプログラミングの授業を受けたことがきっかけでした。
無論プログラマーには「向き」「不向き」があります。
私はプログラマーに向いているほうでしたが、プログラミング授業がなかったら、そのことに気づけないままでした。
偶然とはいえ、自分に向いている技術を学生の時に知ることができました。
[その2]困難なミッションを解決する道筋が見えるようになります。
会社仕事をさせていただくと、膨大な量の仕事を任されることがあります。
自分のキャパシティをはるかに超えている仕事は「無理」としか言えないのが普通です。
私もそのような場合「無理だこれ。」と最初に感じます。
ただ、そのあと頭の中で仕事の内容を「分解」し「再構築」する作業を無意識にやっています。
なぜならばキャパシティを超える仕事も、一部だけを切り取ると「容易」な仕事です。「容易な仕事」を積み重ねると困難なミッションも解決できるからです。
私にはプログラミング技術の一つである「アルゴリズム構築思考」で物事を考える癖があります。
アルゴリズムとは「プログラムの道筋」のことです。
プログラマーは普段から「どうすれば実現できるのか?」「どのような方法でアプローチすべきか」というようなことばかり考えます。
気が付くとプログラム以外のことに対しても、同じような考え方をするようになっていました。
プログラミングは、基本前向きな考え方で構築する技術です。
前向きな姿勢を養うのに向いていると思います。
事実、「無理難題」だけを見せられると「あきらめ」になってしまいます。
でも「プログラミング思考」で無理難題を「分解」し、容易な仕事の集合体へ「再構築」すれば、無理難題でなくなります。
この思考方法のおかげで、私は困難な仕事をこなすことができました。
[その3]探求心が向上し、気が付いたら人様のできないことができるようになっていました。
プログラマーの方ならば実感されている方多い事柄があります。
それは「新しい知識と出会う喜び」です。
毎日毎日プログラムと向き合っていると、ある日「もっと上手い方法」が閃くことがあります。
実際に実践し、上手くいったときの成功体験は、代えがたい喜びです。
例えるならば、スポーツなどの対戦で勝利した時のような感じです。
一度この感覚を味わうと、プログラミングへの「探求心」が始まります。
そして結果が伴うと「探求心」がやみつきになります。
そういった感覚がいつの間にか身についてしまい、プログラミング以外でも探求心がわくことがあります。
例えばこんなことがありました。
プログラミングは「ソフトウェア」の分野で、パソコンなどの「ハードウェア」とはジャンルが違います。そのためパソコン本体について、私は素人同然でした。
でもある日、パソコンの性能向上について興味がわき、パソコン探求が始まりました。やがて気が付くとパソコンを自作するなど、パソコンについてとても詳しくなっていました。
興味の湧いたことに「探求心」がわき、さらに「問題解決」などの体験が加わることで知識と経験が蓄積していった結果でした。
プログラマーには「解析」したくなるさががあります。
その感覚が発達すると「探求心」が覚醒し「調べて試す」行動力が身に付きます。
これは「独学するための方法」そのものです。
「独学力」があると、大抵のことは身につくようになります。
プログラミングの考え方は「独学力向上」にもつながるのです。
プログラミングの本質は「思考力」
プログラミングというと、プログラム言語を用いて何かを作るということに着目しがちです。
でも私はプログラミングで一番重要なものは「思考」だと考えます。
なぜならば、プログラム言語は「練習・訓練」で誰にでも身に付きますが、アルゴリズムの構築(プログラム設計・思考)は実践でしか身につかないためです。
「プログラム思考の実践」とは自分で考え、自分で試行錯誤することです。
与えられた課題をこなすのは「練習・訓練」です。
私は仕事を通じてたまたまプログラム思考を実践しつづける環境の中にいました。それが幸いし、プログラミング思考が身に付きました。
すべての物事にプログラム思考が役に立つとは言えませんが、少なくとも私には役に立っています。
課題を分解し、難易度の低いものへ再構築する。
そういう考え方がいずれ役に立つと私は思います。