Re:Create 地方の寄る辺から

田舎と都市が入り乱れる街@京都のエンジニアが考えたことをつぶやきます。

プログラミングは教養になりえるか?

こんなエントリを見つけたので、職業プログラマかつ、教養系学部出身の自分が考察を書いてみる。

hikkimorry.com

そもそも、教養とは?から、ちゃんと議論しておきたいので、自分勝手な定義から抑えておく。

教養の目的はコミュニケーションだと考える。誰かと意思疎通を図るには、必ず何かの前提条件をあわせた土台が無いと話をすることもできない。例えば、三角関数も知らないのに、大学数学の話はできないし、ニュートン力学を知っていないのに、量子力学の話をすることはできない。経営者になろうとしてるのなら、せめて簿記はわかってほしい。オフサイドを知らずに、サッカーの戦術論は語れない。でも、オフサイドを知らなくても、スタグルを語ったり、天皇杯の勝敗予想をすることはできる。ブラジル人なのに、マラドーナを知らない人はモグリだと言われてたけど、今じゃそうでもないらしい。

それは教養なのか?という疑問符が付く例えばかり出してしまったが、教養のある人であれば、どの分野の第一人者と話しても仲良くなって、専門的な話を聞き出すことができる。というのはイメージがつかないだろうか?

ベンチャー企業の経営者と話せば、特定分野の技術について聞き出し、ビジネスモデルを問うことができ、W杯に行けば、他国サポーターとスタグルや現地の裏事情について語れる。タモリさんが教養のある人と言われるようなイメージに近い。様々な分野の基礎知識を持っていて、専門家へのリスペクトを欠かさず、人の本質的な欲望や愚かさにも、寛容な姿勢があり、話した人を楽しませることができる。憧れるよねぇ。

そんな人になるための教養として、プログラミングが必要か?と言われれば、まったく必要が無い。 少しJavaが書けたとしても、人間性を深めたり、聞き上手になることは出来ない。むしろ、人間性がひん曲がっていくから気をつけろ(オイ!)

もちろん、プログラミングを極める過程を通じて、人間性が磨かれ、教養ある人になっていくことはある。それは宮大工を極めた職人さんや、世界最速になったランナーが持つ、研ぎ澄まされた人間性などと同じ分類の、専門性を極める過程で身につけた普遍的価値観だろう。

プログラミングについて話すための教養を学ぶなら、コードは書かずに、マイクラで遊ぶぐらいが一番ちょうどよいと思う。ゲームがプログラミングを生かした技術として、最先端を行ってるから、ゲームを他分野に活かすという点で学ぶものは大きい。昨今だと、業務系Saas企業多く立ち上がっているの中で、活躍しているエンジニアには、ソシャゲ出身の人がかなり多くいるそう。

話がそれてしまったが、世の中を動かすシステムが、魔法で動いてるのではなく、プログラミングという行為の積み上げで生まれているという認識さえあれば、教養としては十分だと思う。社会見学で、清掃工場やパン工場を見学するように、プログラミングで出来上がる世界を知ってもらえれば、中の人にも嬉しいことです。

https://m.media-amazon.com/images/I/51BKnFRzWYL._SL75_.jpg

一方で、これから、何かを生み出す人になるなら、プログラミングでなにができるのか?は必ず知っておいたほうが良い。「ITは基本的には安売りの技術」というのはKAWANGOが話したが全くもってその通りで、今この時も、AI絵師やAIプロンプターによって、画像や文章が生み出されている。結果、AIで書ける文章であれば、その価値は下がり続けている。その中で、価値が下がらないものは何なのか?何が価値を価値たらしめているのか?は何かを生み出す人にとってはとても大事なこと。どんな分野であっても、プログラミングやプログラミングで何ができるのか?を学ぶことで、新しく可能になることや、どんな影響がでるのかはは、将来を見通すために必要なことかな。と思う。また、実際にプログラミングする側になれなくても、ともにプログラミング技術とともに歩める人はとても貴重なのです。

例えば、AIでサッカーのトレーニングプログラムが組めます!というものは作れても、その効果を実際に試してみるのは結局は人間。AI将棋がどれだけ強くなっても、最後に盤上で戦うのは棋士なわけです。システムを使いこなせるというだけで、アドバンテージを得られるというのが、どこの分野でも起こりえるので、その点で、プログラミングと言うよりプログラミングされたものを使いこなす技術が必要になる。

もう一つ、プログラミングができると、簡単になることが一つあって、社会実装がやりやすい。という点がある。例えば、「校則を決める。」と言うのは新しい社会実装を試す一つの方法だろう。ただ試すためには様々なことを調整しないと、試すことができない。一方で、読書習慣を作るために読書記録アプリを配布するとかは、プログラミングのコストは掛かるが、試してみるコストは法律を作るより断然安い。普及させるにはもちろんコストは掛かるが。これまでの調整のためにかかっていたコストを安売りすることで、新しい価値体型や社会実装のケースを作れることは、プログラミング故にできることの一つだ。

面白いのは、システムを利用した社会実装コストは新興国の方が低くなる点ではある。これは戦後の日本で起こったことだし、今はアフリカで起こっている。平均年齢が低いため、新しい仕組みの学習への対応が比較的容易な点、人口増加局面にあるため、投資対効果が出やすい点、考慮すべき既存システムの制約が少ないなどなど、様々な理由でやりやすい。これは別にエントリを書こう。

最後にまとめておくと、教養としてのプログラミングを学ぶなら、こんな感じでしょうか。

  • コミュニケーションのための教養であれば、成果物だけ興味を持って楽しめればOK。
  • なにかを生み出す人になるなら、どう使いこなすかのかを学ぶと、実生活に活かせることは多くなる。
  • 社会を変えたいなら、情報システムが生み出す社会への影響を正しく学ぶ必要がある。

とは言え、自分なりのプログラミングの学び方もまとめて、どこかで書いてみたいと思います。