初心者からエンジニアになるには?

未経験から中級者になれるバックエンドエンジニアのロードマップ

バックエンドエンジニアになりたい!

未経験からバックエンドエンジニアまでの学習ロードマップを教えてほしい。

 

という方向けの記事になります!  

 

記事執筆者:オザック

 バックエンドエンジニア歴9年以上、年収1000万のエンジニア、オザックです!

某有名R社に勤めていた過去があり、副業を含めて関わってきたプロジェクトは20以上。

書ける言語はGo、PHP、Python、TypeScript、JavaScript、C++などで、

AWS SAAも持っていてインフラもやっています。

 

 

今回は10年程度の現役バックエンドエンジニアとして、

これまでの学習ロードマップから 未経験からどのように成長していくのが最善なのかを紹介していきます。  

 

この記事を読むと

「バックエンドエンジニアでどういう学習をすればよいのかわからない」

という状態から

「バックエンドエンジニアまでの道筋が見える」

という状態になります。

 

未経験者や駆け出しエンジニアでバックエンドを志している方は是非最後まで読んでいってください!(2~3分程度で終わります)  

 

目次

【結論】バックエンドエンジニアの学習ロードマップ

学習ロードマップ

  • 未経験者はまず学びやすいプログラミング言語を選ぶ
  • その言語についてUdemy講座などで独学で勉強する or メンターを見つける
  • その後企業に就職して実務で技術力を磨く
  • バックエンドは知識の幅が広いので、続いてWeb開発における様々な領域を吸収していく(DBやクラス設計、Webの仕組み、API、セキュリティ、インフラなど)
  • インフラも出来るとテックリードも出来るようになっていく

 

バックエンドは知識の幅が広いです。

まずは比較的学びやすいプログラミング言語から学び、徐々にスキルの幅を広げていくのが挫折しないコツです!

 

これから順番に説明していくので、バックエンドエンジニアになりたいと思っている方は読むことをおすすめします!

 

タイプ別の勉強方法を早く知りたい方はこちら

 

バックエンドエンジニアで副業をしたい方はこちら

バックエンドエンジニアで副業で稼ぐ方法

 

バックエンドエンジニアとは?

オザック
ではまずタイプ別の学習ロードマップの前にバックエンドの業務について9年以上の経験から説明していきます。

 

バックエンドエンジニアの業務

バックエンドというとバックエンドのプログラミング言語でWeb開発をすると思っている方も多いと思いますが、他にも様々な業務があります。

 

バックエンドの業務

  • API開発
  • フロントエンドとのつなぎ込み(場合によってはフロントエンドが担当する)
  • データベースの作成・保守・運用
  • デプロイのための自動化
  • (プロジェクトによっては)サーバ管理

などになります。

(細かい部分は省略しています)

 

なのでただプログラミングで実装をするだけではないです!

 

業務内容に関してはこちらの記事が詳しくです

エンジニアの業務をわかりやすく解説

 

バックエンドエンジニアに必要な知識

ではこれらの業務をこなすのにバックエンドエンジニアに必要な知識は何なの?

という疑問に答えていきます。

 

ズバリ

バックエンドエンジニアに必要なスキル

バックエンドエンジニア必要なロードマップ

 

もはや多すぎてよくわからないですね。。。

 

大きく分けると

バックエンドの知識要素

  • インターネットの知識
  • OS関連の知識
  • Gitやコードホスティングサービスの知識
  • API、プログラミング言語の知識
  • キャッシュやWebセキュリティの知識
  • データベースの知識
  • Webサーバやキャッシュなどインフラ面の知識
  • プログラミングのアーキテクチャの知識
  • CI/CDの知識

が必要だと言っています。

 

インターネットの知識

インターネットの知識とは

  • HTTPプロトコルとは?
  • DNSって何?
  • ドメインって何?
  • ブラウザってどうやって動いてるの?
  • 色々なサイトが表示される仕組みは?

などになります。

 

これらはWebの基本的な内容になるので、未経験者でもググって勉強しておくと良いです!

 

OS関連の知識

OS関連の知識は

  • どうやってプログラムは動いているの?
  • CPUってどうやって割り当てられるの?
  • メモリ管理ってどうやってOSはやってるの?
  • I/Oとは?

などの内容になります。

 

これらはコンピュータサイエンスの知識になります。

未経験者はプログラミングを学んで、ある程度Web開発ができるようになった後に知識として学んでいくという順番で大丈夫です!

 

Gitやコードホスティングサービスの知識

Gitとはコードをバージョニングするためのソフトウェアです。

 

Git管理したコードをコードを管理するホスティングサービスにアップロードすることで様々なメリットがあります。

ホスティングサービスで有名なのにGitHubなどがあります。

 

Gitはバックエンド関係なくソフトウェアエンジニアであれば必ず必須の知識になります。

初心者でも必ず使うので勉強しましょう!

 

API、プログラミング言語の知識

APIとは?

APIとはApplicationProgramingInterface(アプリケーションプログラミングインターフェース)の略で、

アプリにアクセスするための入り口となるプログラムのことです。

例えばバックエンドAPIとはバックエンドのアプリにアクセスするためのプログラムということになります。

 

またプログラミング言語とは

  • Go
  • PHP
  • Ruby

など言語ごとに様々な特徴を持ったプログラムを開発するための言語です。

 

APIはこのプログラミング言語を駆使して開発するため、APIの知識やプログラミング言語の知識は必須となります。

 

またAPIを開発するに当たり

などの知識も必要になってきます。

 

Web開発ではAPIの知識は必須なので、プログラミングと一緒に学んでいきましょう!

 

キャッシュやWebセキュリティの知識

キャッシュとはユーザに早く画面を表示するために、一度取得したデータを保存しておき、ユーザが次にアクセスしたときに素早く表示できるようにする方法です。

 

キャッシュサーバの仕組み

キャッシュサーバの仕組み

 

キャッシュには

  • ブラウザキャッシュ
  • NoSQLで高速にDBアクセスをするキャッシュ

などいくつか種類があります。

 

初心者の場合は必須の知識ではないですが仕組みは知っておくとよくです。

 

データベースの知識

データベースはユーザの情報や、Webサービスで使う情報などを保存しておくサーバになります。

 

データベースは殆どのWebサービスやアプリで使うので必須の知識です!

 

Webサーバなどインフラ面の知識

WebサーバとはWebページを表示するためにブラウザにデータを渡すサーバになります。

ブラウザでWebページが見れる仕組み

Webページが表示される仕組みとWenサーバの関係

 

そのWebサーバを構築・保守・運用したりするための知識は必要です。

参考

ただ大きい会社だとインフラエンジニアが担う領域でもあります。

 

プログラミングのアーキテクチャの知識

プログラミングというのは開発して終わりではなく、

 

多くのWebサービスは継続的に新規機能やバグ修正などを繰り返してサービスが大きくなっていくため、

 

開発したコードの保守性を上げるというのが重要になってきます。

 

その保守性を保つためにアーキテクチャというのを考え開発していく必要があります。

 

こちらは必須と言うわけではなく、知識があるとテックリードなどエンジニアとして立場が上の人になれます。

 

CI/CDの知識

開発した新機能などをリリースするときにWebサーバへコードをアップロードをする必要があります。

 

そのアップロードを自動化すると効率が良いので、殆どのプロジェクトではアップロードのフローは自動化されています。

 

その自動化することをCI/CD(Continuous Integration/Continuous Delivery)といい、日本語では継続的インテグレーション/継続的デリバリーと言われます。

 

多くの場合、CI/CDの構築をバックエンドエンジニアが行い、

有名なCI/CDにはCircleCIGitHub Actionsなどがあります。

 

フロントエンド、バックエンド、インフラの違い

今バックエンド知識について説明していて、

そもそもフロントエンドとバックエンドとインフラの違いは何?

 

と思っている方もいると思うので、ここで簡単に説明しておきます。

 

フロントエンド ユーザが直接見える、触る部分の開発をする業務
バックエンド ユーザの情報やWebアプリのデータなどを保存したり、フロントに渡したりする業務
インフラ Webページが閲覧されたときにデータを返すWebサーバというサーバを管理する業務

です。

詳しくはこちらの記事も参考になります

フロントエンドとバックエンドの違いは?業務内容から将来性まで解説

 

バックエンドエンジニアはインフラも出来ないといけない?

またバックエンドの必要な知識を説明していて

バックエンドエンジニアはインフラも出来ないといけないのか?

と思った方もいると思ったので、ここで説明します。

 

オザック
バックエンドエンジニアは必ずしもインフラの知識が必要と言うわけではないです

 

但しバックエンドエンジニアは多くの場合インフラと接する事が業務で多いです。

(知らないと出来ない業務も多々あります)

 

なのでインフラの知識を身に着けておいたほうが圧倒的に良いですし年収も勿論上がります。

またテックリードやシニアエンジニアレベルになるには、まずインフラの知識がないとなることは難しいでしょう。

 

初心者のうちは良いですが、エンジニア歴を積み重ねていくごとにインフラの知識も徐々に身につけていくことをおすすめします!

 

【タイプ別】バックエンドエンジニアの学習ロードマップ

ではここでタイプ別にバックエンドエンジニアの学習ロードマップについて説明します!

 

バックエンドエンジニアのタイプについて

スキルごとにエンジニアを区分する方針にしました。

クラス区分 内容
ビギナークラス 未経験からプログラミングスクールで勉強した人
  • for文、if文、classや関数の使い方はわかる
  • フレームワーク(FW)の基本的な機能は一度以上使っていて、使い方は調べながら使える
  • 特定の言語/FWの環境構築が出来る
  • TODOアプリのような簡単なWebアプリをゼロから調べながら作ることが出来る
ジュニアクラス エンジニア歴1~3年程度相当
  • ECサイトやSNSなど自分でゼロからFWを駆使して作ることが出来る
  • TODOアプリのような簡単なWebアプリなら2~3日程度で作成可能
  • エラーは基本的に自己解決出来る
シニアクラス エンジニア歴6年以上相当
  • コードを保守運用しやすいようにある程度クラス設計が出来る
  • 非機能要件を意識した実装ができる
  • 基本的なRDBのスキーマ設計が出来る
  • 1つの領域(フロントやバックなど)だけでなく2つ以上可能
  • エラーは殆どの場合自己解決出来る
テックリード チームリーダー相当
  • 開発手法やチームビルディングができる
  • 非機能要件をシニアクラス以上に意識した実装、設計ができる
  • インフラ面にも高度に精通している
  • 全体的なアーキテクチャを設計、構築できる

Webエンジニア独学学習ロードマップ公開参照

 

これを元に今回は未経験者の方、ビギナークラスとシニアクラスのエンジニアについてのロードマップを紹介します。

 

未経験からビギナーエンジニアクラスになるための勉強ロードマップ

まずは初心者でも学びやすいプログラミング言語を一つ選び、学んでいきましょう。

参考

プログラミング言語一つ出来ると、自然と他の言語でも記法や仕様が違うだけで格段に学びやすくなります。

 

初心者におすすめの言語は

がおすすめです!

 

オザック
僕自身もPHPから始めています

 

おすすめの理由

  • 日本の企業で多く使われている
  • 日本人で使っている人が多いため日本語のドキュメントが多く、エラー解決に詰まりづらい
  • 動的型付け言語なので書きやすい

といった点です。

 

PHPのおすすめ理由に関しては詳しくはこちらの記事が参考になります

PHPは学習コストが高いのか?低い理由を紹介

 

なのでまずはPHPかRubyのどちらかを決めて勉強してきましょう!

 

未経験者でPHP、Ruby、Pythonの詳しい勉強方法はこちらの記事がとても参考になります

【最短1ヶ月】バックエンドエンジニアおすすめスクールと独学勉強法を現役が解説

 

ビギナーエンジニアクラス(未経験から初心者になるまで)の勉強ロードマップ

まずビギナークラスは「未経験からプログラミングスクールで勉強した人」です。

 

スキル的には

  • for、if文、classや関数が作成できる
  • フレームワーク(RubyOnRailsなど)は一度使っていて、簡単なプロダクトを作ったことがある(独学でもOK)

というレベルです。

 

これらの人はまず更にレベルを上げたい場合は就職して企業に入ることを目指すのが良いです!

 

企業に就職する利点

  • 他のエンジニアからコードレビューでコードの保守性を考えた実装を学べること
  • 個人で作るよりも企業で開発しているサービスの方がユーザ数が多いので、開発で学べる事が多い
  • チーム開発を学べる(Gitや開発フローなど)

 

また同時に次はクラス設計と、API開発についてを学んでいくと良いです!

 

API開発の基礎知識がちゃんと理解できているか?

プログラミングスクールや独学どちらでも良いですが、API開発の基礎知識がないと最低限のバックエンド開発は難しいです。

  • HTTPとは?
  • Cookieとは?どういう時に使う?
  • 認証で使われるフローのOAuth2.0とは?
  • CORSってなに?
  • for, if文は書けて、class, 関数は作れるか?
  • フレームワークは使えるか?(一つのフレームワークだけで問題ない)
  • MVCってなに?

という部分をちゃんと人に説明できるように、実装できるように学びましょう。

 

勉強する場合はこちらの動画で勉強するのが良いです!

3600円と比較的安く評価もかなり高いです!

Web開発の基礎がわかるUdemy講座

30日間ほぼ100%返金保証

 

API開発を理解した次のステップはクラス設計を学ぶ

上記のAPI開発の知識はわかりますという方は次にクラス設計を学び保守性を担保するコードを書けるように勉強していくと良いです!

 

クラス設計がわかると

  • 保守性の高いコードが書けるようになる
  • コードレビューで指摘が減る
  • プロジェクトのコードの全体のアーキテクチャが理解できるようになる

という利点があります。

 

クラス設計についてはこの本で設計の基礎を学ぶのが良いです

 

おすすめポイントは

  • テストしやすいコードが書ける
  • オブジェクト指向プログラミングが身につく

という点です。

 

オザック
実際僕自身も2年目くらいの時にこの本で設計を学びました!

 

クラス設計の勉強は難しい?独学で出来ない場合はメンターをつけると安価で学べる

クラス設計というのはなかなか簡単に学べるものではありません。

 

というのも概念的な内容を理解し、それを具体的な実装に落とし込めるようにするという2段階の勉強が必要なため、

また必ず正解があるというわけではないため、実践を通して徐々にクラス設計の知識が深まっていくからです。

 

オザック
僕もクラス設計を中心にMENTAで教えているので興味があれば見てみて、もし学びたいと思ったらMENTAで連絡してください!

 

 

今までの受講生にはクラス設計以外にも

  • データベース設計
  • Dockerの運用、Dockerfileの書き方
  • インフラのIaC化(Terraform)

なども合わせて教えていて、

僕が知っている知識であれば柔軟に教えています。

 

ジュニアエンジニアクラス(エンジニア歴2〜3年程度)の勉強ロードマップ

ジュニアクラスはある程度実装に慣れて、既存のコード改修や小さな新規機能の追加は一人でも出来るようになっているはずです。

 

次に勉強することとしてはクラス設計、データベースやインフラ(クラウド)を勉強していくと良いです。

 

クラス設計は先程のビギナークラスでも紹介しました、こちらの本で学ぶと良いです!

 

 

データベースはスキーマ設計を学ぶと良い

バックエンド開発をしているとデータベースを変更やテーブルを新規作成するのは頻繁に起こります。

 

なのでジュニアクラスのエンジニアは何度もデータベースを触ったことあると思いますが、

ちゃんとしたスキーマ(テーブル)設計を学んでいる人は少ないと思います。

 

今後更にシニアクラス、テックリードなどを目指そうとするとスキーマ設計は必須になります。

 

ここで一度学んでおくことをおすすめします!

 




オザック
スキーマ設計を学ぶならまず間違いなくこの本がおすすめです!

 

僕自身もこれでスキーマ設計を学びましたが、名著なのでまずはこの本で学ぶことをおすすめします!

 

また合わせてPostgresというRDBで有名なsoudaiさんの


 

こちらの本も勉強すると良いです!

 

関連記事

僕がおすすめする技術書10冊

 

インフラ(クラウド)はAWSを学ぼう

またジュニアクラスは次のステップとしてインフラ面を学んでいくと良いです!

 

今まではよくわからなかった

  • Docker
  • デプロイの方法(CI/CD)
  • インフラ構築
  • ログやアラートの通知

などがわかるようになり、更にキャリアの幅が一層広がっていきます。

 

特にクラウドを学ぶなら一番使われていて、且つクラウドの中では使い方が一番わかり易いAWSを学ぶことをおすすめします!

 

AWSを学ぶなら手っ取り早いのがAWS SAAの資格の勉強をすることです。

資格と言ってもAWS SAAの問題はより実践的な問題になるので、資格の勉強は実際のプロジェクト現場で活きてきます。

 

AWS SAAの勉強方法はこちらの記事がとても参考になります

1ヶ月合格!AWS SAAの勉強方法や勉強時間を解説【動画でOK】

 

ジュニアクラスはフリーランスエンジニアという道もある

ジュニアクラスのエンジニアは昨今フリーランスになるケースも増えています。

フリーランスのメリットは

  • 給与が増える
  • 自分の好きな開発体制(言語や会社の規模)を選びやすい
  • 自由時間が増え、自由に勉強できる

というのがあります。

 

もちろんデメリットもあるので詳しくはこちらを参考にすると良いです。

20代でフリーランスエンジニアになるメリット・デメリットと年収

 

副業をすると格段にスキルアップにつながるからおすすめ

オザック
フリーランスはいきなりは怖いと思うのと、まだジュニアクラスの場合はそこまでおすすめしません

 

なのでジュニアクラスは副業をすると良いです!

 

副業はとてもスキルアップに繋がり、僕自身も20以上のプロジェクトで副業をしたことがあります。

 

副業のメリットは

  • 本業では触れないツールを使える経験ができる
  • 他の会社のコードに触れることで勉強できる
  • また別の会社のエンジニアにコードレビューがもらえる
  • スタートアップの副業は0->1の経験が出来て楽しいし、学びになる

です。

 

副業はエージェントを経由すると安全で簡単に見つかるので、詳しくはこちらを参考にしてください

なぜITプロパートナーズの副業は良いか?評判も解説【週1/土日案件】

 

未経験はバックエンドエンジニアとフロントエンドエンジニアどっちが良い?

結論から言うとどちらでも良いです!

 

ユーザが触る画面作りが好きな場合はフロントエンドをやればよいし、

裏側知りたいなと思う方はバックエンドをやると良いです!

 

ただバックエンドは未経験者の場合はイメージできない場合が多いともうので敬遠されがちですが、

テックリードやCTOなど重役ポジションは殆どの場合バックエンドの方が担います。

 

なのでそういったメリット・デメリットを考慮した上で決断すると良いです。

 

詳しくはこちらの記事を参考にすると良いです!

フロントエンドとバックエンドの違いは?選択すべきはどっち?

 

インフラも出来るとバックエンドエンジニアとして幅が広がりテックリードが出来る

キャリアの特徴としてはバックエンドは立場上、テックリードやCTOになるケースが多いです。

 

理由としてはサービスのボトルネックとなるインフラ障害が起きても対応出来たり、全体のシステムのことを知っている人というとバックエンドになるからです。

フロントエンドとバックエンドの違いは?選択すべきはどっち?参照

 

ここにある通り、バックエンドはプロダクトの根幹を担う業務になってくるため、自然と重役のポジションはバックエンドが担うケースが大半です。

 

なのでそういったポジションを目指したい人はバックエンドを学び、且つインフラも学ぶことをおすすめします!

 

インフラはまずはAWSを学んで、クラウドでの構築方法を勉強しましょう!

AWS SAAの資格を勉強することで実践的なAWSの知識を学べる

 

バックエンドエンジニアで副業をしたい方はこちら

バックエンドエンジニアで副業で稼ぐ方法

バックエンドエンジニアの学習ロードマップまとめ

学習ロードマップまとめ

  • 未経験者はまず学びやすいプログラミング言語を選ぶ
  • その言語についてUdemy講座などで独学で勉強する
  • その後企業に就職して実務で技術力を磨く
  • バックエンドは知識の幅が広いので、Web開発における様々な領域を吸収していく(DBやクラス設計、Webの仕組み、API、セキュリティ、インフラなど)
  • インフラも出来るとテックリードも出来るようになっていく

 

今後エンジニアの需要はどんどん増えていくので、今エンジニアになるのは良い判断だと思います!

 

早くエンジニアとしての最初の一歩を歩き始めましょう!

 

【最短1ヶ月】バックエンドエンジニアおすすめスクールと独学勉強法を現役が解説

-初心者からエンジニアになるには?

© 2022 プログラミング×エンジニア副業道場 Powered by AFFINGER5