プログラミングの必要性

プログラミング

プログラミング必修化の必要性を現役エンジニアが解説 【どの職種でも使えるスキル】

プログラミング教育の必修化が2020年よりスタートしますが、そもそもプログラマーやSEになりたい訳ではないのに何故学ぶ必要があるの?と思う方も多いのではないでしょうか?

そこで本記事では何故プログラミングを小学生から義務教育として全国民が学ぶ必要があるのか、学ぶと何が出来るようになるのかをプログラミング初心者でも分かるように解説していきます。

なぜプログラミングを学ぶ必要があるの?

なぜプログラミングを学ぶ必要があるの?

学ぶ必要性は小学校のプログラミング必修化を紐解いていくことで分かります。文部科学省から出ている内容の中で以下が分かりやすいです。

プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない

出典: 文部科学省 - 小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議

つまりプログラミングのスキルを学ぶものではなく、プログラミング的思考を鍛えるための教育である。と記載されています。

プログラミングを学ぶのではなく、プログラミング思考を育てる考え方です

プログラミング的思考って?

プログラミング的思考

同じ文部科学省の出典内容にプログラミング思考についても話を書かれていますが、その中でも一文を紹介します。

自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく

いわゆる「コンピュテーショナル・シンキング」の考え方を踏まえつつ、プログラミングと論理的思考との関係を整理しながら提言された定義である。

出典: 文部科学省 - 小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議

コンピュテーショナル・シンキングとは「コンピューター科学者のように考える方法」と言われています。

もともとは計算機や科学者・発達心理学者のシーモア・パパート氏が用いた言葉です。以下の要点が重要だとされています。

  • 抽象化:関連する情報を特定して抽出し、主要なアイデアを定義する
  • アルゴリズム設計:問題解決やタスクを実行するための命令の順序を作成する
  • 自動化:コンピューターまたはマシンに反復タスクを実行させる
  • データ分析:データからパターンや規則性を見つけて理解する
  • データ収集:データ分析するための情報を収集する
  • データ表現:適切なグラフ、チャート、単語、画像を利用してデータの描写や整理をする
  • 分解:データやプロセス、各種問題をより小さく管理しやすい部分に分解する
  • 並列化:目標の効率的な達成に向けて各タスクを同時に処理する
  • パターンの一般化:予測された結果をテストするために、観測されたパターンのモデル、ルール、原則、または理論を作成する
  • パターン認識:データのパターン、傾向、規則性を認識する
  • シミュレーション:実世界のプロセスをシミュレーションするモデルを開発する

例えば抽象化や分解、並列化などコンピュータやプログラミングの世界だけではなく、様々な業務や生活において必要なスキルであることが見えてくるのではないでしょうか?

続けては上記の考え方を基本としてプログラミングを学ぶと得られるメリットについて紹介します。

プログラミングを学ぶと得られる7つのメリット

プログラミングを学ぶと得られる7つのメリット

コンピュータやインターネットの原理を理解する上で一番最適な手段

少し前まではプログラミングを学ぶのは、いわゆるSEやプログラマと呼ばれていたIT業界の人たちだけが必要とするスキルの一つでした。

例えばIT企業の中では営業は物を売るスキルやコミュニケーションスキル、企画は新しいアイデアを考えるスキルのように、プログラマはシステムを作るスキルといった感じです。

特に大企業では分業化されており、自分の職種にあったスキルを特化して見につけることが正解の時代が続いていました。

しかしここ数年でのシステムの進化が急激に進んでおり、特に機械学習やAIの登場により急速に発展を遂げています。

現状も既に広がっていますが、今後様々な業種においてコンピュータやシステムが身近な存在になっており、どの業務を実行するにもシステムを通して命令することが増えてきます。

加えてある程度の原理を理解した上でシステム発注や管理をする機会も増えてきます。そういった状況の中でコンピュータに対する原理の理解がないと指示すら満足にできません。

そこでプログラミングはコンピュータやインターネットの原理を理解する上で一番最適な手段であると言えます。

何事も効率的・論理的に考える力が身に着く

「 コンピュテーショナル・シンキング 」が身につく。と同義です。どういった問題やタスクにおいても効率よく最適に動く問題解決力が身につくようになります。

コンピュータの利用有無だけではなく日常的な思考過程であり、普段の行動にも大きく活かせるポイントです。

特に普段から実感している項目は抽象化・分解・並列化です。

一例として、コンピュテーショナル・シンキングが普段から鍛えられているエンジニアに対して視点を広げる意味で小規模のプロジェクトマネジメントをお願いするケースがあります。

もちろん普段重要視されていない調整力やビジネス知識などが不足している分、苦戦している人も多いですが、結果はほとんどのケースで通常マネジメントを行っている人よりも成功する事例が目立ちます(専門外分野は多少サポートします)

特に上記の抽象化・分解・並列化を最大限活かしたタスク分解やスケジューリング、リスク管理などが優秀です。

飲食店の店長から工事の現場監督、コンサルティング、マーケター、営業、事務職、企画職...etc 様々な職種に活かせる力です。

一生仕事に困らない

一般的に何事も需要と共有の上に成り立っていることが多いですが、求人の有無も同様です。下記はIT人材に対する不足規模予測を表したグラフです。

IT人材に対する不足規模予測を表したグラフ
出典: https://www.meti.go.jp/policy/it_policy/jinzai/27FY/ITjinzai_report_summary.pdf

2020年時点で既に約30万人のIT人材が不足しています。今後も需要と供給の差はますます広がることが予想されており、2030年には約60万人が不足すると言われています。

ちなみに予測時点より人工知能AIやネットワークなど加速度的に進化を続けており、いままで少し距離のあった非IT系企業や職種にもIT人材が必要になることから上記予測以上に不足するとまで言われています。

最後にFacebookの元役員だった、Chamath Palihapitiyaは「プログラミングを学ぶのなら、生涯仕事に困らないことを私が保証しよう。」とTech Crunchのインタビューで答えたのは有名な話です。

在宅での副業と相性が良い

IT系の職種はリモートワークと非常に相性がよく、必然的に本業とは別に副業で入りやすい職種となっています。

特にプログラミングは一度作るものをすり合わせておけば毎日対面でMTGをする必要性もなく、在宅副業にも最適な手段となっています。

需要と供給の話からも、副業の需要自体が多いという点も重なり、他のスキルと比べても遥かに副業に適したスキルと言えるでしょう。

自己管理できる前提ですが、期限までにアウトプットを出せばよいという考え方は、ある程度自分の都合のよい時間に作業時間をあてることができるのもメリットです。

同じ話から副業ではなくフリーランスにも転換しやすいです。

周りに比べて大きなアドバンテージを得ることができる

まずコンピュテーショナル・シンキングによる思考力のメリットを得ることができます。

上記だけでも大きなアドバンテージになりえますが、加えてコンピュテーショナル・シンキングの項目にある自動化の項目は自分の価値をより高めてくれます。

機械ができることは機械にやらせる、人間しかできないことに専念するという考え方が根底にあります。

・様々な業務に対して価値のあることだけを経験することができる→無駄なルーティンワークなどに時間を割かれることがない
・様々な業務を最短時間で終わらせることができる→他の人と比較して同じ時間で多くの経験を得ることができる

人間の成長は基本的によりよい経験を、早いサイクルで繰り返し実行することです。たとえスタートラインが同じでも1年後には大きな差となって生まれるでしょう。

逆にプログラミングの基礎知識がない状態では大きく不利な状況になってしまいます。守りの意味でも基礎的な知識を身に着けておくのは必須です。

学ぶ時間に対して得られる効果が優れている

プログラミングは他のスキルと比べても、学ぶ時間に対して得られる効果が優れています。

今回紹介している様々なメリットを得られるまでの時間で考えると2ヶ月本気でやれば、メリットの大部分を受ける事が可能です。(一流のエンジニアとして生きていくという前提であれば終わりのない話になります)

例えば英語学習はよく近道はないと言われています。

聞き取りやリーディングまでに1000時間・業務で使えるまでに10000時間とも言われますが、プログラミングはある程度効率よく学ぶことで時短することが可能です。

あくまでもざっくりとした主観になりますが、60日×5時間で300時間あれば「今回紹介している様々なメリットを得られるまで」の定義上、到達することが可能になります。もちろん副業化することも可能なラインです。

どうやって効率的に学ぶのがよいかは別記事でも紹介する予定です。

インターネットがあればどこでも学ぶことが出来る

費用帯効果の面でも優れています。まずプログラミングはパソコンとインターネットがあれば始めることができます。

更にインターネットで調べることで様々な知識が転がっています。もちろんプログラミングの知識も同様です。

インターネット上には発売されている本よりも遥かに優れているサイトが山のように存在します。ただし役に立たなかったり嘘が書かれていることで遠回りになるケースも多いにあります。

この辺りを回避して有益な情報だけを最短ルートで学んでいくことが重要ですが、そういった情報にあたるリスクを回避する意味では最初は書籍に頼ることも良いでしょう。

プログラミングは圧倒的コスパの良いスキルだと言えます!

成功した人がプログラミングの重要性を説いている

プログラミングを学ぶ必要性について、世界の著名人も同様の言葉を発信しています。

まずはAppleの創設者でありiPhoneを世の中に提供したスティーブ・ジョブズから。彼自身はプログラミング力は高くなかったと言われていますが、こういった言葉を残しています。

この国の全ての人が、プログラミングができるようにならなければいけない。なぜなら、”考え方”がわかるようになるからだ。ロースクールに行くようなものだよ。
米国人は全員プログラミングを学ぶべきだ。~コンピューター科学は私にすれば一般教養さ。 人生の中の1年をかけて皆が学ぶべきだと思うんだ、プログラミングの方法をね。

続けて前大統領のバラク・オバマです。もちろんプログラマー歴はありません。

ビデオゲームを買う代わりに、自分で作ってみよう。最近のアプリをダウンロードする代わりに、デザインしてみよう。プログラミングを学ぶことはあなたの未来のためだけじゃない。国の将来がかかっているのだ。

現FaceBook CEOのマーク・ザッカーバーグも元々心理学専攻でしたが、家庭教師をつけてプログラミングを学んでいたのは有名です。もちろんプログラミング力だけで成功したとは言えませんが、基礎の一つとして重要な位置づけを占めていたでしょう。

General Electric (GE) のジェフリー・イメルト氏が、以前「今後採用する20代の社員に関しては、採用の職種に関係なくに関わりなく、プログラミング能力を必須の能力として課す方針」を表明したことも話題となりました。

日本ではサイバーエージェント社長の藤田晋さんも以下のように語っています。

今、僕には2歳の息子がいるが、絶対にプログラミングを習わせます。職業人口的に不足しているのは明らかで、プログラミングができたら食っていける。
国際的な競争力のあるものを作るという観点においても、日本でプログラマーを育てないといけない。

また全てを紹介しきれませんが、以下の企業はいずれもプログラマーがCEOとして設立されたものです。

  • マイクロソフト
  • Amazon
  • Facebook
  • Oracle
  • アルファベット(Google)
  • Paypal
  • テスラ
  • インスタグラム
  • NetFlix
  • Spotify

以下の通り、時価総額ベースでもIT系企業が圧倒しています。

プログラミングは世界中で必修化されている

日本は2020年から義務教育としてプログラミングがスタートしますが、実は先進国の中では随分と遅れているほうです。

イギリスでは2013年より小学校から高等学校までコンピュータに関する授業があります。フィンランドやロシアやハンガリーでも小学校から教育が実施されています。

アメリカでも必修化はされていませんが、コンピュータサイエンスとして科目が選べるようになっています。アメリカでは企業支援が盛んでかなり教育は進んでいる国の一つです。

中国や韓国、インドでも必修化はされていないものの初等教育からのICT教育に力を入れています。

いずれもメリット部分に記載した論理的思考力の育成や情報技術のリテラシー取得、IT人材育成が目的です。

自身の経験から感じる必要性

最後に私自身の経験をお話します。

私自身の経歴もエンジニアから始まり、営業・企画・マーケティングを経験し、現在ではエンジニア兼企画職として様々な職種の方と横串で仕事をしています。

ここまでの経験で感じたことは2点あります。

1点目はエンジニアで学んだ考え方はどの職種においても無駄ではなかったこと、2点目は様々な人と接する中で全体感としてプログラミング経験の有無がアウトプットに明確に表れていることです。

大学での専攻では情報系ではなかったためプログラミングに触れたのは社会人になってからでした。

そこから約10年たった今でも、もっと早くプログラミングを始めておくべきだったと後悔しています。

早く始めるほど人生のメリット大きいです!

プログラミングを学ぶべき理由まとめ

プログラミングを学ぶべき理由まとめ

まず小学生の必修化は学生に必要だから実施するのではなく、考え方が全国民に対して必要になることから実施するという話をしました。

続けてプログラミングはあくまで手段であり、IT業界以外の方でも得られるメリットと費用対効果の良さについて紹介しました。

いままで紹介したとおりプログラミング学習はメリットしかありません。

何を勉強しようか、どういった職種につくべきか、転職すべきか・・迷う時間があったらプログラミングやりましょう。

費やした時間は色々な形で数十倍になって返ってきます。早くメリットを受け始めるほど周りに差をつけることが出来ます。

人工知能の発達により、今後様々な職業が機械に置き換わると言われています。プログラミング(=コーディング)作業かもしれませんし、未来にどれから置き換わっていくのか今断言できる人はいません。人工知能に指示を出す部分は置き換わることはない、と提唱している人もいます。

ただ一つ言えるのはプログラミング思考を身につけ、周りとのアドバンテージを持ち様々な職業への対応力を身につけることが、今後の置き換わっていく世の中でも最後まで生き抜ける人材だと考えています。そのために身に着けておくべき基礎的な能力の一つがプログラミングです。

早速プログラミングを始めてみましょう!

-プログラミング

Copyright© ビギナープログラミング , 2020 All Rights Reserved.