おれのバックエンドエンジニアのロードマップ(2020版)
概要
バックエンドエンジニアのロードマップ(2020)の日本語翻訳してくださった、木之村さんのTweetを発見し、現時点の自分のスキルと差分とのまとめました🙋♂️
対象読者
・バックエンドエンジニアに必要なスキルを知りたい人
・何を勉強すればいいかわからない人
・筆者がどれだけ適当に勉強してたかを知りたい人
背景
業務で培ってきた技術や知識をロードマップと照らし合わせてみた結果、
結構スカスカな状態ということがわかりました😅
今の自分には何が足りないのかをあぶり出し、
何を重点的に学ぶかの足がかりにしたいと思い、まとめた次第です。
ロードマップ(これだけ読めばOK)
・青色で塗りつぶしているのが一応やったことある・知っているやつ
・紫チェックが、必須事項
・緑チェックは、紫の代わりになる。紫が埋まって入れば無理してやらない
・グレーチェック、後回しでOK
黄色のメイントピック
🔮インターネット
インターネットの基本的な仕組みからwebブラウザの仕組み、DNSの仕組みなど、どうやってインターネットの世界が構築されているのか
🔮基本的なフロントエンドの知識
HTML、CSS、JavaScriptの知識。ほとんどの駆け出しエンジニアはここからスタート。逆にほとんどの駆け出しエンジニアがここで挫折する。
🔮OSの基本的な知識
OSの基本的な仕組み、役割、メモリ管理、プロセス間通信、ネットワーク構成など、プログラミングとは違ったPC寄りの知識
プログラミング言語を学ぶ。言語の特徴を知る
Java、C#、PHP、Rust、Go、JavaScript、Rubyなどのプログラミング言語。HTML、CSSを学んだ後に学ぶことが多い
バージョン管理システム
Gitの基本的な使い方や知識。チーム開発では必須の知識。
ホスティングサービスGitHubアカウントを使って使い方を学ぶ
GithubやGitlab、Bitbucketのサービスを使って、ソースコードを管理する。
リレーショナルデータベース
PostgreSQL、MySQLなどのデータベースの知識
NoSQLデータベース
MongoDBなどのデータベースの知識
データベースをより詳しく
ORM、ACID特性、トランザクション、N+1問題、正規化、インデックスなど
APIについて学ぶ
REST、JSon APIs、SOAP、Authenticationなどの知識
キャッシュ
CDN、サーバサイド(Redis)、クライアントサイド
webのセキュリティ
MD5がなぜ使われていないか、HTTPS、CORS、SSL/TLSなど
テスト
ユニットテスト、結合テスト、機能テスト
🔮CI/CD
要確認
デザインと開発の原理
DRY、YAGNI、KISS、SOLIDの原則など
アーキテクチャパターン
モノシリックAPP、マイクロサービス、サービス思考アーキテクチャ、サーバレス
検索エンジン
Elasticsearch、Soler
メッセージブローカー(一旦飛ばしていいかも)
RabbitMQ
コンテナリゼーション vs 仮想化
Docker、rkt、LXC
GraphQL(一旦飛ばしていいかも)
Apollo、Relay Modem
Graphデータベース(一旦飛ばしていいかも)
Neo4j
webSoket(一旦飛ばしていいかも)
要確認
WEBサーバー
Nginx、Apache、Goddy
🔮プロダクトを拡大させる
ミティゲーション戦略、マイグレーション戦略、水平拡大 vs 垂直拡大、観測可能な開発
学び続ける
技術は日々進化し続ける。常に学び続けましょう!
筆者分析
・特にインターネット、OSの基礎知識が不足
・WEBセキュリティの全般的な知識が不足
・テストに関する知識が不足
・ロードマップの下の方は完全に不足
これらの丸っと知識が不足しているところは、
参考書などでしっかり補う必要がある。
ロードマップの下の方も同様だが、優先順位は落とす。
感想
これらを全部埋めないエンジニアはダメだ!ということはありません。
正直、全てを埋めなくても、バックエンドエンジニアとして働くことはできます😅(たくさん埋まってる人どれだけいるんだろう)
ただし、優秀なエンジニアは必ずこれらのロードマップをしっかり埋めてきてるはずです。
次にどんな勉強すればいいのかわからない方は、
参考にしていただければと思います!
参考文献
・Backend Developer:(https://roadmap.sh/backend)
・https://twitter.com/TetsuKinomura
この記事が気に入ったらサポートをしてみませんか?