注意:この記事の根拠は何もなく、主観的100%で書かれてます。 全ての文章に「私の偏見によると」をつけてお読みください。🙇
🧑💼 エンジニアのキャリアパスについての偏見
🏁 ゴール
エンジニアのキャリアパスについての客観的な記事は既に存在しますが、主観的な記事を作成することで新米エンジニアに寄り添った記事が書けるのではと思い至りました。 この記事は、エンジニアのキャリアパスを見つけるためのヒントを主観敵に提供する試みです。
どんなキャリアパスを辿るべきか?
エンジニアは二つの道があると思います。ユーザーに近いエンジニア、サーバーに近いエンジニアのどちらかです。
📱 ユーザーに近いエンジニア
ユーザーに近いエンジニアとは「画面」を作るエンジニアのことです。
「画面」というと業務範囲が狭いように見えますが、ユーザーが絡む全てのサービスに必ず登場します。 (コマンドラインインターフェースでない限り、ユーザーが直接バックエンドサービスを操作することは考えづらいですね。)
一部のエンジニアは「サーバー側の方が偉い、できることが多い」と思いがちですが、アルゴリズムを考える力はユーザーに近いエンジニアの方があると思いますし、 ユーザーフレンドリーな画面を作るためにはUIUXの知識が必要不可欠で、サーバーに近いエンジニアはそれがかけていることが多いと思います。
職種範囲
ユーザに近いエンジニアの仕事の集合には以下が含まれます。
- ユーザー体験をデザインする
- ウェブサイトを作る
- アプリの画面を作る
- ゲームの画面を作る
- ↑のために、ユーザーと会話する
使用技術
- HTML, CSS, Javascript
- Swift, Kotlin
- C#
- WebAssembly
到達点
これもちょうド偏見ですが、ユーザーに近いエンジニアの最終到達点はゲームエンジニアだと思います。
これは具体的なサービスを想像すればわかりやすいと思いますが、FacebookやTwitterは技術的には何とかなりそうな気がします。 しかし、「Apex Lgends」や「PUBG」など、FPSを実装するコードをあなたは書けるでしょうか? もしくはもっとシンプルに、将棋やオセロやチェスなどを0ベースで実装することはできますか? このような、ゲームの動作やルール、プレイヤーの操作などゲームプレイそのものを実装するのは、ゲームエンジンと呼ばれます。 ゲームエンジンを作るためには、アルゴリズムを創り出す必要があり、サーバーサイドよりも地頭/才能が必要とされそうです。
- グラフィックスプログラミング
3D、2Dの画面と、カメラワークの計算のために数学が必要不可欠ですね。
キャラクターや物体の挙動が現実世界に即したものになるためには、物理シミレーションを導入することが必要です。 物理エンジンの使用も数学/物理の知識が必要そうですね。
- AIプログラミング
NPCや敵キャラクターの動きが弱ければゲームの体験に大きな影響が出ます。 ゲームプログラミングならではのAI学習も必要そうです。
- UIUX
ボタン配置やチュートリアルの作成など、複雑なインターフェースであるほど優れたユーザー体験が求められます。 ニンテンドーのSwitchのコントローラーへの振動や、Apex、Valorantのチュートリアルなど、わかりやすさのための工夫が必要です。
他の方の意見
Webのフロントもそれは凄いスキルだと思います。HTMLフラットファイルの文字の洪水とプログラミングを合体させる集中力は年寄りにはできません。また新技術の主流もころころ変わるは出てくるわ、フレームワークもフロント用プログラミング言語も百花繚乱、それを捉えて身に着けつつ仕事を全うするのはえらい大変な事です。
サーバーに近いエンジニア
サーバーに近いエンジニアの仕事の範囲には以下が含まれます。
到達点
こちらもちょうど偏見ですが、サーバーサイドのエンジニアの最終到達点はセキュリティエンジニアだと思います。
page:https://minegishirei.hatenablog.com/entry/2024/09/09/182833