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

      2016/12/18

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

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

「君センスがいいね!」

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

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

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

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

抽象化の例え話

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

知識は仕事で使えるのが一番

「今の会社だと、同じプログラミング言語しか使わないから、他の言語を学ぶ機会がない」という方は、趣味で他の言語を使ってみるのもいいですが、やはり、仕事で使ったほうが身につくのも速いしお金ももらえていいと思います。

私の場合、UnityとC#を独学して、ゲームエンジニアに転職したことがあります。

自分が使いたい言語を使える会社に転職するというのは、エンジニアとして理想的なキャリアだと思いますし、それは十分可能なことです。

転職活動はやってみると簡単!

私自身3回ほど転職してるんですが、思ってたより簡単で、転職エージェントを使ったらあっという間でした。

エージェントが応募先候補の選出から、面接の日程調整までやってくれるので、こちらから動かなくても半分くらい自動的に進む感じで楽でした。しかも今は好景気で売り手市場なので転職するのにちょうど良い時期です。

レバテックキャリアっていうエージェントがおすすめです。

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

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

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

地方在住の人にも使える転職エージェントがある!

レバテックキャリアは東京・大阪近郊向けサービスなので、地方在住の方には全国の求人を扱っているDODAがおすすめです。利用者の評判がめっちゃいいのでホームページ是非見てみてください。

人脈がなくてもフリーランスになれる!

フリーランスになりたい方にはギークスジョブがおすすめです。人脈がなくてもギークスジョブに登録するだけで案件を紹介してもらえます。案件の希望(どんな技術を使っているか、残業が少ないこと)等も聞いてくれるので、やりたい仕事が出来ます。対象地域は東京・大阪・名古屋・福岡近郊です。

「派遣社員」なら正社員とフリーランスのいいどこ取り!

フリーランスになりたいけど、確定申告とかめんどくさいなという方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるのでいいと思います。

私の先輩でフリーランスになった後、派遣社員になった人がいるんですが「自由かつ煩わしい手続きがなくて最高」って言ってました!パーソルテクノロジースタッフに登録するだけで簡単に派遣社員になれます。

私(やまろう)への相談メールも募集中

転職や仕事術、勉強法等について質問や相談がありましたら、以下のメールフォームからぜひご連絡ください。
経験者から見れば簡単に解決できる相談って多いのでお気軽にどうぞ!こう書いてもなかなかメールくれる人って少ないのでホント気軽にメールしてくれると嬉しいです。

メールアドレス (必須)

相談内容

たまに間違ったメールアドレスを入力されていて返信できない場合があります。一週間経っても返信がない場合、メールアドレスを確認の上、再度送信をお願いします。

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

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

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

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

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

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

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

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

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

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるので、実はとてもいい選択なんです。

 - 勉強法 ,