40 ポイント 投稿者 spilist2 2022-12-30 | 3件のコメント | WhatsAppで共有

フロントエンド開発の歴史は浅く、多くの組織で優れたシニアフロントエンドエンジニアを求めている一方で、見つけるのは難しいため、多くの中小規模スタートアップのCTOが似たような悩みを抱えることになる。

  • フロントエンドに求められる技術水準がそれほど高くなく、エンジニアの能力開発の動機が乏しい
  • フロントエンドエンジニア出身で優れたキャリアを築いたロールモデルが身近にあまりおらず、キャリア設計が難しい
  • 組織内にシニアフロントエンドエンジニアが不在なため、ミドルクラスにより多くのリーダーシップが求められる

この記事は、このような悩みを持つフロントエンドエンジニアと、彼らをどう導くべきか悩むチームリードおよびCTOのために書いた。フロントエンドエンジニアがどの方向に専門性を特化させ、どのようにシニアとしてキャリアを築いていくかについてのガイドとして役立つことを期待している。

1. 卓越したエンジニアになる

「卓越したシニアフロントエンドエンジニアになりたい」という文は、3つの側面から解釈できる。

  • 卓越した(シニアフロントエンド)エンジニアになりたい。
  • 卓越した(シニア)フロントエンド エンジニアになりたい。
  • 卓越したシニア(フロントエンド)エンジニアになりたい。

What Makes a Great Software Engineer?という論文によれば、卓越したエンジニアとは、良いコードを書き、仕事の現在価値を最大化し、データに基づいて意思決定し、同僚の効果的な意思決定を助け、継続的に学習する人である。この5つの能力を伸ばそうと努力すれば、良いエンジニアになれるだろう。

付け加えると、ますます強化される人工知能のために、コミュニケーション能力と文章力ははるかに重要になった。人工知能に開発業務を代替されるのではなく、人工知能を秘書として活用して効果的に働くには、Prompt Engineeringの観点から英語ライティングやインタビュー技法を学ぶとよい。

2. 卓越したフロントエンドエンジニアになる

上記の基礎に加えて、ジュニアフロントエンドエンジニアがどの方向で専門性を築くとよいか、3つのトラックを考えてみた。各トラックは相互補完的なので、一方の専門性が十分にある人は他のトラックの専門性を築くのがはるかに容易になり、当然ながら各トラックでシニアとして可能なキャリアも一部重なる。
(「運用トラック」にはDevOps的な側面とプロセス/組織運営的な側面の両方を含めたが、この2つの能力を必ずしも一緒に持たなければ良いキャリアを築けないわけではない。「プロセス特化」トラックを別に設けるべきかも悩んだが、4つ目のトラックを有意義なものにするにはまだ自分の力量が不足しているため、ひとまず1つにまとめた。)

Web特化トラック (Software Engineer)

  • 主な特徴
    • インターネット、Webブラウザ、HTML/CSS/JSを深く理解し、活用できる
    • Webエコシステムを構成する各種ツールの長所と短所を理解し、さまざまな環境でトラブルシューティングした経験がある
    • Webに現れる新しい技術に敏感で、自ら活用を試みる
  • 長所と短所
    • ある程度のレベルまでは一人でも能力を伸ばしやすい
    • 製品の複雑さや成熟度が十分に高くない組織では、専門性を発揮して評価される機会が少ない
  • 能力向上の方法
    • ロードマップのキーワードに沿って書籍やインターネット上のコンテンツで学び、サイドプロジェクトで使ってみる
    • ニュースレター購読、オープンソース参加、新技術のテスト、使用しているツールの動作原理と限界の理解、時には自分でツールを発明する
    • さまざまな環境でトラブルシューティングし、性能を引き上げてみる
  • その後、シニアとして可能なキャリア
    • Webスキル向上の講師
    • (Webエコシステムを構成するツールを作る組織の)ソフトウェアエンジニア
    • (複雑度の高い製品を扱う組織の)ソフトウェアエンジニア
    • フロントエンドテックリード

製品特化トラック (Product Engineer)

  • 主な特徴
    • 少ないコーディング量でも複数のツールを組み合わせて初期プロダクトの成果を生み出せる
    • 市場と顧客への理解が深く、その理解をさらに高めるためのさまざまな方法を実務に適用できる
    • マーケティングおよび営業担当者にプロダクトを理解してもらうためのコミュニケーションを頻繁に行う
  • 長所と短所
    • 市場でプロダクトを検証したい初期スタートアップから熱烈に歓迎される
    • 安全な領域にとどまり続けると、自分が育てたプロダクト組織から押し出される可能性もある
  • 能力向上の方法
    • 自分のドメインで優れたプロダクトを分析的に使い、顧客を観察しながらプロダクトセンスを育てる
    • 慣れ親しんだツールの組み合わせに固執せず、道具箱を継続的に入れ替える
    • 自分が主導した初期プロダクトが成果を上げ、構造やコードを作り直さなければならない時期をともに耐えながら、走りながら車輪を交換する
  • その後、シニアとして可能なキャリア
    • (PMFを探すあらゆる組織の)ソフトウェアエンジニア
    • グロースエンジニア、グロースコンサルタント
    • フロントエンドテックリード、テクニカルプログラムマネージャー
    • PM、PO、CPO

運用特化トラック (Full-Stack Engineer)

  • 主な特徴
    • プロジェクト構造、統合、テスト、デプロイに強い関心がある
    • 簡単なAPIは自分で作れ、必要なインフラも自分で構成できる
    • 組織規模が大きくなるにつれて生じる抜けや非効率を察知して自ら埋め、プロセスを改善する
  • 長所と短所
    • 広い範囲の業務をカバーしながら多くの人と協業し、評価される機会がある
    • 意識的に努力しなければ技術力が遅れ、反復業務だけを続けてバーンアウトすることがある
  • 能力向上の方法
    • 管理用バックエンドAPIの実装やフロントエンドインフラの構築などで守備範囲を広げる
    • 爆発的に成長する組織で大規模トラフィックや障害に直面しながら対応する
    • 大企業の運用プロセスやガイドラインを掘り下げたり、メンタリングや講演を聞いて自分の組織に合うよう適用する
  • その後、シニアとして可能なキャリア
    • (プロダクトが多様な大規模組織の)ソフトウェアエンジニア
    • フロントエンドテックリード、テクニカルプログラムマネージャー
    • エンジニアリングマネージャー、アジャイルコーチ、VP of Engineering
    • CTO

3. 卓越したシニアエンジニアになる

上のように専門性を築いた人が卓越したシニアエンジニアになるには、どうすればよいだろうか。自分がどのようにしてシニアの役割を担うようになったのか、またこれまで出会ってきた優れたシニアエンジニアたちはどんな人だったのかをもとに、卓越したシニアエンジニアになるための3つのポイントを挙げてみる。

  • 基本に忠実であろうと努める: 卓越したエンジニアの5つの能力は、当然ながらシニアエンジニアにもそのまま当てはまる。
  • 明示的なリーダーでなくてもリーダーのように振る舞う: リーダーシップは明示的なリーダーでないときでも十分に発揮でき、時には同僚の模範的な行動1つが、明示的なリーダーの数多くの言葉よりも大きな影響を与えることがある。与えられた役割に関係なく、プロダクト、チーム、組織全体に前向きな影響を与えるために力を尽くせば、いつの間にかシニアとして認められるだろう。
  • どんな状況でも大きなインパクトを出す: デバッグのような小さな行為でも、シニアはジュニアよりはるかに大きな影響力を発揮する。与えられた仕事をうまく終えることに満足せず、前後の文脈を見て複数の人とコミュニケーションしながら大きなインパクトを生み出す人なら、プロダクトでも、チームでも、会社でも、どこか一つのパートを安心して任せられるシニアへと成長するだろう。

3件のコメント

 
devsepnine 2023-01-03

もうすぐ3年目になるジュニア開発者ですが、やはり
会社の業務の難易度や環境によって、何かを実際に使ってみるのはなかなか簡単ではない気がします…。そういう部分はサイドプロジェクトで積み上げていっていますが、継続して真面目に取り組むのは簡単じゃないですね…(笑)

 
hohpark 2023-01-02

とても良い文章ですね。ひょんなことからWebフロントエンドに足を踏み入れて、気づけば10年をはるかに超えていました。自分自身のキャリアの悩みもありますが、ジュニアにキャリアガイドをするのは本当に難しかったです。キャリアロードマップとしてガイドする際に、うまく活用できそうです。

 
spilist2 2023-01-02

ジュニアの方とシニアの方の両方を意識して書いたのですが、役に立ちそうだと言っていただけてうれしいです。コメントありがとうございます!