プログラミング教育 の最後に書いた話の続きです。

 

将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」 とはどういうことでしょうか?

昨日、プログラミング的思考の例を書きましたが、「あんな変な思考が仕事に必要か?」と疑問に思われそうです。

いやいや、必要なんだ という話をします。

(仕事をするのに論理的思考力が必要だというのは自明だと思うので、わざわざプログラミング的 と言っている意味を考えます。)

 

 

 

一般の会社が仕事に必要なプログラム※を作らないといけないとなった場合、どうするでしょうか。専門の会社(=いわゆるソフトウェア会社)に注文することがほとんどでしょう。

※プログラムに限らず、Webでデータを処理するシステムとか、データベースを使って顧客管理をするとか、コンピュータを使って自社専用の複雑な業務を処理するときなども含んでいます。

 

私は顧客から注文を受けてプログラムを作る仕事をしたことはないですが、同僚に頼まれて作ることはあります。発注する側になったこともあります。学生時代にはアルバイト先のIT担当的なポジションでソフト会社と接したり、自分で必要なシステムを作ったこともあります。作る側、頼む側、それを使う側、いろんな立場をやると色々見えてきます。

 

当たり前ですが、仕事で使うプログラムは「○○の業務のプログラム」です。○○は客の本業だったり、経理だったり人事だったりします。で、ソフトウェア会社というのはプログラミングやコンピュータは専門ですが、○○の専門家ではないです。

もちろん、ソフトウェア会社の人も○○の勉強をしますし、わからないことは客に聞きます。それでも細かいところは分からなかったり、伝わらなかったりします。作る側も「伝わってない」と自覚することすらないまま、プログラムを作っていたりします。

 

その結果、○○の現場からすると「こんなはずじゃなかった」プログラムが完成します。直すと金がかかるので仕方なくそのまま使ったりします。ウソみたいですが、案外よくある話だったりします。

(こんなはずじゃなかった とまで思わなくても、不便でもあきらめて黙って使ってるケースはそこら中にあるでしょう)

 

なんでこんなことになるんでしょうか?

 

オセロでプログラムの例を書きましたが、オセロなら誰でもやったことがあるので、正しいプログラムを作るのはそれほど難しくありません。でも○○をやっていない人が、オセロの例のように○○を細かく定義しながらプログラムを書くのは難しいです。聞けばいいと言っても「聞かれた方が○○をきっちりプログラミング的に考えたことがないので、まともな答えが返ってこない」ことがほとんどです。

(オセロだって、「オセロってどういうゲーム?」と聞かれてプログラミング的思考で回答できる人はほとんどいないでしょう、○○だって同じことです)

 

本当は○○をやっている現場の人が直接プログラムを作るのが理想なのでしょう。そこまでいかなくても、現場の人が「プログラムを作る」というのがどういうことかを知っていれば、「こうしてほしい」「この業務はこういうことだ」「▲▲のときには■■してほしい」と適切な(=プログラミング的な)説明をソフトウェア会社の人にできるはずです。

 

「どのような職業に就くとしても必要なプログラミング的思考」というのは「ある程度プログラミングを知っていれば、注文する時に適切に注文できる、状況によっては自分で作れる」と理解すればいいのではないでしょうか?

 

あと、プログラムを作るほど大げさでなくても、Excelで名簿を入力して顧客管理をする というような場面は多くあるでしょう。こういう時にプログラミング的思考があれば、「どう作れば便利か」「後のことを考えて拡張できるように作っておく」といったことを考えて作ることができるはずです。(会社や役所の事務屋が作るExcelファイルは、ただ打ち込んで清書するために作ってるとしか思えない、本当にどうしようもないものが大量にあります。後日例を出して書きたいと思います。→書きました

 

上に書いたアルバイトの時、ソフト会社に作ってもらったシステムは不評でしたが、私が作った方は好評で数年間使ってもらえました。週1のアルバイトでも、現場にいる人間が直接作ると使い勝手のいい物ができるのです。修正が必要になったときにも現場の人がすぐに修正できるので、どんどん良くなっていきます。

今後、今まで以上にどこでも何にでもコンピュータが使われる時に、そこにプログラミングが分かる人がいることで生産性が上がると私は信じています。