プログラミングにおけるIQの壁

2015年2月12日に投稿 → に更新

a0002_007191

「算数は得意だったけど、数学は苦手…」
「高校までは数学嫌いだったけど、大学の数学やって数学の面白さが分かってきた!」

これらは、算数 → 数学 → 大学の高度な数学へと段階を経ていく際にぶつかるIQの壁です。

算数は具体的な計算をしますが、数学は式を組んで証明することが中心になります。

それはつまり、抽象度の階段を上がるということなんです。

その階段を上がる力がIQ(知能指数)です。

算数はできたけど、数学は苦手という人は数学に必要なIQが足りなかったということです。

プログラミングにもこれと似たIQの壁が存在します。どんなものなのかくわしく紹介します。

アプリケーションをプログラミングする

アプリケーションは具体的であり、アプリケーションに必要な機能を実装していけばいいので、ライブラリ・フレームワークをプログラミングするのに比べれば抽象度は高くありません。

とはいえ、人間が考えたアプリケーションの仕様をコンピュータが理解できるプログラミング言語に変換しなければなりません。

それはアプリケーションの仕様という抽象概念を具体的なコードに落とし込む作業です。それには高度なIQを必要とします。

プログラミングは何をするにも高いIQを使うということです。

ライブラリ・フレームワークをプログラミングする

ライブラリ・フレームワークをプログラミングするにはアプリケーションの全体を俯瞰して眺めることが必要です。すると、共通部分が見えてきます。

「このロジックと、ここのコードはメソッドに切り出すことで、同じ仕組みを使って実装できるな」といった具合にです。

つまり、ライブラリ・フレームワークを開発するにはアプリケーションを開発するよりもさらに高いIQを必要とするということです。

プログラミング言語をプログラミングする

プログラミング言語を実装するには、その言語が必要な機能の実装方法を知っていて、それをどのような構文で表現すればいいかを考える能力が必要です。

プログラミング言語が持つべき機能の本質を見抜き、それを構文表現に落とし込むための高度なIQが必要となります。

ミドルウェアをプログラミングする

代表的なミドルウェアであるRDB(リレーショナルデータベース)には数学の関係代数が使われています。

ECサイトのレコメンドエンジンではベイズ統計という統計学が使われています。

数学理論をソフトウェアとして実装するのには、数学とソフトウェア空間を行き来して、思考を組み立てられる高度なIQを必要とします。

OSをプログラミングする

OSをプログラミングするにはハードウェアが持つ全機能をソフトウェアからアクセスする方法を知っていて、ソフトウェアがハードウェアをどのように制御するのが良いかを考える能力が必要です。

また、OSの機能をアプリケーションから利用させるAPIを実装する際には、どのようなインターフェースを用意すれば最も(性能的 & 安全性的 & 自由度的に)良いかを考えなければなりません。

ハードウェア全体をどのように抽象化してOSとして表現するかを考えられる高いIQが必要となります。

抽象度の壁がIQの壁 → その壁を破る方法は?

アプリケーションが作れてもフレームワークを作ることができない人がいます。それは、フレームワークはアプリケーションよりも抽象度が高く、その抽象度を理解するIQがないためです。

ですが、IQよりも大切なことは、作りたい気持ちです。

「作りたい!」

と思った瞬間、それを作るための技術を学ぶ意欲が生まれます。

そして、試行錯誤しながらプログラミングに没頭してるうちに自然とIQも上がっている、そういうものなんだと思います!

プログラミング初心者におすすめのサービス
1. 教室で学びたい派なら

プログラマカレッジは20代限定で、無料で受講できて、修了後、就職支援もしてくれるプログラミングスクールです。最高過ぎですよ、これ!!企業からの協賛金によって運営されいているため無料で受講できるんだそうです。すばらしいシステムだと思います!

30代の方には

プログラマカレッジは20代限定なので30代の方にはゼロスクがおすすめです。35歳以下なら無料で受講できます。教室も札幌、仙台、東京、大阪、神戸、福岡と全国展開しているので地方の方でも利用できます。

2. 自宅で学びたい派なら

TechAcademyの無料コースは20代限定でプログラミングのリモート学習 + 就職支援が無料で受けられるサービスです。なんといっても無料だし、就職に必要なスキルが身につけられるという意味でもやってみて損はないでしょう。

30代以上の方には

TechAcademyの無料コースは20代限定なので30代以上の方にはTechAcademyのJavaコースをおすすめします。Javaは求人が多くプログラマーとして就職したい方にはぴったりです。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. エンジニア未経験の人でも利用できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。お給料をもらいながら社内研修でプログラミングを学べる会社が狙い目です。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

 - 能力開発