非エンジニアにも必要な「プログラミング的思考」
こんちには、HEART QUAKE 代表取締役の千葉です。
今回は非エンジニアにも必要な「プログラミング的思考」というテーマで書いていきたいと思います。
皆さんの中には自分にもプログラミングが出来たら良いなと思っている方もいるかもしれません。ただ、実際にプログラミングを学ぶにはそこそこの時間を投資しなければならないのも事実です。
というのも、みなさんがイメージするちょっとしたWEBシステムを作るためには(例えば、弊社が提供しているNASAゲームオンラインなど)、少なくとも、HTML,CSS,JavaScript,PHP,MySQLといった5つのプログラミング言語を習得する必要があるのです。
私自身は、大学で情報工学(と、経営工学)を学び、新卒ではIT企業へ入社、大企業向けの会計システムを開発していました。この会社を立ち上げるまでの合計10年間をプログラミングに費やしています。それでも創業から10年以上が経ち、すでにエンジニアとしては時代の流れに置いていかれています。。。
そんな老いぼれエンジニアの私でもプログラミング的思考は身につけていて良かった、と感じています。これは職業としてプログラミングを書くわけではない、非エンジニアの方に役立つ考え方だと思います。
まずはプログラミング的思考とはなんなのか図で見ていきましょう。
文部科学省
小学校プログラミング教育の手引(第二版)
P.15 図4 プログラミング的思考
https://www.mext.go.jp/content/20200214-mxt_jogai02-000004962_002.pdf
上図を見て頂くと、プログラミング的思考は問題を解決するためのプロセスということがおわかり頂けるかと思います。現代において問題解決力が必要なことは言うまでもありませんが、問題解決を行う上でプログラミング的思考がとても役立つと思います。そして、実際にプログラミングスキルは考えた解決策を具現化するために必要ということになります。
プログラミング的思考について文章として整理したものが下記となります。
どのような動きの組合せが必要であり、
一つ一つの動きに対応した記号を、
どのように組み合わせたらいいのか、
記号の組合せをどのように改善していけば、
より意図した活動に近づくのか、
といったことを論理的に考えていく力
引用
文部科学省
小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)
上の文章を読むと思考というよりもプログラミングスキル的な印象を強く持たれる方もいるかと思います。
そこで、上の文章をより思考プロセス側に寄せて、うまく要約されている方がいます。
⑴ 物事を正しく分類・分析(要素に分ける)する力
⑵ 要素同士の組み合わせ(関係性)を考える力
の2つであることがわかります。
前者が「論理的思考」、後者が「システム思考」です。
引用元:https://www.saltad.co.jp/systemthinking3/computational-thinking1/
(現在はページが削除されているようです)
つまり、プログラミング的思考は論理的思考とシステム思考がベースとして成り立つ形となります。
じゃあまずは論理的思考から勉強だな!と思った方がいるかもしれませんが、個人的にはプログラミングスキルを身につけていく中で論理的思考やシステム思考が身についていくと考えています。
なにより、論理的思考やシステム思考を純粋に勉強するよりもプログラミングを通して作ったものが動いていく学習のほうが楽しいような気がしています。
まとめ
今回は非エンジニアにも必要な「プログラミング的思考」というテーマで書いてきました。
非エンジニアの方にプログラミング的思考が必要な理由はプログラミング思考があることで問題解決力が高まると考えています。
ただし、論理的思考やシステム思考についてあまり自信がない方は一度関連書籍などを読んでみても良いかもしれません。
画像引用元:https://www.saltad.co.jp/systemthinking3/computational-thinking1/
論理的思考についてはクリティカルシンキングの本がオススメです。
システム思考の入門としては弾み車についての書籍がオススメです。