少し前から、聞く機会が増えてきた『プログラミング的思考』という思考方法をご存知ですか?
ーー そんなのプログラマーとかを職業にしている人が覚えればいい考え方なんでしょ?
いいえ、そんなことはありません。むしろプログラマーを職業としていない人こそ積極的に学習しないといけない思考方法です。
なぜ、本業(プログラマーなど)じゃない人が積極的に学ばないといけないのか。その理由と方法を解説していきます。
これから大人になる子どもたちは、全員がプログラミング的思考を身に付けた状態で社会に出てきますが、その標準スキルを今の現役世代の大人は身に付いていません。
プログラマー、システムエンジニアとして勤務し、プログラミングを教育と実務の両方を経験している筆者が、これらを改めて考えてみました。
プログラミング的思考の正体は「論理的かつ効率的に考えること」
まず『プログラミング的思考』とは、どのような思考なのでしょうか。
文部科学省の有識者会議では以下のように定義しています。
自分が意図する一連の活動を実現するために、どのような動きの組み合わせが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組み合わせをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力
つまり「理想の結果を得るために、必要な手段や順序を効率的に組み合わせて考えること」です。
似たような意味の用語として『論理的思考』があります。
論理的思考は「理想の結果を得るために、網羅的に物事を整理し、道理にかなった方法を考えること」です。
論理的思考と関連付けて説明すると、「論理的思考を用いて網羅的に考えた物事や方法から、効率性を重視した選択をすること」がプログラミング的思考の正体です。
よく似ていますがイメージとしては、大きな括りとして『論理的思考』があり、その中に『プログラミング的思考』が存在するという捉え方で良いと思います。
また、プログラミング的思考の重要性についても文部科学省の有識者会議では、以下のようにまとめています。
「プログラミング的思考」は、急速な技術革新の中でプログラミングや情報技術の在り方がどのように変化していっても、普遍的に求められる力であると考えられる。
情報技術が人間の生活にますます身近なものとなる中で、それらのサービスを受け身で享受するだけではなく、その働きを理解して、自分が設定した目的のために使いこなし、よりよい人生や社会づくりに生かしていくために必要である。
言い換えれば、「プログラミング的思考」は、プログラミングに携わる職業を目指す子供たちだけではなく、どのような進路を選択しどのような職業に就くとしても、これからの時代において共通に求められる力であると言える。
つまり、プログラミング的思考は普遍的に求められる力であり、どのような職業に就くとしても求められる重要なスキルであると定義づけしています。
プログラミング的思考が必要な理由
プログラミング的思考が社会人として活躍するために必要な理由について、以下の3つを解説していきます。
- 仕事で成果を出すために『プログラミング的思考力』が必要
- これから社会で活躍する今の子どもたちは義務教育に組み込まれている
- プログラミング能力で業務効率化でき生産性が飛躍的に向上する
また、プログラミング的思考を身に付けるための有効なトレーニングとして『プログラミング学習』があり、プログラミングを学習することで思考方法を学べるとともに、直接的に業務効率化できる理由についても解説します。
【理由1】仕事で成果を出すために『プログラミング的思考力』が必要
プログラミング的思考は普段の生活でも生かすことができます。
例えば、社会人が仕事をする上でよくある状況として、上司や同僚に状況説明をする際に、相手に物事を分かりやすく伝えるために使うことができます。
上で説明した「理想の結果を得るために、必要な手段や順序を効率的に組み合わせて考えること」に当てはめるとこのようになります。
- 理想の結果:上司や同僚に状況を正しく伝える
- 必要な手段:背景、今後の方針案、状況、外的要因、結果の変化などを相手に伝える
- 適切な順序:背景→起こる前の状況→状況の変化→外的要因→今後の方針案の順番で伝える
例えば、以下のような状況で「打合せの日時が変更したことにより取引先の担当者(A会社D部署の担当者)が怒っている」ことを上司に伝えたいとします。
- 背景:1週間後にA会社のイベントを開催するため、A会社D部署の担当者と当日の行動スケジュールについて打合せを行う予定である。
- 起こる前の状況:当会議は今週の水曜日に実施する予定であった。
- 状況の変化:うちの会社の主担当者が後から入ってきた別の要件で元々の打合せに出席できなくなった。
- 外的要因:理由としては、同イベントに関して同会社E部署の担当者との打合せが同日時に入った。E部署との打合せの方が急を要するため優先度が高い。
- 今後の方針案:D部署の担当者に事情を説明し、納得いただければD部署との打合せ日時を変更させてもらう。納得いただけないようならD部署との打合せを優先して、E部署の方には先方が打合せできる日時を伺いこちらが予定を合わせる。
上記が最良かは言い切れませんが、例えば内容を同じだとしても順序を変えるだけで一気に伝わりやすさが低下します。
- 良くない順序:状況の変化→今後の方針案→起こる前の状況→外的要因→背景
うちの主担当者がE部署の方との打合せが急に入ったんです。
A会社D部署の担当者に事情を説明して、可能なら打合せ日時を変更してもらいます。
A会社D部署との元々の打合せは今週水曜日なんですが、
うちの会社の主担当者はA会社のE部署の担当者との打合せが同日時でしかできなくて、E部署との打合せのほうが優先度が高いんです。
そもそも、1週間後にA会社のイベントを開催するため、A会社D部署の担当者と当日の行動スケジュールについて打合せを行う予定だったんです。
これでは、聞いた側からすると、何を自分に伝えたいのか整理がしにくいため理解しづらいですね。
正しい内容と順番で効率的に伝えるため「プログラミング的思考」ができれば、分かりやすく物事を相手に伝え、納得させることができます。
論理的な構成で、無駄がなく理解しやすい順番で説明されると、相手は一度で内容を理解でき、自分への評価を上げることが期待できます。
【理由2】今の子どもたちは義務教育に組み込まれている
2020年より、全国の小学校で論理的思考力を身に付けるため「プログラミング学習」を義務教育で行っています。
先に説明したようにプログラミング的思考の重要性は、文科省が義務教育にした経緯からも非常に重きを置いているということが分かると思います。
つまり、今後社会人となる今の若い世代は、全員がプログラミング的思考、論理的思考の専門的なトレーニングを受けて育っていきます。
そのような若い世代とトレーニングを受けていない現役世代が今後同等に戦えるでしょうか。
非常に難しいと思います、そのため今の社会人にあたる世代はプログラミング的思考を得るため自らが率先して身に付ける努力をしなければ手に入れることができません。
【理由3】プログラミング能力で業務効率化でき生産性が飛躍的に向上する
プログラミング的思考を取得するための有効なトレーニングとして『プログラミング学習』があります。
プログラミング学習はプログラミング的思考を身に付けるとともに『プログラミング能力』も身に付けることができ、結果として直接的に自分の仕事を効率化することができます。
例えば、業務効率化するためには一般的な方法としては、「業務の必要性を見直す」「業務フローを作る」「RPAやローコード開発ツールを利用する」など様々なものが存在します。
しかし、それは分かっていても立場や担当など、自分の力ではどうにもならないことばかりです。(例えば、自分が業務でRPAやローコード開発ツールを使いたくても会社として導入できない等)
そのため、今やっている仕事を効率化するために何ができるかが自分の業務効率化に直結します。
答えは、自分の仕事を効率化できるツールは、自分で作ればいいんです。
当サイトのマクロツールは汎用的に使える仕様となっていますが、自分の業務とマッチしていれば手作業で行う予定であった業務の作業時間が大幅に短縮したかと思います。
今やっている自分の仕事により特化したマクロを組むことができれば、業務効率化できるツールを自分で自由に作ることができ、もっと仕事が楽になると感じたんじゃないでしょうか。
実は当サイトで公開しているマクロツールなどは、プログラミングの基礎知識と訓練をしっかり行っていれば、1時間~8時間程度の作業時間を設ければ作れるものばかりです。
これらのツールを一度作ってしまえば、毎週2時間かかっていた時間が5分程度で完了したり、極端に言うと1日かけて行う予定であった作業が10分で終わるなど時間節約できることは往々にしてあります。
このような業務効率化ツールを作るためには一定量の学習とプログラミング能力が必要であるため、プログラミング学習をしたことがないとツールを作ることができません。
しかし、最初にしっかり学べば、今後の仕事で必ず生きてくるのでプログラミング能力を身に付けることはコスパ抜群です。
将来の時間を買うために、自己投資をして身に付けるべきスキルとして『プログラミング能力』をおすすめします。
プログラミング的思考を身に付けるための方法
この『プログラミング的思考』は仕事をする上で最も重要と言っても過言ではないにも関わらず、教育機関(学校や会社等の研修)で身に付けるための専門的なトレーニング(プログラミング学習等)は受けていない方が多いと思います。
筆者は、プログラミング学習を行うことで得られた知識や思考方法は、IT企業に勤めている専門職時代よりも、非IT企業で仕事をするときのほうが持っていて良かったと感じています。(それは非IT企業のほうが、周囲の同僚でそれらの能力を持っている人が少ないため会社として重宝された実感があるからです。)
ーー 意識的にトレーニングをしろと言われたって、社会人は論理的思考力を身に付ける機会が見当たらないし、やり方が分からない。。。
そんな声が聞こえてきそうですが、残念ながらその通りなんです。
義務教育を終えた現役世代は、プログラミング的思考力とプログラミング能力を身に付けるための学習機会は自分で探して実行しない限り永久にやってきません。
以下ではプログラミング学習をする方法を解説していきます。
【方法1】独学で学ぶ
身に付けるための方法の一つ目が「独学で学ぶ」です。
書籍やインターネットなどには情報がありふれています。これらから必要な情報を取捨選択して収集し、実際に手を動かして作ってみる。
書籍やインターネットから知識を得るだけではスキルにはつながりませんので、最後の「実際に手を動かして作ってみる」というのは非常に重要です。
この方法をお勧めする方は、具体的な目標(作りたいもの)が定まっていて完了まで完遂できる方です。具体的な目標が決まっていない、または少し流されやすい方の場合は、以下のような他の方法が向いているかもしれません。
【方法2】身近なスキル・知識を持つ人に教えてもらう
二つ目が「身近に指導を仰げるプログラミングスキル・知識を持った方に教えを受ける」です。
簡単に言うと、教えてくれる先生が身近にいて学べる場合です。
このような方がいる場合は、その人にあった具体的な目標設定や分からないことを質問できる環境があるため、有効に活用してスキルアップにつなげてください。
職場のプログラミング知識を有している方を見つけて、理由を付けて声をかけて関係性を築きましょう。
また、同じ会社にいる場合は使用している職場のIT環境も同じですから、両者の目指す目標が一致しやすいと思うので、目標設定がしやすく学習が進めやすいと思います。
※IT企業に勤めている場合などは、周囲にプログラミングスキル・関連する知識を持った方が多くおり、また職場で学べる環境がたくさんあるので恵まれていると思います。
【方法3】専門のスクールに通って専門家に教えてもらう
最後に「プログラミングスクールに通ってスキル・知識を持った先生に教えてもらう」です。
プログラミングスクールに通えば、同じ目標をもって切磋琢磨する仲間や教えてくれる先生がいるため、学習するモチベーションを維持しやすいと思います。
スキルとして身に付ける際に効率的に学び定着させる場合は、プログラミングスキル・知識を有した教育を専門としている方から直接教えてもらうことは非常に有効です。
最近だと以下のように、月額2,980円~ という日本最安級の料金でプログラミングを経験できるスクールもあります。それらを利用して、今の自分がやりたいことを実現させてくれそうなのか一度相談して、どういうものか体験することで見えてくるものもあると思います。
現在は、初めての方に安心の制度「1か月全額返金保証」があります。
自分に合わないと感じた場合は返金ができますので、ノーリスクで試せるため是非一度入ってみて試す価値は十分あると思います。
たくさんあるスクールはシステムエンジニア、プログラマーに転職するためのプログラミングスクールであって、スクールに通う費用も高いですし、仕事にするレベルまで学習し習得する必要はありません。
あくまで今と将来の自分の仕事を効率化できればよいと考える方も多くいる思いますので、長く続けられるか不安な方は、上記のスクールのようにサブスク型で月毎に続けるか判断することをオススメします。
筆者もプログラマー時代に研修でプログラミングスキルを有した教育の専門家に教えてもらったことで、大きく成長できたと実感しています。
まとめ
『プログラミング的思考』がなぜ必要かは以下の理由になります。
- 仕事で成果を出すために『プログラミング的思考力』が必要
- これから社会で活躍する今の子どもたちは義務教育に組み込まれている
- プログラミング能力で業務効率化でき生産性が飛躍的に向上する
また、プログラミング的思考を身に付ける方法としてプログラミング学習があり、以下の方法で学習することによりプログラミング能力も身に付けることができます。
- 独学で学ぶ
- 身近なスキル・知識を持つ人に教えてもらう
- 専門のスクールに通って専門家に教えてもらう
プログラミング能力を身に付けることで、自分の仕事において直接的に業務効率化が可能になります。
最近では、ノーコード開発やローコード開発という単語を聞いたことがあるかもしれません。これらが流行ってこればプログラミング知識がなくても業務効率化ができるのでないかと考えがちですが、実情としては難しいです。
なぜかというと、ノーコード開発などはプログラムの基本原則や考え方を理解をしないと作れないので、やはりプログラミングの知識は必ず必要になってきます。
また、小学生でプログラミング学習を必須で学ぶことになったので、子どもをお持ちの親御さんは尚更プログラミングについて知っていないと、子どもたちに質問されたときに答えることができません。
今大人である方全員が、一定レベルの学習をすることが必要なのではないかと感じています。