🏄‍♂️

フロントエンドエンジニアのキャリア戦略

2022/08/10に公開約7,700字2件のコメント

この記事は?

フロントエンド領域が複雑性を増してきており、経営効率化の戦略として部門としてフロント、バック、インフラで完全分業の体制を取る会社が増えてきました。それに伴い、完全未経験からフロントエンドエンジニアになる人たちも増えてきましたが、単にフロントの現場で開発をしているだけではエンジニアリング全般を含む広範な基礎は身につきにくく、能動的に全領域を勉強していく必要があります。その上で、フロントエンドに強みを持つエンジニアとしてバリューを発揮していくには、具体的にどのようなキャリア戦略があるのか?この記事では考えていきます。

著者は?

AWS環境でのフロントエンド開発中心に、エンジニア3年目。新卒2年間は自社サービス系の大企業でフロントエンドを担当。教育ではなく「崖に落とされて自力で登る」。裁量を得るには、先輩方を技術力で倒してロールをもぎ得る、といった競争主義が根付く徹底したハードボイルド・ドリブンの社風で新卒からエンジニアとしてのマインドを植え付けられた。TS、React、Vueを中心に全体的に見つつバックとインフラ、マネジメントを塩梅よく習得しようともがいているエンジニア。フロントエンジニアがフロントの上位ロールを狙っていくには能動的な学習と行動を前提として、フロント技術だけでなく全領域の幅広い知識(+経験)と、専門領域以外についても自分からロールを掴んでいく交渉能力や、健全な組織運営を重視したマネジメント能力が必要だと考えています。

なぜキャリア戦略が必要なのか?

時間は有限だから
日本は週5日稼働が基本であって、急成長したいからと週6、7と働き続けることは健康リスクを伴い、キャリアを進めることが困難になるからです。例えば未経験から3年以内に全分野をミドルレベルにする、と意気込んだものの、力尽きたり全部中途半端になっては元も子もないからです。
生涯所得を左右するから
フロントエンドから入り、フロントを磨いてきた人はフロントを軸にする方が給料が高くなりやすいです。考えずにバックエンドやアプリエンジニアに専門を変えると、フロントで持っていたほどのバリューを発揮できず単価が下がる可能性があります。
人生は自分のキャリアだけでないから
新卒でエンジニアになり、3年、5年と順当に進めば家族ができたり、自分のキャリアだけに時間を使うだけでなく家族に割くことが多くなってきます。そういった出来事が起こることの多い3年目−5年目くらいまでにどこでも戦っていける力をつければ、経済基盤が安定しやすい。
市場は変わり続けるから
2022年度はモダンフロントの需要は高いが、今後どうなるかは市場次第です。市場の変化に対応しつつ、自分のバリューを一番発揮できるところに向かうのが良い。
軸がぶれると努力が身を結ばないから
目標を持ってゴールまで達成しようとするからゴールを達成できるのであって、キャリアの目標がないとどこに行けばいいかわからず、受け身で流されるようなキャリアになる。
フロントキャリアは難しいから
未経験からフロントエンド開発というのは最近できたキャリアで、昔からあるバック・インフラのキャリアと比べて決してサンプル数が多いとは言えません。自分で行きたいキャリアを定め、組織と交渉しつつ能動的に展開していく方針がないと、流されるままのキャリアになってしまう。

フロントのキャリア戦略

・1年目はフロントOnlyでもOk。2年目以降で幅を広げるために、基本情報などの勉強で全分野知識を習得し、AWSなどモダンフロントと関連の深いクラウドの知識も習得したい。
・2、3年目以降は、フロントスペシャリストを目指すか、フロントを軸に全体を見るテックリードを目指すか、他領域にも手を出してミドルフルスタックを目指す。
・3、4年目くらいまでにはメンバーから上記いずれかに転身することが第一目標。
・個人的にはフロントリードが一番連続的なキャリアで、スペシャリストはフロントのかなり深いところまで、フルスタックは全分野、非連続的にエネルギーを割く必要がある印象。
・スペシャリスト、フルスタック、リードは相反するキャリアではなく、自分の向かうゴールに向かって必要なスキルをつけるためにそれぞれ臨機応変に経験していく。
・5年目以降はそれぞれのキャリアを深めつつ、シニアフルスタックレベルを狙う。

キャリア構築の例

フロントがミドル+α、他はジュニアレベルの人
→ フロントリードを志向し、折を見て他領域にも手を出し徐々に全分野やる。
フロントがミドル、バック(or)インフラがジュニア〜ミドル
→ フロントリード/フルスタックどちらかのポジションで伸ばしていく。フロントリード、フルスタックどちらかを志向しつつ、一方でフロントの能力を飛躍させるためにはスペシャリストが求められる複雑なフロントシステムの現場に入るのが良い。
※ どのキャリアを志向するしても、フロントに留まらずエンジニアリング全般基礎は前提。

エンジニアリング全般の基礎とは?

かなり乱暴に全分野のキーワードを列挙すれば、大まかに以下のようなキーワードが大事になってくると思います。(全ては書ききれないので、諸々省略)。フロントはその1分野で、何も考えずフロントの現場で作業するだけでは、全分野の深い習得は難しいということになります。とはいえ、それぞれの各分野でマストで難度が高いことまで知見が必要なわけではなく、それぞれの分野で基礎知識を持ち、各専門家と必要に応じて議論することができることが大事になってきます。フロントを高くキープしつつ、その上で、深めたい領域があれば専門書を読んだり、その領域に1つずつ手を広げていくのが良いでしょう。目安として、基本情報を勉強し、その上で多方面の基礎を内包する分野であるクラウド分野(AWS/GCPどっちか)を勉強すれば幅広く基礎が身につくと思います。

Webエンジニアリングの主要10分野での関連キーワード
※ かなり大雑把に書きました。他領域専門の方、漏れていたらすみません。。
★フロント: UX、Peformance, Atomic Design、HTML•CSS•JS•TS+React/Vue/Angularから一つ
☆デザイン(Optional): 画面設計、UI/UX作成、FigmaまたはXDから一つ
☆バックエンド: API作成、認証・認可、オブジェクト指向、Java/Goなどから一つ
☆インフラ: Docker、k8s、スケラビリティ、負荷分散、CDN、マイクロサービス、BFF
☆クラウド(インフラ応用): AWS/GCP, Amplify/ Firebase などから1つ
☆ネットワーク: TCP/IP - HTTP、Rest/GraphQL
☆セキリティ: 機密性/可用性/完全性/真正性/信頼性/責任追跡性/否認防止
☆データベース: RDB(SQL、DB設計、正規化、インデックス、トランザクション)/ NoSQL(各NoSQLのベストプラクティス)どっちか
☆テスト: 単体テスト、統合テスト、負荷テスト、テスト設計など
☆メソドロジー: アルゴリズム、PC選定、Git•GitHub、CI•CD、アジャイル、教育、組織運営、マネジメント、キャリア構築、体調/メンタル管理、動機付け/コミュ力

これらの領域の中でも、
フロントエンジニア: フロントエンド+(人によってはデザイン)が軸
バックエンジニア: バックエンドとデータベースが軸
インフラエンジニア: インフラ、クラウド、ネットワーク、セキリティが軸
のように、それぞれのエンジニアで軸にしている領域が違いますね。
それぞれのエンジニアで身に付く領域が違うので、私は、一番多くの領域を包含しており、エンジニアリングをやる上での基盤となるインフラ(AWS)を優先的に勉強しています。

なお、フロントエンドエンジニアの面接においてはフロントだけ聞かれるわけではなく、上記に列挙したような各分野について基礎知識を問われることもあるので注意しましょう。

Webサービスの開発工程

上流工程をバックエンジニアやインフラエンジニアが担うことが多い第一の理由として、歴が長い人が多く、バック/インフラ含めた全体の知見が豊富な人が多いからだと推測しています。以下に各工程の各領域を羅列してみましたが、リストからわかることとして、フロントエンジニアがフロントアーキ以外の上流に入っていくためにはDBやインフラなど幅を広げていくことが必要な感が強いです。フロントに強みを持つエンジニアが上流を担当してはいけないということではなく、独学などで全領域に知見を付けた上で先輩や会社と交渉して徐々に上流に入れてもらう、あるいは最終手段として人員不足が激しい組織にいけば自動でやらされるでしょう(残業/ハードワークは覚悟)。

①超上流

要求分析: Business Requirements
要件定義: Requirements definition

②上流

・外部設計
プラットフォーム設計(インフラの決定)
アプリケーション•アーキテクト設計(アプリ全体の構造決定)
開発方式•テスト方式設計(使用技術•テスト方式の決定)
・機能要件
ビジネスロジック設計
データベース設計(RDBもしくはNoSQL)
画面設計
バッチ設計
・非機能要件
性能•保守性設計
セキリティ設計
移行/運用設計

③中流〜下流

・詳細設計
・プログラミング
・運用/ 各種テスト

待遇(給与)はどう決まるか?

大まかに、(担当できる工程の数×担当できる領域の数×その分野の実力感)で決まりそうですが、それだけではありません。エンジニア全体で、上流工程の方が給与が高くなる傾向があるようで、また、お金を持っている会社の方が給与が高くなる。また、フロントメンバーが足りずフロントの需要が高い現場ではフロントエンドの単価が高くなりやすい。その上で自分のロールが会社の求めているロールに一致し、会社の評価軸で採点され給与が決まる。スペシャリストの人はスペシャリスト志向の会社に行けば給与が高くなり、フルスタック志向の人はフルスタックで開発を行う会社で給与が高くなる。たとえば、フロントスペシャリストの場合は100点中90点がフロント、残りは他分野での結果で採点され単価が決まる一方、フルスタックの場合はフロント40点バック30点インフラ30点で採点され、フロントだけでなく満遍なく全分野で結果を出すことが求められる難しさがある。また、SESやエージェント経由の場合、マージンを取られ手取りは下がる傾向にある(営業代行代と考える)。言い値で決まる場合、前の現場の単価が基準となり次の現場での単価が決まることもある。

フロントのキャリア想定一覧(★はレベル目安)

3、4年目くらいまでに★★以上に達することができれば、市場価値が高まるでしょう。リスキーなのは、何年経ってもEasyなロールに留まってキャリアを前進できないことです。経験年数さえ高まれば前進できるという考えでは、受け身で後手後手なキャリアになってしまいます。★★以上のロールはどれも、能動的に行動できることが前提として必要と言えるでしょう。

① ★フロントメンバー

評価軸: フロント90%/ バック+インフラ10%
フロントがジュニア~ミドルレベル。バック、インフラに関しては簡単な知識に留まる。1-2年くらいの経験で大体の人はミドルに達する印象。2, 3年目以降はメンバー級に留まらずにスペシャリスト、フロントリード、あるいはフルスタックへと舵を切っていきたい。

想定される現場 : フロントメンバーが足りない会社全般。

② ★★フロントスペシャリスト

評価軸: フロント90%/ バック+インフラ10%
フロントがシニアに近いレベルで、フロントの実装力が突出して高いタイプ。簡単なプロジェクトではなく、複雑、困難なフロントエンドプロジェクトの実装を腕っ節で突破していく。フロントで高いバリューを発揮する代わりに、バック、インフラには深入りしない。

想定される現場 : 大規模なプロジェクトがありフロントの難度が高い会社。

③ ★★フロントリード

評価軸: フロント80%/バック+インフラ20%
フロントがミドル以上で、フロントのインフラ、アーキテクト、技術選定、開発、運用、テスト戦略まで一人称で対応できること。高いフロント実装レベルが必要な点でスペシャリストに近いところがあるが、他のバックエンド/インフラのリーダーと議論をしながら働くので、フロントだけでなく、バックとインフラ含めた幅広いエンジニアリングの基礎が必要。

想定される現場 : 中堅以上のフロントエンジニアを求めている会社全般。

④ ★★ミドルフルスタック

評価軸: フロント40%/バック30%/インフラ30%
フロント+1分野以上でミドルレベル以上あり、残り1分野についてもジュニアレベル以上。各分野で設計、開発、運用まで幅広く対応できる基礎力が必要。これまでのロールと違って、フルスタックではフロントエンド自体の能力はMaxで40%くらいまで程度しか評価されないので、生き残るにはバック/インフラどっちも手を動かせる必要がある。

※ なお、フルスタックが中途半端だと言われているのは、所謂ジュニアフルスタックの人たちで、全領域がジュニアレベル寄りで中途半端な人たちを指している気がする。

想定される現場 : フルスタックで開発を進めている会社。

⑤ ★★★シニアフルスタック

評価軸: フロント40%/バック30%/インフラ30%
フロント+1分野以上でシニアレベルかつ、全領域でミドルレベル以上。技術志向の組織で全体を統括するマネージャーや、CTOと呼ばれる職種の人に多い印象。

⑥ ★★★フロントスペシャリストリード

評価軸: フロント90%/バック+インフラ10%
フロントエンド•エンジニアリング領域のスペシャリストたちをリードするエンジニア。フロントエンド領域の技術顧問や、大規模組織でのフロントトップレベル。

体育会系? フロントキャリアの適正

ここまで書いておいて、フロントエンドは、向き不向きがはっきり分かれるキャリアだと思います。なぜなら、フロントからアプリ全体を見ようと思うと、バック•インフラと網羅せざるを得ず自然とフルスタックを目指さざるを得ないキャリアになるからです。フロントからバック、インフラと少しずつ幅を広げてきた感覚的には、フロント|バック|インフラの順に大きな領域が並んでいる感覚で、フロントを追求する一方他分野を軽視すると、バックと比べてフロント→バック→インフラへ到達するには抵抗が強まるので、早めに多くの領域を経験した方がよさそうな雰囲気はあります。全分野を網羅するとなると、短期でエネルギーを割くか、長期を見据えたキャリアとなりがちです。未経験からなる人が多いバックの場合、フロント、インフラへの以降は比較的スムーズそうです。また、後述しますが、フロントはキャリアのインフラが途上な感覚があり、フロント領域でシニアの先輩から十分教育を受けながら進むといった感じでなく、自分で仮説を立てつつ、キャリアの正解を模索していく感じになるので、他分野と比べてもかなり高い自走力はマストで必要な気がしています。また、フロント領域ではリーダー含め若手メンバーが多い中、マネジメントが機能せず心理的安全性が落ちたとしても、自力で解決するコミュ力や、衝撃に耐えるメンタル、あるいはその中で新たにリーダーとなって組織を作る気概など、色々求められる要素は強いという感じはしています。(実際、メンバー同士がバチバチに喧嘩し、誰も止めない、的な現場を見たことも。)また、体育会系的な雰囲気もあり、HTML/CSSを中心とする画面作成の工程では、コードの品質とともに、開発のスピード感が求められ、ビジネス側としてはスピード感で高評価されるか、あるいはスピードが遅いと低評価になるかのどちらかで大きく二分されるため「スピード重視」と体育会系的?側面もあります。
ここまでの情報をもとに私見でフロントに必要な要素をまとめると、、、

MUST: 自走力 + 技術全般 OR デザイン OR Webアプリ開発•グロースへの興味
WANT: マネジメント力/コミュ力/リーダーシップ/メンタル/エネルギー/スピード感/キャリア開拓力

フロントエンジニアは基礎が弱いという風潮

バック、インフラに比べるとフロントはどちらかというとインフラやDBを基礎として、アプリのUI/UXやパフォーマンスを最大化する役割となり、バック/インフラに比べると業務自体でシステム全体を俯瞰する機会は少なくなりがちで、採用側としてエンジニアリング全般の基礎は大丈夫なのか?と気にする声もあります。この声は真摯に受け止めるべきで、主要な分野中心にベストプラクティスを学び、現場ではフロント以外にも徐々に幅を広げていくのが賢明だと考えています。

フロントリードは技術だけリードすればいいのか?

最近、テックリードという言葉をよく聞きます。テックリードは技術だけリードすれば良いかと言えば、答えとしてはNoだと思っていて、フロント含む技術全般の高いレベルをキープしつつ、組織をうまく回して開発効率を上げるマネジメント的な観点が必要だと考えるようになりました。

最後に、(著者の完全私見)

これまで色々な現場に参画し、もしかしたらここ2年で6, 7プロジェクト程度近く(?!)、色々な開発の現場に入ってきた私ですが、思うことはフロントエンド自体の技術力が高い人は年数関係なくいても、業界全体でフロント領域は若手が多いせいかなんだかマネジメント力については欠けている傾向にある気はしています。フロントはどんどん新技術が出てくる分野であり、フロントエンドではエネルギーが高い人が多く血気盛んな人が多い印象はあるので、その気流に乗って新技術を追いつつ、技術としてはフロント含め追いつつ、一方でシニアクラスのメンバーの安定したマネジメントの能力から学び、フロント×マネジメントの視点も大事にしつつ前進できればなと思いました。

Discussion

自分は業界歴2年目なのですが、とても分かりやすかったです。
今後の自分のキャリアの参考にさせて頂きます!

コメントありがとうございます!
ともにがんばりましょう。

ログインするとコメントできます