記事の内容
別の記事で、目的別に初心者にお勧めのプログラミング言語を書きました。
でも特別な目的を持たずにプログラマーを目指す人には、Ruby on Railsをお勧めします。
この記事ではその理由について説明します。
求人数を比較してみよう
プログラミング初心者が成長するためには、就職することは必須です。
ということは、求人数が大事な指標になってくるので、その数字を見てみましょう。
転職Greenで調べてみます。
言語 | 企業数 | 求人数 |
Ruby | 730 | 1748 |
PHP | 1218 | 2777 |
Java | 1222 | 3064 |
Python | 573 | 1319 |
PHPとJavaが多くて、次にRuby、最後にPythonというのは大方のエンジニアの予想通りだと思います。
この時点で、初心者は最初にPythonを選ぶべきではないということがわかりました。
次に求人数が少ないRubyについては、結論を出すのは少し待って下さい。
初心者にはSier業界ではなく、Web業界に入って欲しい
私は、これからエンジニアリングを学ぶ人達には、Sier業界ではなくWeb業界に入って欲しいと思っています。
その理由はこの記事を読んで貰えればわかります。
Sier業界には将来性は、ほぼ無いと言っても過言ではありません。
そして、Sier業界で多く使われているのがJavaという言語です。
そのため、いくら案件数が多くても、Javaから学ぶのは避けた方がいいというのが私の主張です。
Web業界に入るためには、Javaを学ぶことは適していません。
ただ、Javaという言語自体は素晴らしいものなので、どこかのタイミングで学ぶのはいいと思います。
これで、Javaも選択肢から外れました。
PHPで作られたプロジェクトは玉石混交
PHPはWeb業界では、一番、よく使われている言語です。
それは間違いなく事実ですし、求人数も多いです。
しかしながら、PHP言語が使われているプロジェクトは玉石混交というデメリットがあります。
まず、フレームワークはバラバラです。
Zend、Laravel、Cake、Symfony、Fuel、Codeigniter、Yiiなど、有名どころだけを数えてもこれだけあります。
さらにテンプレートエンジンも複数あります。
フレームワークが使われていないプロジェクトもありますし、独自のフレームワークで作られたプロジェクトもあります。
そのため、一口にPHPと言っても、それほど統一されていないという事情があります。
さらに悪いことに、微妙なプロジェクトに入ると、「正しい状態のコード」を勉強することができません。
それは、エンジニアとしての成長が見込みづらいということを意味します。
次にRailsを見てみましょう。
設定より規約という厳しいルールを持つRails
Rubyの求人数は、確かにそこまで多くはありません。
しかし、フレームワークは、ほとんどがRuby on Railsです。
Ruby on Railsは10年以上もの間、使われてきました。
そのため、Ruby on Railsさえ使えれば、(Railsを使っている)どこの企業にも就職しやすくなります。
また、Railsの良いところは、様々な厳しい規約があることです。
その規約のお陰で、あまり間違ったRailsの使い方はできませんし、どのプロジェクトも似たような感じになります。
そして、その規約は偉大な先人達が考えてきたベストプラクティスなので、Railsを勉強することで、美しい在るべきアーキテクチャを理解することができます。
それをプログラミング以外のことに例えれば、空手や合気道で型稽古をすることに似ています。
型稽古は実践的ではないとバカにする人もいますが、最初に型稽古をやらないことには覚えられるものも覚えられません。
そのため、最初はあえて「特定の状況」を作りだした上で練習しています。
Railsの厳しい規約は、それと同じことだと考えて下さい。
さらに、RailsにはWebアプリケーションを作るための全てが含まれています。
Railsさえ理解すれば、どんなWebアプリケーションでも作ることができます。
クックパッドやAirbnbがRuby on Railsで作られているのは有名な話です。
まとめ
私はRailsが好きなので、Rails贔屓の内容を無意識に書いてしまっているのかもしれません。
ただ、私の長い経験の中で、PHPのフレームワークが被ったことは一度もありません。
移り変わりが激しいので、その度に新しいフレームワークを学び直すことになりました。
これからプログラミングを学ぶ人達には、あまりそういった経験をして欲しくないというのが、私の正直な想いです。
この記事を読んだ上で、JavaやPHP、もしくはPythonから勉強を始めるのは、それはそれでいいと思います。
それなりに経験を積んでいるエンジニアは、それら全ての言語は一通りさわっているはずなので、学ぶ順番が違うだけとも言えます。
これからの長いエンジニア人生において、いいスタートをきれることを願っています。
Good luck for your engineer life!