【2020年版】プログラミングを勉強する順番を考えてみた

プログラマーである限り、ずっと勉強をし続けなければいけません。
このブログでは、プログラミング初心者が学ぶべき言語はPHPです、や【初心者向け】プログラミングを独学するのに向いている言語は?、といった初心者向けの勉強方法について解説しています。

今回はさらに、初心者を抜け出したジュニアエンジニアレベルの人が次にどのような技術を身につけていけばいいかを考えてみました。
僕自信がジュニアエンジニアレベルなので、これから僕がどんな勉強をしていこうかと考えたことによるものです。

AWS周りのインフラを学ぶ

初心者がPHPを学んだとして、次に必要になる知識はインフラです。
インフラを仕事で直接触る機会はないかもしれませんが、セキュリティの知識はサーバサイドエンジニアであっても必須です。
コードが書けるだけでなく、コードをどのように動かすかまで知っておくためにインフラを勉強しましょう。

勉強するべきインフラのスキルは以下のとおりです。

  • AWS
  • Terraform
  • Docker
  • CircleCI

1つずつ簡単に解説しますね。

AWSはインフラの基本

AWSはジュニアエンジニアで聞いたことのない人はいないでしょう。
ベンチャーに勤めている人なら触ったこともあるかもしれません。

AWSはインフラのほぼすべてを網羅しています。サーバ、データベース、ストレージといった基本的なところは抑えておきましょう。
インフラエンジニアになるなら、VPCをつかったネットワーク設計やLB、監視あたりもできるといいかもしれません。

Terraform

Terraformはインフラをコード化する技術です。
AWSでインフラ環境を構築するには、ブラウザ上でサーバを作成したり、ミドルウェアをインストールする必要がありますが、それだと今のインフラの状態を管理することが難しくなってしまいます。
インフラの情報をコードに残しておいて、コマンドを実行するだけで誰でも同じ環境が作れるのがTerraformの特徴です。

AWSだけできれば仕事はできると思いますが、インフラの保守コストを減らすためにもコードでの管理はできるようになっておくと、モダンなベンチャー企業などでは重宝されるでしょう。

Docker

Dockerはインフラをコンテナ化する技術です。
コンテナというのは名前の通り倉庫みたいなイメージです。作った環境をコンテナに入れておけば、誰にでも同じ環境を届けることができます。
使われ方としては、ローカル環境で作ったインフラをコンテナ化して、全く同じように本番環境でも使うことです。

ローカルと本番を全く同じ環境にするために、Dockerは使われます。

CircleCI

変更したコードを本番環境に反映させるデプロイを自動化してくれるものです。

Githubにプッシュするだけで、CircleCIが動き、デプロイが完了します。その際にテストも動かして失敗したら戻すような動作も入れておくことで、最低限のセキュリティを担保しつつ、デプロイ作業を自動化することができます。

フロント周りを学ぶ

フロントエンドを学ぶなら、React+Reduxがおすすめです。

僕はLaravelと相性が良いVueをちょっと学んだのですが、今からフロントエンドを学ぶならReactをおすすめします。

Reduxというのは、Reactのフレームワークみたいなものです。
なぜReactが良いかというと、求人数が多いことと、React Nativeというアプリ言語にも応用することができるからです。

ReactとVueのどちらかで意見が分かれることが多いので、どちらも試してみて、好きな方を選んでもいいと思います。

サーバサイドの一歩先へ

エンジニアとしての単価を上げていきたいなら、たくさんの言語を扱えるだけではダメで、何か1つの言語を極めておくか、単価の高い言語を学ぶ必要があります。
今、サーバサイドで一番単価の高い言語はGolangです。
機械学習を学んでいるならPythonですが、学習コストを考えるとGolangがおすすめです。

Golangはマイクロサービスといって、小さなサービスを複数作って、それらをつなげる設計にされることが多く、小さなサービスをスケールしていくのに便利なのが、Kubernetesです。
KubernetesとGolangを習得すれば、サーバサイドエンジニアとしての単価は確実に上がります。
ここまでできれば、ジュニアエンジニアを抜け出して、中級エンジニアになれます。

ReactNativeでアプリ開発も手掛ける

先ほどおすすめしたReactを元にした言語です。
アプリ開発というとSwiftとかKotlinみたいなアプリ専用の言語を学ぶ必要がありましたが、React NativeはReactができるエンジニアにとっては習得コストが低いです。
ただ、まだそんなに求人数が多くない技術なので、Reactをマスターしておけば問題ありません。優先度は高くないです。

どうしてもアプリを作りたい人は、Kotlinの方が需要がありそうですね。

まとめ

インフラ、フロント、サーバサイド、アプリをそれぞれ紹介しました。
これらを身につけると、フルスタックエンジニアになることができます。
どれか1つを極めてもいいですし、2つ、3つに絞ってもいいと思います。

2020年はこれらの技術があればとりあえずは生き残っていけるかなと思いますので、みなさんもどの分野のどの知識から勉強していくか考えてみてください。