43-プログラミング言語は複数習得すべき

プログラマが知るべき97のこと」の43個目のエピソードは、プログラミング言語の習得に関する話です。26-言語だけではなく文化も学ぶでも書いたように達人プログラマーには「毎年、新たなプログラミング言語を1つは学ぶこと」と書かれています。新しいプログラミング言語を習得していくことにより、新しい視点や思考を出来るようになります。このエピソードでは、新しい言語を学ぶ場合でも、可能な限りパラダイムの異なる言語を選択していくのが効果的であると書かれています。
ですが、実際に新しい言語を学ぶという事はどの程度現実的でしょうか?2つ目の言語を学び始める時期に関しては才能や素質による部分が大きいと思います。22-1万時間の訓練で書いたように誰もが適切な訓練を積み重ねる事でエキスパートとなれと思いますが、誰もが同じようなペースで訓練できるわけではありません。自分の場合、20代前半ではほぼ100%の仕事や学習はJavaでした。Javaを6年ほど続けた上でRubyPHPPythonなどを経験し、趣味ではJavaFX Script, Scalaなどを触っています。今、考えるとその配分は良かった点も悪かった点もあると感じています。
学習意欲のある新人がプロのプログラマを目指すのであれば、最初の3年程度は浮気をせずに1つの言語に絞って学習する方が良いと思います。1つの言語に絞る前の段階で、幾つかの言語をつまみ食いして、自分にあいそうな言語を探すのもいいでしょう。しかし、ある程度の経験を積むまでは1つの言語に打ち込んだ方が良いと思います。ある言語をそれなりに理解しているならば新しい言語の習得の時に新しく覚える事が減りますし、比較しながら学習することができます。また、ホーム言語に別の言語で得た経験を適用して、ホーム言語のスキルをさらに伸ばすこともできるのです。
現実的には最初のホーム言語として適しているのは、JavaPHPVB.netあたりかと思います。何より仕事として選択がある程度可能ですので、仕事外の時間だけで習得するよりも早いペースで習得可能です。また、十分な書籍も揃っています。そして十分なコミュニティも形成されています。したがって、マイナーな言語を選択するよりも楽にスキルが伸ばせるでしょう。勿論、自分がやりたいと心に決めた言語があるならばそれを選んでください。
また、プログラミング言語だけではなく、周辺の技術や開発手法なども学ぶべきです。実際の開発現場では、どんな言語でも使いこなすエキスパートプログラマはそれほど価値はありません。3つ4つの言語をそれなりのレベルで使えれば十分です。それだけの数の言語を使えれば、新しい言語が業務で要求されても、覚えながら仕事が可能だからです。それよりも、ネットワークの基礎知識、Linuxを扱うスキル、UMLを使った設計方法、ユースケースの書き方、テスト駆動開発の進め方など周辺技術や設計手法を幅広く使いこなせる人に価値が高くなります。近年の開発では短納期・少人数で行う事が多くなっているため、要件定義から運用までカバーできる人は価値が高いのです。
「新しい言語を学ぶ」のは重要です。それはプログラマとして幅広い知識と考え方を習得するためです。その為には言語だけでなく周辺技術にも目を向けると良いでしょう。さらに全く異なる分野の事を学ぶのも違った効果があるでしょう。
なにはともあれ、学習を続けることしかありませんね。

プログラマが知るべき97のこと

プログラマが知るべき97のこと