あなたが、ITフリーランスを目指すなら、そして目指していただかないと、プログラマとして高収入にはならないし自由に仕事できないしスキルアップもやりにくいので、ぜひとも目指してしていただきたいのですが、そうするときの戦略があります。
誰にでも学びやすい言語にあるデメリット
誰でもすぐに学びやすい言語、というのは、あきらかに素晴らしいメリットです。初心者にとっては最高のメリットです。ですが、ITの業界の中ではデメリットにもなります。
これは、誰でも簡単に学べる言語、というのは、誰でもできるために、あなたのライバルは極めて多くなるということです。
A社がある仕事を依頼しようとしています。A社は月額80万円で依頼しようかなと考えて周りの同業者に声掛けしてみます。
そうすると、その仕事が行える多くの技術者が候補にのぼります。それが何十人といたりする。そうすると、もっと安くてもやってくれる人がいるんじゃないの?とかいうことになり、A社は発注金額をおさえて月額60万円で発注しなおすわけです。そして、その中には、あまり優れた技術者はもっていない人(あるいは会社)が、60万円でもやりますよ、ということになります。
その仕事の相場は大体60万円くらいかな、ということになります。
誰でも簡単に学べる言語、には、そのように明確なデメリットがあるんです。
このような点があることで、普及しきった感じのあるPHP や 現在最も人気があると騒がれている Python についても、将来までも安心安定、とはいえないというところなのです。Rubyなんかは、完全にPythonに食われてしまった感じもありますし、それらの言語を自分の中の学ぶための最優先言語にするのは、やや怖いものがあります。
同様に、Java や C# は、学ぶのが容易ということもないのですが、使っている技術者がかなり多いので、そこがデメリットになっていきます。
C#なんかは、とても優れた言語なんですよ。書きやすくて実行もはやくて、様々な領域で使えます。しかし、誰もが使っている言語というところが、ライバルが多いという点でみるとデメリットになったりするのです。
ということで、JavaScript以外の言語を学ぶと、収入をあげるのが少し難しくなります。わざわざ、いばらの道を歩む必要はないと思います。
とはいえ、JavaScriptでも非常に使っている人が多いんじゃないのか?
JSを使っている人は多いのか少ない位のか、というと、かなり多いです。
これは言語の中でもトップクラスの利用者だと思います。なにせ、Web開発を行っていると必ず必要になりますので、JavaとJS、PHPとJS、RubyとJS、併用して使っている人も大勢いると思います。
「なんだよ、話が違うじゃないか!」「ライバル多いじゃないか!」
そこなんです。そこに見抜くポイントがあるのです。
JavaScriptを使っている人は多い。しかし、JavaScriptを使いこなせる人は少ない。
どんな言語でも、使いこなしている人は、使っている人より多いと思うかもしれません。
ところが、JavaScriptはかなり特殊な言語なのです。自分は C# などにも詳しいので、JavaScriptの妙なポイントはよくわかります。Web業界自体でも高度なエンジニアや、高度なことをやっているWeb系のベンチャーなどではJavaScriptを詳しく深く知っている人もいて、その人たちはわかっていると思います。
「知っている人は知っている」こと。
なのですが、
JavaScriptは、知らなければならない特殊な罠のような書き方が多くあり、その書き方を知らないとプログラムが全然よめないところがすごく多い。のです。
普通に言語を学んでいるだけでは「こんなことわかるわけねーだろ!」と、うなりめまいのするような書き方ができたりします。
やってはいけないやり方のことを、アンチパターンと言ったりするのですが、そのアンチパターンが異様に多く、それらの組み合わせでどんどんプログラムを組むのが難しくなっているわけです。
周辺技術の進歩が早すぎて、ついていくのが大変すぎて、ほとんどの人はついていけない。だからこそそこが勝機になる。
JavaScriptの周辺には、様々なライブラリやフレームワークなどが、現れては消えていっています。最近のJSで知っていなければいけなさそうな技術としては、React/Redux/Mobx Vue Babel WebPack Node.js などがあるでしょうか。
JavaScriptは、やっかいすぎる言語で、ブラウザに適当に実装されたんじゃないのかよ!おい?!と思わざるおえないような標準的な機能がいくつも欠けていました。
ゆえに使いこなせる人もすくなかったのですが、それをもっと使いやすくしようとして年々進化していまして、それゆえにブラウザも年々バージョンアップしてます。ブラウザ間の互換性の問題がひどくやっかいな時代もありました(今はおちついたかな)
それ故に、古いJavaScriptと新しいJavaScriptでは、プログラムコードの書き方が大きく違う場面があったり、また、標準機能を補うためのライブラリもどんどん出て、そして、どんどん流行が変わる、という現象がおきています。
数年前(2014-2015年ごろですかね)、grant や gulp などの仕組みが業界の中で流行りました。もう終わりました。これらの技術は、もはや知る必要もありません。
JavaScriptを拡張する、AltJSとよばれる言語がありました。CoffeeScript、あるいは、TypeScript、あるいは、FlowType とよばれるものもあります。まだ使っている人がいるので、怒られるかもしれせんが、CoffeeScriptはもう流行は過ぎ去りました。TypeScriptはまだ人気ですが、あまり期待しません。FlowTypeなどにも、力を振り分けたいとは思いません。いずれは消えゆく技術かもしれません。
つまりは、誰もが使っている、ようでいて、少し飛び抜けて学んでしまえば、ライバルと言える人は少なくなる、状態であったりします。
広く使われている、そして、高度なことに対応できるプログラマがいない。だから、学ぶことができれば、それが価値を生む。
そこが、JavaScriptを学ぶ、大きな、メリットになります。
現在は、JSのライブラリの中でもReactの仕事があふれていて、このReact(そしてRedux)がまた使いこなすのが難しいものなのですが、Reactが使えますよという話をすると、じゃあ、仕事してくれ!という話になるわけです。
また、優れたJavaScriptエンジニア自体が少ないので、「うちのプロジェクトはVue.jsなんだが、Vue.jsを学びながら仕事をしてくれないか?」という美味しい話もいくらでも転がっています。
ITフリーランスとして自分の価値を上げていくためには、このように、JavaScriptという言語を学び自分を成長させていきつつ、その特徴を最大限に利用していくことで、稼げるエンジニアになっていく道がひらけてきます。