Xで下記のツイートが流れてきました。
バックエンドエンジニアの方は以下のスキルはありますでしょうか?
- バージョン管理
- HTTPSへの理解
- Web APIの知識
- プログラミング言語
- データベース
- キャッシュ戦略
- サーバに関する知識とデプロイメント
必要なスキルの説明
サーバーサイドエンジニアに必要なスキルとして挙げられている項目について、詳細な説明を加えてみます。
1. バージョン管理 (gitなど)
- 概要: ソースコードのバージョン管理システムを使用して、コードの変更履歴を管理し、チームでの共同作業を円滑に進めるためのスキル
- 具体例: Gitを使用してコードのリポジトリを管理し、ブランチを切って新機能を開発し、プルリクエストを通じてコードをレビューする
2. HTTPSへの理解
- 概要: HTTPSはHTTPのセキュリティ拡張であり、データの暗号化と認証を提供する
- 具体例: SSL/TLS証明書の設定、HTTPS通信を行うためのサーバー設定、セキュリティのベストプラクティスの理解
3. Web APIの知識
- 概要: 他のサービスと連携するためのインターフェースであるWeb APIの設計、開発、使用に関する知識
- 具体例: RESTful APIやGraphQLの設計、JSONやXMLのデータフォーマットの理解、APIのバージョニングや認証方法(例: OAuth)の実装
4. プログラミング言語
- 概要: サーバーサイドのロジックを実装するためのプログラミング言語に精通する
- 具体例: Python, Java, Ruby, JavaScript (Node.js), Goなどの言語でのコーディングスキル
5. データベース
- 概要: データの保存、管理、取得を効率的に行うためのデータベースに関する知識
- 具体例: SQL(MySQL, PostgreSQL)やNoSQL(MongoDB, DynamoDB)の使用方法、クエリの最適化、インデックスの設計
6. キャッシュ戦略
- 概要: データアクセスのパフォーマンスを向上させるためのキャッシュの利用方法に関する知識
- 具体例: RedisやMemcachedの利用、キャッシュの無効化ポリシー、キャッシュヒット率の最適化
7. サーバに関する知識とデプロイメント
- 概要: サーバの設定、管理、およびアプリケーションのデプロイメントに関するスキル。
- 具体例: Linuxサーバの管理、DockerやKubernetesを用いたコンテナ化とオーケストレーション、CI/CDツール(Jenkins, GitHub Actions)の利用
「使えるよ!」という観点では
バージョン管理、プログラミング言語、データベースはあると思います。
基本情報レベルであれば、
HTTPSへの理解、Web APIの知識などがある方がいらっしゃると思います。
HTTPS、キャッシュに関しては
転職活動で、面接の時に聞かれることがあると思います。
いくつか質問をネットから拾いましたので、ご自身で各分野の理解ができているか確認してみてください。
問題
HTTPS
HTTPSとは何ですか?その基本的な役割を説明してください。
SSL/TLS証明書の役割を説明し、その種類についてもいくつか例を挙げてください。
HTTPSとHTTPの違いを技術的に説明してください。
HTTPS通信を確立する際のハンドシェイクプロセスを簡潔に説明してください。
HTTPSで使用される主要な暗号化技術を2つ挙げて、それぞれの概要を説明してください。
SSL/TLS証明書をサーバーにインストールする手順を簡単に説明してください。
SSLストリッピング攻撃とは何ですか?その対策方法についても説明してください。
HSTS (HTTP Strict Transport Security) とは何ですか?その利点を説明してください。
おわりに
今回は@Nameless_SN さんのポストをもとにWeb開発のロードマップについてのお話でした。
ツイート主さんはzenに記事を投稿されているようです。