弊社、今年から新入社員研修に「プログラミング研修」がなくなりました。
私もそれがいいと思います。「最近は AI がコードを書いてくれますから、プログラミング スキルは不要」と本気で考えています。
いっぽうで、「プログラミング教育」が不要になることはないだろうなと思っています。混乱させるつもりはありません。これはまったく矛盾しないからです。
端的に結論を述べます。
- プログラミング教育が育てるものは、プログラムを書ける能力ではない。
- 本当に育てたいのは、「変化する世の中に適合できる人材」としての能力。
- 特に重要なのがこの3つ。
- 論理的思考
- 問題解決の能力
- 新しい価値を生みだす能力
─── ちなみに、これはなんとなく一般化されているものな気がします。小学校でプログラミング教育が必修化されたさいも、文部科学省は同様の考え方を示しました。
言われた課題をクリアするだけの「研修」はムダで(これは私の意見)、技術を価値につなげる思考を育てる「教育」は必要なのです。
プログラミング教育の本質
2020 年度から小学校でプログラミング教育が必修化されました。この「プログラミング教育」の狙いはなんなのでしょうか。
目的はプログラマーを育てることではありません。
問題を解決する力や新しい価値を生み出す力を養うことです。文部科学省 風にいうと「論理的思考力や創造性、問題解決能力等の育成」になります。
「必修化」といっても「プログラミング」という教科が新設されたわけではありません。
(あまり、じっさいの教育現場は知らないのですが)算数・理科などの既存の教科の中で、プログラミング的思考を育てる学習が行われるようになったそうです。
例えば、算数では「正多角形を描く問題」があるそうです。
前に 100 進む、 右に 72 度回る。
という命令を5回繰り返すと、正五角形が書けます。
児童は:
・360° ÷ 5 = 72°
・5回繰り返す
・命令を並べる
ということを考えながら、課題を解いていきます。
例えば、理科では「電気がつくライトの制御」があります。
・ひとが近づいたらライトが光る。
・暗くなったらライトが光る。
・一定時間後にライトは消える。
といった制御を体験するとのことです。
ここでは「条件によって動きをかえる」という考え方を学びます。
このように、プログラムを書くことではなく、「どういう手順なら目的を達成できるか」を考えたり、身の回りの制御の仕組みを理解する学習をしているようです。
プログラミング研修というと
プログラミング研修というと、Python などのプログラミング言語をつかって、コンソール上に「Hello World」を表示したり、九九の表を出力したり、サイコロアプリを作ったりする課題を想像するかもしれません。
ちなみに、私が新入社員のころのプログラミング研修もそのような感じでした。率直にいうと、「あれは無駄だったなー」という感想です。
「プログラミングを学ぶこと」が無駄だったわけではありません。
研修のやり方が無駄だったのです。単純な知識や、中途半端なプログラミング能力を少しかじったところで、仕事ではほとんど役に立ちません。
しかも、研修という管理された環境では、十分に考える時間もありません。
分からなければ講師に聞く。
最後は答えを教えてもらう。
それをそのまま形にする。
「自分で考えてたどりついた経験」ではなく、「教えてもらった答えの再現」でしかないのです。あれはプログラミングのチュートリアルですらなかったように思います。
(いまの小学生のほうが、よほどまともなプログラミング教育を受けているはず。まぁ、うちの研修は適性検査であって、教育ではなかったんだな。)
(ああ、でもワイワイしながら課題をクリアするのは、学生の延長戦みたいで楽しかったな。それで同期間の仲も良くなったと思う。そういう意味ではアリだったのかなぁ……)
なぜプログラミング教育が必要か
さて、話はもどって、プログラミングが義務教育に組み込まれた理由を、一度真剣に考えてみます。
プログラミングを学ぶ過程では、
- 問題を整理する
- 手順を分解する
- 試行錯誤する
- エラーを分析する
- 原因を探す
- 改善を繰り返す
こうした「思考」を何度も繰り返します。
鍛えられるのは、プログラムを書くための能力だけではありません。価値を生み出すための土台となる「プログラミング的思考」という能力です。
プログラムは「考え方を学ぶ道具」であり、試行錯誤しながら学ぶことそのものに価値があります。
なぜプログラミング教育が必要か?
変化する社会に適応できる人材を育てるためです。
これは、「世界で勝ち残るため」と捉えてもらってもいいですし、私みたいな消極的なひとは、もっと目標を低く「世界で生き残るため」だと捉えてもらってもよいと思います。
新しい価値も生み出す
ちなみに、めちゃくちゃ大げさにいうと、プログラミング教育こそが、次世代のビルゲイツを作る方法だと私も思います。
ビルゲイツは確かに優秀なプログラマーです。けれど、能力だけをみれば、彼よりも能力の高いひとはいくらでもいます。
極端な話、情報オリンピックでメダルを取るような学生であれば、「天才プログラマー」と呼ばれる巨匠を凌駕するテクニックをもっているかもしれません。
では、単にプログラミング能力が優れているひと、ビルゲイツとの違いはなんなのでしょうか。それは、アイディアと、そのアイディアを製品・サービスに結びつける能力です。
いくらプログラミング能力があっても、アイディアだけでは価値は生まれません。また、だれも思いつかないような、革新的なアイディアもいらないのです。
技術を需要と結びつけ、それを製品というカタチにすればよいのです。
--
以前、「ある会社では、毎年の新入社員が研修で業務アプリを作り、社内でそれを使う。毎年ひとつずつ便利ツールが増えていく!」という内容の記事を読んだことがあります。
これには「いい取りくみだなー」と感銘を受けたものです。
需要を調査し、課題・問題を洗い出し、それを解消できる製品を作り、価値を生み出す。思考を鍛えるだけでなく、じっさいにやってみようというのです。
そういう経験をしていると、研修後も、自分のタスクを効率化するときにスクリプトを組んでみたりと、(自分の)需要をカタチにするという発想になりやすいということでした。
おわりに
「プログラミング的思考」が大事というと、AI が代わりにアイディアも出してくれるし、思考もしてくれるじゃん。という反論を受けることがあります。
(はぁ……クソデカ溜息)
AI が生まれて、お金を稼げたのはどういうひとたちだった?
もともとそういう世の中の変化に強い奴が、需要をいち早くキャッチし、リビドーをくすぐるアイディアをカタチにしただけだ。「プログラミング的思考」をもっていた猛者が、新しい武器をもって大暴れしていただけだっただろうが。
以上です。