仕事

プログラマに有利に転職するために何のプログラミング言語を勉強すればいいか?

SIerからウェブ系への転職を目指している人は一定数いると思っています。
そういう方は技術が好きで、できれば「プログラマになりたい」と願っているのではないでしょうか。

さて、プログラマを目指すといっても、世の中には色々な技術があります。

フロントエンド、サーバーサイド、SRE、クラウドネイティブなインフラ構築、機械学習エンジニア、デザイナー…etc

学ぶ対象は無限にあり、普段の業務でエンジニアリングをしていない場合は、自分がどの分野に向いているかもわからないでしょう。

そうすると、QiitaやTwitter、WebDB+PRESSで見つけた「トレンドの技術」に飛びついてしまいがちです。
とりあえず流行ってそうなものに手を出して、結局何も身に付かないパターンですね。

とはいえ、「ウェブの現場感」がないと、何を学べばいいかもわからないはず。
この記事ではそんな学習迷子の方のために、確実に使える「指針」を紹介します。

時間は有限です。Twitterのインフルエンサーやネットの記事に惑わされることなく、地に足をつけた学習をしましょう。

求人から求められている経験を逆算せよ

結論は一言「求人を見ろ」です。
これに尽きます。

たとえば、dodaという転職サイトで求人を探してみましょう。
転職サイトを回っていれば、給与水準の高い会社などがひと目でわかります。

給与水準・残業時間・勤務地などを設定して気になる会社を見つけました。
クリックしてみましょう。

すると、どの会社にも必ず【必須スキル】【歓迎スキル】が書いてあります。
この【必須スキル】【歓迎スキル】をかき集めて、最大公約数的な技術から学んでいきましょう。

上の例だとかなり手広く色々な経験を求められるので「これ!」と決めることはできませんが、学習内容に優先順位をつける手順はシンプルです。

  • 気になる会社を複数ピックアップする
  • 気になる会社の必須スキルをチェックする
  • 気になる会社の歓迎スキルをチェックする
  • 共通項が最も多いスキルから学習する(「必須スキル」を優先すること)

簡単ですね。

求人で「求められているスキル」を眺めてみると、TwitterやQiitaで騒がれる「トレンド」とはややずれていることがわかると思います。

その理由は、「いま伸びている会社は、5〜10年前に設立された会社が多い」からです。

人を雇う余裕がある会社は5年以上前に設立されているわけですね。

なので、令和でトレンドになった技術ですべてができているわけではなく、ちょっと昔の技術が使われているのです。求人を見れば、2010年頃に流行った Rails の需要が大きいのがわかるでしょう。

「枯れた」というと言い方が悪いかもしれませんが、最先端のトレンドよりも「安定した技術」の方が求人上での需要は大きいのです。

そうやって考えると、出てきては消える「最先端」を追いかけ続けるのは「市場価値」的にもコストパフォーマンスが悪いとわかるでしょう。

最先端を学んでも求人が出るのは2、3年後だからです。

たとえば私は2020年に SwiftUI を学びましたが、SwiftUI の求人は全くありませんでした。時代を読み誤りました。

求人を読むのが面倒くさい!という人は、2021年の時点で勉強するなら、

  • Go言語 または Ruby on Rails (API)
  • React または Vue
  • JavaScript / TypeScript
  • Swift
  • Kotlin

といったところでしょう。 Go と React を勉強しておけばとりあえず就職先には困らないと思います。

新しい技術を学ぶなら、技術が世に出てから2年後にしなさい

毎年毎年、色々な技術が登場します。
夜空に輝く夏の花火のように、パッと出てきた技術は眩しく、そして美しく見えるものです。

しかし、一時的にもてはやされた技術が長く使われるとは限りません。
たとえば、著名エンジニアの伊藤直也さんが以前紹介されていたElixirであったり、RubyMotionも、もちろん一部で需要はあるでしょうが、求人条件としては見たことがありません。

CoffeeScriptも昔流行りましたが、今では求人には書かれません。

学習経験は無駄にはなりませんが、どっぷりのめり込むのは技術の「利用」が安定してからでいいでしょう。

著名なエンジニアが注目してる!俺も勉強しよう!と手を出す前に一度冷静になって、

「この技術は何を解決するのか?枯れた技術では実現できないのか?この技術を使って拡大しているサービスはあるのか?」

はよく調べてみましょう。

一つの技術に精通するまでに100時間超の時間は投入するのですから。
幅広く関心を持って技術を学ぶのはものすごく大切なことですが、時間は有限です。

何を学ぶかはしっかり選んでおきましょう。あまり需要のないプログラミング言語を勉強しても報われません。

「教養」は大事ですが、プログラミング言語自体を研究する大学教授になるわけではないので、「プログラミングを勉強してどうやってお金を稼ぐか」は常に意識しましょう。

クラウドソーシングを使って技術を学ぶ

この記事では気になる求人を探して、求人をキーにして技術を学ぶ

「求人駆動開発」

を提案してきました。

それ以外にももう一つ、良い方法があります。
クラウドソーシング駆動の技術学習です。

以下はランサーズで公開されている案件です。

Ruby on Railsだったり、Excel VBAの案件だったりが色々とあるわけです。
こういう案件をこなしていけば、経験も積めて、かつお金ももらえます。

業務で技術がやれないのであれば、こういうクラウドソーシングを使って経験を積めばいいのです。

なぜクラウドソーシングで学ぶのが良いかというと、本を読んで自分で勉強するよりも、誰かにお金をもらいながら、その対価として技術を提供していた方が圧倒的に学びが早いからです。

本を読んで写経するだけでは頭を素通りしてしまって全然身に付きません。

何かを作りましょう。もちろん最初は本を読むのも大切ですが、基礎を学んだらアウトプットです。

一番気軽なアウトプットがクラウドソーシングです。

世の中にどんな技術的な需要があるのか、を掴めたら、個人開発するのもいいでしょう。

お金を稼ぐために頑張ってください。

ちなみにクラウドソーシングの所得は「給与所得」ではなく「事業所得」か「雑所得」扱いになります。
アルバイトなどの「給与所得」であれば雇用先にバレる可能性はかなり高いですが、事業所得や雑所得は確定申告していれば雇用先にバレることは99.9%ありません。

副業と確定申告の関係とは?クラウドソーシングやアルバイトなどケース別に解説

私が考えるエンジニアのスキルアップの理想パターンは、平日は5日間、9時から18時で業務をこなし、
19時から22時でクラウドソーシングの業務をこなします。
土日は9時から23時まで個人開発をして、ストック型の資産を作っていきます。

それを3年続ければ、おそらくはエンジニアとしてはどこでもやっていける自信がつくのではないでしょうか。
英語やコンピューターサイエンスの勉強もどこかで入れなければいけませんが。

まぁ、9時-18時の業務なんてSIerにいる限りは不可能な人がほとんどだと思うので、結局は業務終了後に勉強(インプット)、土日で個人開発かクラウドソーシングに取り組むことになるような気がします。