記事投稿の背景
rubyを独学で勉強している最中、とても参考になるエンジニアの学習ロードマップを発見しました(有名なものらしい)。知識整理のためアウトプットさせていただきます!
元ネタは下記リンクです。
https://github.com/kamranahmedse/developer-roadmap
#フロントエンド、バックエンド問わず必要になる分野
- Git
- Linuxコマンドなどの基本的なターミナル操作
- データ構造、アルゴリズム
- GitHub
- Semantic Versioning (バージョン番号のつけ方のルールのこと)
- SSH
- HTTP/HTTPS、API
等々。やはりGitHubを使ったバージョン管理は必須スキル、ということですね。そのほかだとデータ構造とアルゴリズム(スタック、キューとか)の勉強は必要になるよう。
バックエンドエンジニアの学習ロードマップ
- まずは言語の選択
- スクリプト言語なのかコンパイラ言語なのか、またその中のどの言語を学習するかを最初に決定。基本的にはどの言語を選択しても学習の流れに大きな違いはない。
- コマンドベースで簡単なアプリケーション作成
- 選択した言語の実行環境を整え、HelloWorldの表示程度の、簡単なプログラムを組んで慣れていく。
- パッケージマネージャーについて学習
- rubyであればgem。javascriptならNode.jsのように、言語毎にパッケージマネージャーが存在。その基本的な使用方法を学習する。
- その言語におけるベストプラクティスは何かを調べる
- 例えばPHPであればPHP-FIGとPSRsをnode.jsとともに使用するケースが多い。このように、学習している言語の一般的な使用方法を整理しておく。
- いくつかアプリを作って公開する
- 簡単なアプリケーションを作成、Githubなどで公開してみる。
- テストの仕方(単体、結合)を学習
- その言語における単体テスト、結合テストの実施方法を調べる。
- テスト(単体、結合)を計画し、実施
- 実際に、作成したアプリケーションに対して単体テスト、結合テストを実施する。
- RDBについて学習する
- RDB(リレーショナルデータベース)について学習。RDBを使用したアプリケーションを作成する。
- 作成したアプリを運用してみる
- 作成したアプリケーションを一般公開してみる。例えば、CRUD機能(ユーザー登録や、削除、ブログ等の投稿機能など)を持ったアプリケーションのようなもの。
- フレームワークを学習する
- その言語における、よく使われるフレームワークを学習。
- これまでに作成したアプリを、フレームワークを用いて再度開発
- 一度作成したアプリケーションを、フレームワークに沿って再度作成してみる
- NoSQLを学習
- NoSQLについても学習し、RDBとの違いを整理してみる。
- キャッシュ(メモリキャッシュ、ブラウザキャッシュ両方)を意識した実装を学習
- ワンランク上の実装を身に着けるため、キャッシュを意識した実装方法を学習。
- REST APIを使用してアプリを作成
- プログラムの中にAPI連携を含むようなアプリケーションを作成
さらに学習するなら
さらにweb関連の知識をつけるために、実装を進める中で疑問に思った点は都度調べていくことがよい。例えば下記のようなことは調べると吉。
- 認証 ( Authentication )と承認 ( Authorization )の違いを学習
- Message brokerについて学習
- サーチエンジンについて学習
- Dockerの使い方を学習
- Webサーバーについて学習
- Webソケットの使い方を学習
- GraphQLを学習
- GraphDBを調べる