プログラミングの『センス』を磨くコツ

      2017/03/27

プログラミングのセンスを磨くコツ「センスとは何か?」を考えていくと、「センスの良さって何か?」に行き着きます。

例えば、新入社員が入ってきてプログラミングを教えた際に、すぐ理解して覚えるようであれば、

「君センスがいいね!」

となります。よって、センスが良いとは「理解力がある、飲み込みが早い」ということです。

では「どういう人が理解力があって、飲み込みが早いか」というと「抽象化能力が高い人」です。

初めて見たもの、初めて教わったものを何か理解するには過去見たものとの共通点を見つけて「これって、過去学んだ"あれ"みたいなものだよな」と理解するのが人間の基本的な認知です。

そんな観点から考えた「プログラミングのセンスを磨くコツ」を紹介します。

抽象化の例え話

例えば、喫茶店に行ってコーヒーを出された場合、コーヒーカップに入っている黒い液体がコーヒーだとわかりますよね?

これには抽象化能力が使われています。

まず、コーヒーカップを過去に見たことがあって、液体を入れる物であることがわかっている必要があります。

過去にコーヒーカップをたくさん見て、それらを抽象化して捉え、共通点を抽出しています。この知識を持ってる状態で喫茶店に入ったから、ウェイトレスがテーブルに置いた物体がコーヒーカップであることを認識できたのです。

変な言い方ですが、この人はコーヒーを理解するセンスがあるということです。これと同じでプログラミングの知識も過去の知識を抽象化して新たな知識を理解する人が「センスのある人」ということになります。

ですから、プログラミングを理解するための知識を増やし、それらを抽象化すれば、新たな技術を学ぶ時のセンスが良くなるわけです。

抽象化した知識を増やす方法

具体的に何をすればいいかというと、プログラミング言語を学べばいいんです。

「鶏が先か?卵が先か?」みたいな話ですが、プログラミング言語をいくつも学んだ人が新たなプログラミング言語を学ぶ時には「あぁ、この構文はあの言語でいうところのあれだな!」みたいな理解ができるようになります。

例えば、Javaをやったことある人がRubyを学ぶ際にclassという構文を見た際に「Javaのclassと同じようなものだな」と理解することができます。

たくさんのプログラミング言語を学ぶと、いくつものプログラミング言語の知識から抽象化した「プログラミング言語ってこういうものだ」という認識が生まれます。

コーヒーカップを何度も見たことがあるから、初めて入った喫茶店で出された物体がコーヒーカップだと認識できるのと同じです。

Javaをやって、JavaScriptをやって、PHP、Rubyとやっていくうちに「プログラミング言語っていうのはだいたいがifで条件分岐して、for, whileで繰り返すものなんだな」というのがわかります。

オブジェクト指向言語だったら、「classやメソッドがあって、publicやprivateなどのアクセス制限があるんだな」という抽象化した知識が生まれます。

その知識を持ってる状態でSwift, Scala, Goのような新たな言語を初めて見ても、なんとなく構文の意味が理解できるんです。

つまり、複数のプログラミング言語を学んだ人が新たな言語を学ぶ時には「プログラミングのセンスがいい」状態になります。

「それって、プログラミングのセンスというよりは、プログラミング言語を学ぶセンスじゃないか?」と思われたかもしれませんが、そうではありません。

プログラミング言語とはマシン語の表現バリエーションである

プログラミング言語をいくつも学ぶということは、マシン語をどう表現するかを学ぶことでもあります。

手続き型言語はマシン語を手続きの集まりとして表現しています。

オブジェクト指向言語はマシン語をオブジェクト間の相互メッセージとして表現しています。

関数型言語ならマシン語を関数の連鎖反応として表現しています。

様々な言語を学ぶとプログラミング言語=コンピュータの情報処理を抽象化して表現する方法であることが理解できます。これがプログラミング言語の本質なんです。

ですから、言語を学ぶときだけでなく、コードを書くときにもその抽象化した知識を用いて最適な表現を選ぶことができます。

例えば、関数型言語を学ぶとオブジェクト指向言語を使う際にも、高階関数を使ったロジックが浮かびやすくなります。

様々な言語を学ぶことで、自分がコードを書く際の発想のバリエーションが増えるのです。これが「センスのいいプログラマー」なのです。

ということで、プログラミングのセンスを磨くには「多くのプログラミング言語を学んでみる」のがいいと思います!

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

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!就職の紹介料を企業からもらえるのでスクールを無料にできるんでしょうね。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebスクをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

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

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

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

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

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

 - 勉強法 ,