まとめはじめに今日は、「プログラミング言語マスターのコツ」についてお伝えしたいと思います。これは、僕が学生時代に編み出した「大学受験の攻略法」をプログラミングの世界に当てはめたものです。凡人の自分が大学受験の時に使っていたノウハウ(考え方)であり、今現在のエンジニアスキル習得にも非常に役立っているという点で、一応は実績があると言えるのではないでしょうか。大学受験もプログラミングも、要は「技術を習得する技術」が試される世界であり、両者は共通しています。その攻略法も似通ったものになるのは、ある意味当然ですよね。実際、このコツを意識した上でプログラミングの習得に励んだ結果、約2年でリードエンジニアとして仕事ができるくらいにはスキルを身に付けることができました。基本的には「今すでに一つ言語をやっているけど、別の言語を使う必要が生じた」という方向けの記事ですが、「これからプログラミングを始めたい!」という方にとっても役立つ内容になっていると思います。以下3つのポイントとしてまとめているので、「言語の習得にそんなに時間掛けてられない!」というあなたに、何かヒントを掴んでもらえたら嬉しいです。新言語習得の3つのポイント1.プログラミング言語の全体像=地図を手に入れるまずは、習得したい言語(例えばRubyとしましょう)の全体像を把握することが大切です。イメージとしては、「Rubyという世界の地図を最初に持っておく」という感じ。この地図があるのと無いのとでは、これ以降の学習効率が全然変わってくるんです。・入門書を1冊、「立ち止まらずに」読み通すというのがオススメです。その言語の「入門書」と位置付けられている本を1度読み通します。(どの本を選ぶべきかは、Amazonのレビューなどを参考にしてください。基本的に「定番」とされているものを選べば問題ありません。)この時のポイントは、「分からない事があっても、そこで立ち止まらない」ということ。時間を掛けすぎてはいけません。「こんな処理もできるんだ!便利だな〜」くらいで最初は大丈夫です。1つ1つの細かいメソッドの使い方を覚えるのではなく、「なぜそうなるのか」という仕組みの部分にフォーカスしましょう。「オブジェクトの考え方がJavaと結構違うなぁ」など、自分が知っている言語と比較しつつ全体像を掴むということを意識してみてください。して、頭の中に「Rubyという世界の地図(見取り図)」を作っておきます。実際の開発を通して、知識の「点」をたくさん作る地図が用意できたら、次は実際に動くプログラムの作成を通して、実用としての「知識の点」をポツポツと増やしていきます。Rails)を使ったアプリケーション開発から始めてもいいと思います。ここは、「とにかく動かしてみる」というフェーズです。ちなみに、「知識の点」というのは例えば以下のようなものを指します。配列/文字列の具体的な操作方法クラスからインスタンスを生成して、メンバーの値を取り出す方法エラーを捕捉する方法これらは最初に読んだ「入門書」にも含まれている項目ですが、「実際にコーディングする」というプロセスを経ることで「とりあえず使える」レベルの知識に変えていくことができます。この時点においてそれぞれの知識は「点」であり、バラバラに存在している状態です。開発現場で即戦力として活躍できる(「この言語使えます!」と言える)段階には至っていないので、次のステップで一気にレベルを引き上げていきます。「一部だけでなく、応用的なことも含めて広く対応できる状態」の境界線が、現場基準で「この言語使えます!」と胸を張って言えるボーダーだと僕は思っています。受験の世界においても、複数の知識を組み合わせて応用問題を解ける人は圧倒的に優位に立てます。プログラミング言語に限らず、「新しいことを習得するのが遅い人」は、このボーダーを超えるまでに長い時間をかけてしまっているわけです。知識が点のままだと、エラーなどの問題を解決すること自体が難しくなります。「これまでに経験したパターンそのもの」でないと、対処ができないからです。「スカスカのクモの巣」のようなもので、獲物の蝶が飛んできても引っ掛けることができない(=生じた問題に対処できない)状態です。逆に、点同士が繋がっている状態だと、それらの線が重なり合ってきめ細かな「知識の網(ネットワーク)」になります。この状態であれば、飛んできた蝶を引っ掛けて捕らえる(=生じた問題を解決する)ことはさほど難しくなくなるのです。開発中にバグが出ても、精神的に余裕を保てます。(とはいえ、本番環境でバグが出ると「ヒヤっ」とするのは変わりませんが。笑)では、どうすれば知識をネットワーク化できるのか?そのための重要なポイントの一つが、STEP1の「最初にその領域の地図を持っておく」ということなんです。イメージを掴むために、ものすごく単純な状況を考えます。今、Rubyに関する「知識の点」が2つだけあるような場合を考えましょう。いいので、「Ruby」という世界の地形や方角が分かっていれば、その2点間の距離や相対的な位置関係が分かりますよね。2点間に「線」を引くことができるのです。この点の数を3,4,5...と増やしていき、それら全てを線で結んでいけば、きめ細かな「網」の完成です。逆に、「地図」を持っていないと、2つの点はいつまでも独立した「点」のままで、知識のネットワークを形成できません。結果として、これがプログラミング習得スピードの大きな差になっていきます。「その日の開発で学んだことをメモっておき、後日に周辺情報をググって復習する」というのも、知識のネットワークを作るためには有効な手段です。僕の場合は、その日初めて知った技術的な内容をQiitaというサービスの投稿としてまとめ、後から振り返れるように情報を集約しています。自分だけのノートができていく感じで楽しいので、オススメですよ!まとめいかがだったでしょうか。開発現場でも、「今まで使って来た言語とは別の言語を使わなきゃいけなくなった!」なんてことは普通にあります。そんな時、サラッと新しい技術を身につけてすぐに戦力として動いてくれるエンジニアは重宝されますし、当然報酬も高くなりやすいですね。キャッチアップの際の1つの考え方として、今回の話を実務に生かして頂けると嬉しいです。【独学オンリーvs就職】プログラミング習得の最短ルートは?RECOMMENDこちらの記事も人気です。@tau_tau_xとあるスタートアップ企業でリードエンジニアをやっています。■これまでのキャリア新卒で大企業に入るも半年足らずで退職。