【プログラミング的思考とは】早くから学ぶ理由【旧帝大でも通用します】

プログラミング的思考とは何かを知りたい人「プログラミング的思考って何?プログラミング的思考は学ぶべきなのかどうなのかを教えて欲しい。また具体的にプログラミング的思考はどのように学べばいいの?」
こういった疑問に答えます。
本記事でわかること
- プログラミング的思考とは「組み合わせて考えること」です
- プログラミング的思考を学ぶ理由【3つある】
- プログラミング的思考を身につける方法【結論:プログラミングの少し実践レベルまでこなしましょう】
【プログラミング的思考とは】早くから学ぶ理由【旧帝大でも通用します】

今回はプログラミング的思考について解説を行います。プログラミング的思考は、少なくとも勉学における上位の当たり前の思考です。
本記事の信憑性
僕がこの思考法を解説することについての信憑性及び、学ぶ必要性については保証できます。
僕の現在は以下の通り。
現在旧帝大学院生修士2年で人口の数%しかいない。自分のことはともかくとして、周りはとても優秀な人材。
そんな僕が解説します。
周りが優秀な証拠に、先輩方や同期は大手への内定を獲得しており、社会的にも評価されています。
そんな僕が感じることは、プログラミング的思考は大学院生が当たり前にしていることだということです。
つまり、繰り返すとこの考え方は社会的にも重宝されるし、上位数%の人が当たり前に行っている思考法だということです。なので、学ぶ必要性はあります。
プログラミング的思考とは「組み合わせて考えること」です
文部科学省が「小学校教育におけるプログラミング教育のあり方について」の議論の中でこのように述べています。
プログラミング的思考
自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力
僕はこの資料を読んでプログラミング的思考を次のように解釈しました。
ある課題に関して、問題点の分割を行い、既存手法の組み合わせを用いてどのように解決するかを論理的に考える力
つまり、問題解決のための思考法の一種で、自分が持っている武器で未知の問題に立ち向かおうと考える力であると思います。
詳しくはプログラミング的思考の基になった計算論的思考についての資料に書いてありますが、少し難しめです。

「論理的思考力とは別物?」
別物です。論理的思考と調べると、こんな風に出てきます
物事を体系的に整理し、順序立てて考えること
すなわち、こんな違いです。
両思考法の違い
- プログラミング的思考→問題解決の際に用いる
- 論理的思考→問題解決の際や説明を行う際に用いる
より抽象度を高くしたものが論理的思考ということですね。
プログラミング的思考を学ぶ理由【3つある】
プログラミング的思考を学ぶと最終的にはここに着地します。
社会的価値が高くなる
ではなぜプログラミング的思考を身につけると社会に必要とされる人材になるのでしょうか。理由は3つあり、重要なものから順にこうです。
プログラミング的思考を学ぶ理由
- 社会課題の解決力が身につく
- 学歴という錯覚資産を手にできる
- システムの構築が抵抗なくできるようになる
社会課題の解決力が身につく
社会には課題が山積みです。そして、それらは解決策が分かっていないから課題として今も存在します(解決策がわかれば、解決は容易)。ですから、その課題を解決するためには以下2つの、いずれかの方法があります。
- 世の中にない全く新しい技術を開発してダイレクトに解決する【難易度高め】
- 既存の技術の組み合わせで、未知の課題を解決する
もうお分かりかと思いますが、後者はプログラミング的思考そのものですね。なので、プログラミング的思考法を身につけることが社会課題を解決できる、つまりは社会価値を高めることにつながります。
高学歴になりやすい
旧帝大学院似通う僕ですが、周りはあたり前にプログラミング的思考で物事を考えています。
なぜなら、学歴を決める座学にはこの思考法を用いる場面がたくさんあるからです。例えばこんな感じ。
- 数学や物理:すでに知られている定理で問題を解く
- 有機化学:これまでの偉人が発見した反応を組み合わせて、作りたい化合物(物質)をつくる
高学歴=上記のような内容で高い成績を取っている=プログラミング的思考が身についてる
という感じですね。なので逆にプログラミング的思考法を学ぶと、高学歴になりやすいです。
そして学歴(錯覚資産)は、あなたのことを全く知らない人が、あなたの能力を判断する基準です。その水準が高いというのは社会でより求められるということに他なりません。
システム構築ができる
システム構築はこれまでもなくてはならないものでしたが、ITが流行しその潮流はさらに加速しています。プログラミング的思考はその名の通り、プログラミングに生かすことができるので、このシステム構築を行う力にも活きてきます。
なぜ社会価値が高くなるかというと、需要があるからです。
'東京都に限定してエンジニアの年収を調べてみると、Webサービス・メディア関連企業の平均年収は、大手企業で560〜760万円、中小企業で430万円程度。通信関連企業では、470〜1200万円と個人の技術によって幅広く、ソフトウエア開発関連企業は、643〜1040万円程度となっています。'
エンジニア14種類の年収と仕事内容、将来性のあるエンジニアとは?より抜粋
日本の平均年収は400万円ほどなので、SEの年収は高い水準ですね。
こんな風に社会に必要とされ、その見返りにそれ相応の対価を受け取っているということですね。
プログラミング的思考を身につける方法
プログラミング的思考を身に付けるためにはその名の通り、

「プログラミングを基礎か実践レベルかどの程度まで身につければいいの?」
結論はこうです。
プログラミング的思考を身につけるためには実戦レベルに片足を突っ込むべき
以下の記事で詳しく解説していますが、基礎知識の習得までなら独学で問題ありません。そして以下の記事では実践レベルの習得は無料では不可能であると記載しています。
>>プログラミングの習得は独学で可能かについて述べた記事はこちら
しかし、プログラミング的思考を身につけるために実践レベルに片足を突っ込むことは無料でできます。
※もちろんプログラミングスクールに通うなど有料で学ぶことでも可能です
無料でプログラミング的思考を学ぶ方法
無料でプログラミング的思考を学ぶ方法はこちらですね。基礎知識を身につけた上で以下のことをするだけですね。
日常生活にあるシステムはどんなコード設計になっているかを考える
これに尽きます。例えばアプリのパズドラとかまさしくそうですよね、乱数とか分岐とか。
こういうのを頭で考えるのが大切です。

コードを書く必要なはないの?
プログラミング的思考を身につける理由のところで書きましたが、あくまで重要なのはその考え方を身につけることなので、必ずしも書く必要はないですね。
有料でプログラミング的思考を学ぶ方法
もちろん有料で、システム開発を実際に行いながら学ぶことも可能です。その際には以下のおすすめのプログラミングスクールの記事を覗いてみるといいかもしれません。
>>おすすめのプログラミングスクールについて述べた記事はこちら
まとめ
今回はプログラミン的思考についての解説を行っていきました。本記事の重要な点を再掲します。
プログラミング的思考とは
ある課題に関して、問題点の分割を行い、既存手法の組み合わせを用いてどのように解決するかを論理的に考える力
プログラミング的思考を学ぶ理由
- 社会課題の解決力が身につく
- 学歴という錯覚資産を手にできる
- システムの構築が抵抗なくできるようになる
プログラミング的思考を学ぶ方法
プログラミング的思考を身につけるためには実戦レベルに片足を突っ込むべき
本記事は以上です。