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

   

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

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

「君センスがいいね!」

ということになります。ということはセンスの良さとは、「理解力がある、飲み込みが早い」ということになります。

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

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

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

抽象化の例え話

例えば、喫茶店に行ってコーヒーを出された場合、コーヒーカップに入っている黒い液体がコーヒーだとわかりますよね?
これには抽象化能力が使われています。まず、コーヒーカップを過去に見たことがあって、これは液体を入れる入れ物であることがわかっている必要があります。
過去にコーヒーカップをたくさん見て、それらを抽象化して捉え、共通点を抽出しています。この知識を持ってる状態で喫茶店に入ったから、ウェイトレスがテーブルに置いた物体がコーヒーカップであることを認識できたのです。

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

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

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

具体的に何をすればいいかというと、プログラミング言語を学べばいいんです。
鶏が先か卵が先かみたいな話ですが、プログラミング言語をいくつも学んだ人が新たなプログラミング言語を学ぶ時には「あぁ、この構文はあの言語でいうところのあれだな」みたいな理解ができるようになります。例えば、Javaをやったことある人がRubyを学ぶ際にclassという構文を見た際に「Javaのclassと同じようなものだな」と理解することができます。

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

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

Javaをやって、JavaScriptをやって、PHP、Rubyとやっていくうちに「プログラミング言語っていうのはだいたいがifで条件分岐して、for, whileで繰り返すものなんだな」というのがわかります。オブジェクト指向言語だったら、「classやメソッドがあって、publicやprivateなどのアクセス制限があるんだな」という抽象化した知識が生まれます。

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

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

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

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

プログラミング言語をいくつも学ぶということは、マシン語をどう表現するかを学ぶことでもあります。
手続き型言語はマシン語を手続きの集まりとして表現しています。
オブジェクト指向言語はマシン語をオブジェクトの相互メッセージとして表現しています。
関数型言語ならマシン語を関数の連鎖反応として表現しています。

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

ですから、言語を学ぶときだけでなく、コードを書くときにもその抽象化した知識を用いて最適な表現を選ぶことができます。例えば、関数型言語を学ぶとオブジェクト指向言語を使う際にも、高階関数を使ったロジックが浮かびやすくなります。様々な言語を学ぶことで、自分がコードを書く際の発想のバリエーションが増えるのです。これが「センスのいいプログラマー」なのです。

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

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはDODAというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『DODA』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - ITエンジニア成功術 ,