hiroktsのブログ

IT開発系の勉強会の感想とか雑記とか

なぜプログラミングを教育することが必要なのか?

将来的に働くのに必須となる可能性が高いから

単純明快

将来的に働くのに必須となる根拠

GEの採用ではプログラミング能力を義務付けているらしい。
今はGEだけかもしれないけど、将来的に多くの企業がこうなる可能性はある。  

GE: 今後採用する全社員に対してプログラミング能力を義務付け・採用職種に関わりなく 

プログラミングを中心とした情報技術はすでに社会的基盤

現代ではどんな仕事を選んでも、モノづくりや仕事の進め方についてITとは切り離せなくなっている。
例えば、メール、会議室の予約できるカレンダー、Excel

こうした企業活動の現場でモノをつくったりして働いている人たちは、「プログラミングを始めとした情報技術と密接に関わっている人たち」になっている。

情報技術と密接した社会で働いていくとき、プログラミングの基本的な知識の有無でリーダーシップや他者とのコミュニケーション能力に大きな差がついてしまう。
乱暴な言い方をすれば、プログラミングをわかっているふつうのリーダーとわかっていない情弱リーダーという感じ。
アップル、グーグル、アマゾンのような企業と渡り合っていくには、リーダーとなる人が『ITをインフラとして活用する考え』を理解できないと辛い戦いとなる。

ITをインフラとして活用する考え

ITをインフラとして活用するには、プログラミングを中心として『論理的思考力』を身に着けるのが必須になる。

論理的な思考力をさらにブレークダウンすると以下の2つになる。

  • 課題定義能力
  • 問題解決能力

社会的な課題があったとして、それをIT的な課題としてちゃんと定義する(プログラミングで作ったソフトウェアで解決する問題とする)のはかなり難しい。
そうした課題の定義能力の前提となるのが、「作業を分解し、分解した作業を順番通り行うことで問題が解決できる」というプログラミングの経験や知識であり、問題解決能力になる。

「ITをインフラにする」というのはこうした論理的思考力で「こういうシステム(プログラム)を構築すればこの課題は解決できるはずだ」ということがわかることが重要。
実際に手を動かしてプログラミングをやる必要がなくても、手を動かす人と協働を効果的に行うためにはプログラミングの実践や知識が非常に重要。
だからプログラミングの教育が必要なのだ。

プログラミングでどんなことを学ぶのか?

一般的なプログラミング書籍、たとえばプログラミング言語の入門書などでは以下のようなことを学ぶことができる。 順番は適当です。

動かし方

Windows, Mac, Linuxなどでプログラムを動かす方法

ifでの分岐

「もし、〜ならば」でyesならこう動かす、Noならこう動かす

ファイル操作など

多分テキストファイルなどを読み書きする

繰り返し

何回でも同じ操作を繰り返しできるのはプログラミングの魅力かもしれない。
ちょっとだけ変化をつけて繰り返す、というのもできる。

関数

自分が書いた処理を再利用しやすいように関数にする。 たとえば、テキストファイルを読み込む処理を関数として「file_load」のように名前付きで用意したら、「file_loadでメモ1.txtを読み込む」ということが簡単に書けるようになる。

データ構造(型、データ形式

プログラムで処理しやすいデータ形式とは何かを学ぶ。
例えば、Excelの3行目に入った数字を左から順に処理していくのには『繰り返し』で学んだことを使うが、そのためには処理しやすいデータ形式(たとえば配列)にポンポン入れていくことが必要。

エラーと例外

エラーと例外を学ぶ

Debug、テスト

エラーじゃなくても自分が期待した動作をしなければプログラムは意味がない
ちょっとずつプログラムを動かして動作を確認するのをデバッグという。
また、期待している動作かどうかをプログラム自体で判定するのをテストという。
ちょっとずつ、漸進的にやるというのはプログラミングにとって基本的な戦術になる。それを学ぶ

オブジェクト指向

プログラミングをより構造的に出来るようにするやり方。
ちょっと難しいので頑張って理解する

システム・インテグレーション

大きめの課題をプログラムとして実行するにはどうするか?
たぶん簡単なWebアプリケーションとか書いたりする 動くときっと楽しい