2020年から学校で
プログラミング教育を取り入れるらしいので軽く調べてみたところ、カリキュラムにかなり問題があるように思えたので久しぶりにブログに投稿します。。
まあ、僕が書いても社会的にはほぼ意味ないだろうなと思いつつ、社員の教育とかでも要るし、プログラミングの塾とかも始めるかもしれないんで、忘れないため、まとめるためにも。
国の出している概要を読んだのですが、正直なところ内容が20年以上前の”コンピュータ”教育になっていると思います。プログラミングではないです。これらは今必ず身につけているのが前提です。きっちり必須事項として色々定義しておかないと、教える先生によってとんでもない差が出かねないです。人材が足りませんし・・・。
はっきり言って、
論理的思考力とか使い方とかは確かに要るんだけれども、
現代で必要なのはそんなレベルじゃないです。
現代で必須になっているのは、
1.プログラムコードの再利用を考え、設計する力
2.プログラムコードの管理方法の習得
3.プログラムに置き換えることによる仕事の自動化
この3つです。この3つが無いと、コンピュータを利用して生産性を上げることを考えた時に大きな差が出ます。つまり、習得していないと競争に負けます。
各項目について、個別に見ていきましょう。
1.プログラムコードの再利用を考え、設計する力
現代におけるプログラムコードというのは、基本的に1回書けば、同じ処理はそのコードを呼び出せば達成できるようになっています。
というか、なっているべきであり、そう設計しなければなりません。
つまり、2度と同じ作業をする必要はありません。
重要なのでもう一度言いますが、
「2度と同じ作業をする必要はありません」。
このことが知識として無かったらどうなるでしょうか。
常に毎回同じようなコードを書くことになり、もの凄い時間的ロスが発生します。
これは、2.の習得も必要です。
何故なら、どこに書いたか分からなかったらまた同じコードを書くことになりますから。
そして、以降の3.にあるようにプログラムで仕事を自動化することができるため、この設計でプログラムが作られたのであれば、その仕事は二度と人間が行わなくてよくなります。
仕事が恐ろしいまでに高速化され”続ける”のです。1回じゃないんです。仕事をプログラム化する度に自動化されますから。
市場の要求レベルの上昇と共にやらなければならない仕事は増え続けますが、これをカバーするために継続的に高速化し続けられるんです。
当然のように気合と根性ではどうにもならない差が生まれ、さらにそれは時間経過で広がっていきます。
2.プログラムコードの管理方法の習得
プログラムコードというのは、数式っぽいですが機械を動かすための命令書ですので、どちらかというと
文章的な要素が強いものです。ようは
国語、英語、プログラミング言語ということです。
プログラミングの習得は1つの言語の習得とほぼ同じです。何故か小学校でコーディングはしないと概要に書いてあったのですが、
コーディングはやらないと駄目です。
むしろ、やるのは早い方がいいです。言語ですから。
そして、文章なので誤字や文脈の修正が発生します。大人の方なら、マイクロソフトのWordやグーグルのDocsで、変更履歴を記録したり、見たりしたことがあるのではないかと思いますが、プログラミングでもこれが必要です。
最近、マイクロソフトがGitHubを約8200億円で買収しましたが、ここはざっくり言えばプログラムコードの変更を管理するサービスをやっているところです。どれだけ重要か、買収金額を見れば分かりますよね。
他にも、脚注やカッコ書きも「コメント」として書く必要があります。
プログラムコードは文章なので、後で他の人に分かるように、他の人が使える・アレンジ出来るように書かなければいけません。他の人と書いてますが、これはコード内容が記憶に無い人のことを指すので、1年後の自分でも分かるように書きます。
後で修正したり再利用することを常に考える必要があるのです。
扱う量が膨大になってくると、その管理のための対策も必要です。これは、まさに今世界が直面している問題の1つです。
3.プログラムに置き換えることによる仕事の自動化
最後は自動化です。これはそのまま生産性に直結します。これは題名そのままの意味もありますが、問題の発見・解決能力を鍛える必要があるということも意味します。
どこを最適化すると全体が最も良くなるのか見極める力、そしてリスク管理も覚える必要があります。
これは結構高度で、大学の経営学部なんかでやっている内容を一部含みますが、部分的に抽出して、中学生ぐらいからやるべきと思います。頭の良い子なら、実生活ですぐに応用するでしょう。
今のプログラムによる自動化はデジタルデータに対して行うものが主ですが、これからは多種多様なロボットも生まれてくるでしょうから、自動化できる範囲は現実世界の実体のあるものへどんどん広がっていくでしょう。デジタルデータのみの自動化でも凄まじい差が出るのに、今後を考えるととんでもないことになります。このスキルは必須だと思います。
僕が実感している範囲で、現代で必須のプログラミングスキルを書いてみたのですが、いかがでしたでしょうか。
「それは違う」とか、「もっとこういうスキルも要る」とか、色々なご意見がでそうですが、もしよろしければお気軽にコメントしてくださいませ(返信できるかは分かりませんが。。)。ではでは。この内容が誰かの役に立つことを祈ります。。