目次
■なぜこの問いなのか?
世間では「プログラミングを勉強した方が良い!」・「将来のために必要な知識だ!」等の文句を壊れたラジオ並にずっと言われるようになって久しいですが、「自分の大切な時間やお金を使ってまで、本当にプログラミングに投資をして良いのだろうか?」心底疑問に思いました。(※自分の経験則から)
なぜ疑問に思ったかと言うと、世間ではプログラミングは大切だと説かれているにも関わらず、僕の大学院時代はプログラミングの勉強を本格的にしていなかったからです。ふと、そこには何かしらの理由があるのではないか?と疑問に持ちました。(ちなみに、研究で使うデータ分析ために、致し方なく最低限のプログラミングの勉強はしました。)
時間やお金がないことはもちろんなのですが、プログラミングを勉強しようと思えばできたはずです。それよりも、違うことの優先順位が高くプログラミングの勉強に対して、本気で取り組んだことはありませんでした。
もちろん、これは当時、「ただ単に大学院の授業での生存戦略としてプログラミングよりも優先順位の高いタスクがあったんでしょ。」って言われればそこまでです。
しかし、、、今現在では卒業して、研究に時間を割かなくても良い状態です。このような状況で、未だにプログラミングの学習を進めていないということは、僕はプログラミングの必要性を感じていないのか?そもそも、プログラミングの必要性が想像できないのか?ただの怠惰なのか?他に何か優先順位の高いものがあるのか?といったことを考えるようになりました。
そこで今回は「プログラミングは本当に学んだ方がいいのか?」と言う問いを変えたり、他人の主張をまとめてみたり、その主張の根拠はなんなのか?どうなっているのか?ということをさらっと言及して、最後は僕自身の考察を述べていこうと思います。
おそらく、今回の問いは話題としては時代遅れです。また、「っていうかそんなこと興味があれば、理由なんてどうでもよくね?ただやれよ?」とも考えることができます。
ただし、興味があるだけでのめり込めるタイプの人ではない場合・この対象は興味だけでは実行に写すことができない場合・他人を説得しなければならない場合などは理由付けが必要です。
僕自身はプログラミング関してはどうも理由付けがしたかったようです。多分、自分を納得させたかったんだと思います。そして、自分を納得させられない時、他人を納得させるのは至難の技でもありますし。。。
ではでは、僕の中で言語化するほどの興味が湧いてきたので、ブログにて言葉にしていきたいと思います。
■他の人の意見としてはどのような主張があるのか?
ここでいう主張はプログラミングを学ぶ目的、必要性、動機とも言い換えることができます。そこで、プログラミング学習の必要性や動機、目的についての幾つかの主張を以下に書き出していきたい思います。
以下では、人間の内側からの動機を内的動機、人間の外側からの動機を外的動機として分けました。
また、内的動機は教養的動機、自己表現的動機、価値体験的動機、その他及び実利的動機に分けました。対して、外的動機は職業的動機、社会及び経済環境的動機に分けました。
▼内的動機
教養的動機
・PCの原理理解のため
・論理的思考や計算的思考を身につけるため
・問題解決と能動学習の題材として良い
・答えが1つだけではない題材として良い
自己表現的動機
・自己実現、表現の手段として良い
・ものづくりと創造力のため
・思考を外部化した成果物として良い
価値体験的動機
・楽しく熱中できる題材として良い
・試行錯誤の経験を積む場として良い
その他及び実利的動機
・収入を増やしたい
・自由な働き方を追求したい
・労働時間を減らしたい
・問題解決能力を身につけたい
・自分でサービスが作りたい
・プログラマーが評価される社会を作れる
▼外的な動機
職業環境的動機
・ソフトウェア開発者が必要
・仕事の一環でプログラミングが必要
・ソフトウェア技術者との連携のため
社会及び経済環境的動機
・やりたいことができる敷居が低くなっている
・IT人材が不足して市場価値が上がる
・情報爆発によってプログラマーの必要性が高まっている
・情報格差が広がっていく
・第4次産業革命
・人口減少(日本)
・AI時代に職を失わない
参考ページ:
https://www.slideshare.net/ssuserafaef6/ss-79415397
▼小まとめ
上記のように並べてみると、内的動機に関しては、必ずしもプログラミングで目的や欲求を達成する必要性はないのではないかと思います。
もちろん、プログラミングは何度も繰り返せる、フィードバックが早い、ルールが一貫しているという意味では強みがあるように思います。ただし、内的動機を解決・満たすことにとっては、絶対的なものではないように思います。
次に、外的動機に関しては、未来的な視点と現状の視点が入り混じっている部分もありますが、大半の人々は今後プログラミングスキルの必要性が高まる社会・経済環境になっていくだろうと考えていることが伺えます。そして、「必要性が高まっていくし、労働力が足りてないし、それでプログラマーの価値が高まるし、給料が上がるっしょ!」「失業しないっしょ!」ってことかな。
まぁ、ここで言いたいことは内的動機より外的動機の方がプログラミングを学習する動機として強いんじゃないの?ってことです。
■なぜ変化に対しての解決手段としてプログラミングが取り上げられているのか?
なんか将来こんな感じに変化するだろうっていうのがあるみたいです。その主張は、先ほど上記で述べた以下のものが該当します。
・やりたいことができる敷居が低くなっている
・IT人材が不足して市場価値が上がる
・情報爆発によってプログラマーの必要性が高まっている
・情報格差が広がっていく
・第4次産業革命
・人口減少(日本)
・AI時代に職を失わない
そこで、ただ環境の変化だけを述べても良く分からないと思いますので、ここはプログラマーと環境の変化の関係性について言及できるように、まずはプログラマーってなんだよ。ってところを僕なりに定義していきたいと思います。
▼プログラマーって何?
「プログラマーっていうのはPCに命令するためのプログラム言語を書く人!」って言うと当たり前だろ〜って感じですけど、それだとあんまり本質的なことではないような気がするので、あえて僕なりの解釈を言いますと、、、
仕組みを作る人です。
ただし、「どの視点で言ってるんだよお前は」って感じだと思うので、国だったら首相とか政府が国家全体の仕組みを作ってますし、東京都だったら都知事とか、会社だったら社長が仕組みを作っています。これらは人間を中心に技術等と組み合わせて仕組みを作り上げていくものですが、これに対して、プログラマーで言う仕組みとは、人間の感じている課題をPCやプログラムを中心にして構築していく人です。
つまり、人間視点の社会的な仕組みに対して、純粋な技術、物理的な視点から仕組みを作っていくのがプログラマーです。(上手く分類できてないですが、まぁ、ほっときます。)
そのため、人間の価値観や文化に関係する根本的な課題を解決することは難しいですが、単純作業、ルーティーンで決まった思考パターン、人間の不安定さ、不確実さ、これらに関係する課題をPCの安定性、速度、汎用性と言う特性によってプログラミングで仕組み化して解決していこうというのがプログラマーです。
ってことは、プログラマーの仕事である仕組みを作る機会が増えるってことなのかな?と仮説がふわっと浮かび上がりますが、その辺りについては後ほど考えていきたいと思います。
参考スライド:
▼環境がどう変わるの?
もう一度、先ほどの主張リストを下記に載せます。
・やりたいことができる敷居が低くなっている
・IT人材が不足して市場価値が上がる
・情報爆発によってプログラマーの必要性が高まっている
・情報格差が広がっていく
・第4次産業革命
・人口減少(日本)
・AI時代に職を失わない
さすがに全部の項目を解釈するのは非常に手間がかかるので、僕なりに全体を解釈すると、
大量生産の時代ではなく、一人一人の欲求や体験等の価値観に合わせた消費に重点がシフトしている。そのため、高度な技術を伴わないものや画期的な商品でない限り、普通の商品だけでは他社との差別化はますます難しくなってくる。
また、スマホや各種端末、センサー等によるデータが爆発的に増え、様々なデータを組み合わせるなどして、人間の能力だけでは対応しきれない分析を行うことが技術的に可能になり、今後はこれらをどう仕組み化して、商品・サービス、もしくは改善策として、新たな価値を生み出していくかが重要になってくる。
その上、日本は人口減少真っ只中なので、人材を確保するのが難しい。しかし、人件費削減策や労働力に頼らない設備の導入が行われやすい。
他方で、様々な分野や対象で仕組み化をすることで、プログラミングに関与していない人にとっては仕組みそのものがブラックボックスと化し、プログラミングを知ってる者と知らない者との情報格差やツール等の利用能力の差によって知らない者は様々な機会が奪われることになる。
要するに、単純な商品の価値は低くなっていて、そんな中でできることって、「商品+何か」って部分で新しい価値を生み出すしかないよね。しかも日本は労働力を代替するような仕組みを導入しやすいから良いよね。あと、今後、プログラム知ってる人と知らない人はさらに格差が生まれるよね。ってことです。
▼小まとめ
「なぜ変化に対しての解決手段としてプログラミングが取り上げられているのか?」と言う問いに対してのアンサーは、これからの時代、プログラミングによって自動化する仕組みを作って価値を生み出せるっぽいね。てか、ほとんどの分野でプログラミングある程度必要じゃね?ってことでなんとなく納得できそうですね。
しかし、「果たしてコードを書く人だけが必要なのでしょうか?」という考えが頭を過ぎりましたが、そんなことはきっとありえませんね。結果、プログラミングする人以外も必要だろって結論になるのは見え見えなのですが、以下ではそのことについて考えていきたいと思います。
■プログラミングする人以外必要ないのか?
これに対しては、こちらの方のスライドが参考になります。(P19)
参考スライド:
特にこちら!
先に結論を言いますけど、プログラマー以外も必要です。
ただ、程度問題でどの程度プログラマーとコミュニケーションできるかということも重要になってきます。そのため、プログラマー以外も一定のプログラミング知識が必要になってくるでしょう。これに関しては「どのような立場ではどの程度のプログラミング知識が必要か?」を考えていく必要がありそうですね。
■まとめ
ここまでの内容をまとめると、
- プログラミングをみんながやりたいっていう欲求よりも致し方なくプログラミング勉強した方が良いっていう外部環境の力の方が強い
- 外部環境の今後の変化を考えると、プログラマーっていう仕組みを作る人が要になる。
- プログラマー以外も必要な仕事は残っている。
ということです。
今回、可能なかぎりプログラミングはただのツールだよね?だったら人間の方の技能向上を伸ばすことの方が汎用性が効くし、応用もできそうじゃん?って論調は避けました。当たり前過ぎて。。。笑
なぜなら、プログラミングの言語自体も変化していくものです。そのような中では、人間そのものの能力開発した方が汎用性・発展性があることも確かです。
他方で、難しいコードを書くという難しいプログラミングの必要性が下がって来ていることも事実なのかなと感じたりもします。この分野の発展スピードを加味した上で、プログラミングのどの分野に時間とお金を投資するかを判断することが良いのではないかなと思いました。
「プログラミングは本当に学んだ方がいいのか?」と言う問いに対しての最終的なアンサーは、「学んだ方が良い。ただし、どのレベルまでプログラミングを学ぶか?どの言語を学ぶか?ということがもっと重要な問いになる。」という感じです。
ではでは、次なる問いを今後詰めていくようにしていきたいと思います。
■次なる問い
今後もプログラミングは書く必要があるのか?
narumi-yamauchi.hatenablog.com
どのレベルまでプログラミングを学ぶか?
どの言語を学ぶのが良いか?
どのような仕組みは人に任せて、どのような仕組みは機械に任せるのがいいのか?
どのような立場ではどの程度のプログラミング知識が必要か?