見出し画像

プロダクト開発におけるエンジニアリングマネージャー(EM)とテックリード(TL)とPMの役割分担

自社のプロダクト開発をしている、みね@ユニラボ(@mine_take)です。
※本記事は個人の活動による記事であり、会社の公式見解とは異なる場合があります。

エンジニアリングに関わる内容で記事を書いています。今回はプロダクトの拡大により、エンジニア組織の拡張・拡大を考えた際に重要なポジションの、エンジニアリングマネージャー、テックリードという役割について、そしてプロダクトマネージャーとの関係について書きます。


エンジニアリングマネージャー(EM)とテックリード(TL)とプロダクトマネージャー(PM)の関係性

プロダクト開発における重要な役割として、エンジニア組織のマネジメントを手掛ける『エンジニアリングマネージャー(EM)』、高い技術力をもって開発チームを牽引する『テックリード(TL)』、エンジニア組織のマネジメントとは別の役割としてプロダクト開発の責任者を務める『プロダクトマネージャー(PM)』の3職種があります。

プロダクト開発における役割分担や評価軸、必要な視点(思考軸)を考えてみます。

【エンジニアリングマネージャー(Engineering Manager)】
主な役割 ■強いエンジニアチームを作り育てる
     ■部下のモチベーションマネジメント、キャリア構築支援
     ■実装技術の選定、技術ディレクション、メンバーアサイン
     ■人事考課、チームビルディングなど
評価軸  ■技術的知見、組織マネジメント力、プロジェクトマネジメント力、リーダーシップ
思考軸  ■WHO(だれが)、WHERE(どこで)、HOW(どうやって)
【テックリード(Tech Lead)】
主な役割 ■高い設計能力・実装能力によって開発をリードする     
     ■コードレビューなどでチーム開発におけるコードの品質を高め維持する
     ■メンター役としてチームメンバーをサポートする
評価軸  ■技術的知見、設計力、プログラミングスキル、リーダーシップ
思考軸  ■WHAT(なにを)、HOW(どうやって)、WHEN(いつまでに)
※エンジニアリングマネージャーがテックリードを兼ねることもある
【プロダクトマネージャー(Product Manager)】
主な役割 ■プロダクトの方針を定め、成功に責任を負う     
     ■ユーザー体験を設計し要求仕様を定義する
     ■開発、デザイン、マーケティング、セールス、品質保証、サポートなどと連携し、
      プロダクトの成功に尽力する
     ■プロダクト面から成長戦略を考え実行する
評価軸  ■構想力、発信力、プロジェクトマネジメント力 リーダーシップ、(技術的知見)
思考軸  ■WHY(なぜ)、WHAT(なにを)、WHEN(いつまでに)

エンジニアリングマネージャーとテックリードは技術面など重複している部分も多く、単純に切り分ける事が難しい境域もあります。チームによっては兼任するケースもあります。

また、開発(エンジニア)チームの上にプロダクトマネージャーが立つように捉えられるケースもありますが、エンジニアリングマネージャーとプロダクトマネージャーはあくまでも対等の立場と考えるべきです。

エンジニアリングマーネジャーとプロダクトマーネジャーの関係性

プロダクトマネージャーは、ユーザーのために何を作るかに責任を持ち、徹底的に“What(何を)”を考え抜くことが役割です。対して、エンジニアリングマーネジャーは、開発リソース(WhenとWho)を考慮しながら、テックリードや開発(エンジニア)チームと共に “How(どのように作るか)” を考え、実行するのが仕事です。

両者は時に意見を戦わせたり、ぶつかり合ったりすることはありますが、それぞれが違う立場でプロダクト開発に貢献していきます。

プロダクトマネージャー(PdM)についての記事も書いてます↓

エンジニアリングマネージャー(EM)の役割とは

エンジニアリングマネージャーとは、簡単に言ってしまうとエンジニアのマネジメントを担当するポジションです。主な役割は、下記の4つのマネジメント領域とされています。

  1. テクノロジーマネジメント(Technology management)

  2. プロジェクトマネジメント(Project Management)

  3. ピープルマネジメント(People management)

  4. プロダクトマネジメント(Product management)

1. テクノロジーマネジメントは

テクノロジーマネジメントは一般にテックリードやアーキテクトと呼ばれる人がカバーする範囲と考えると理解しやすいと思います。

サービスのアーキテクチャ、技術選定、開発手法、品質管理が範囲になります。また、技術的負債のコントロールも重要な観点です。

2. プロジェクトマネジメントは

プロジェクトマネジメントはプロダクトが実現したいものを、適切な品質で、なるべく早く、可能な形でリリースをコントロールすることです。

デリバリーマネジメントと言い換えた方が適切かもしれません。

3. ピープルマネジメントは

ピープルマネジメントはそのまま人のマネジメントで、チームマネジメントや、メンバーの育成・評価・採用が範囲になります。

このピープルマネジメントが、EMの主務であるように語られることが多いと思いますが、EMはあくまでボトルネックの解消に注力する役割で、ピープルマネジメントはひとつの要素であるという考え方が正しいと思います。

4. プロダクトマネジメントは

プロダクトマネジメントは「何をつくるか」をマネジメントする領域で、この4軸の中では最も難しい領域だと思います。プロダクトマネージャーとしても振る舞えることが理想ですが、プロダクトのリードを全部一人でおこなうことは、スーパースターだけが可能な偉業です。

EMの現実的な関わり方としては、あくまでエンジニア視点で、施策の実現可能性や見積もり・費用対効果を明らかにすることで「何をつくるか」「いつ作るのか」の判断を支援するという考え方が良いでしょう。

「狭いEM(弱いEM)」と「広いEM(強いEM)」とは

多くのエンジニアリングマネージャーは、ピープルマネジメントのスキルを中心にしながらも、テクノロジーマネジメント、プロジェクトマネジメント、プロダクトマネジメントといった多岐にわたる責務を担っています。

「狭いEM」とは、「エンジニアのマネジメントスキル」としてのピープルマネジメントスキルとテクノロジーマネジメントの一部スキルを持っていることが求められています。

「広いEM」とは、ピープルマネジメントに加えて、テクノロジーマネジメントのみならず、プロジェクトマネジメントやプロダクトマネジメントの一部の能力などが求められます。

狭いEMから広いEMの知識体スキル
狭いEMから広いEMの知識体スキル

エンジニアリングマネージャーに期待されていること

エンジニアチームの生産性を最大化する

エンジニアリングマネージャーの仕事を一言で言ってしまうと、エンジニアのマネジメントですが、求められていることは、マネジメントによって、開発(エンジニア)チームの生産性を最大化するのが、エンジニアリングマネージャーの役割と言えます。

なお、この場合、エンジニア個人のスキルも大事ですが、チームとして生産性を最大化できる仕組み作りも重要です。

エンジニアの採用に関わる

新しく入社したエンジニアが、チームの雰囲気に合った人であれば、チームの生産性アップに貢献できます。

そのため、求職者との採用面接に関わり、チームの雰囲気に合った方を採用するのもエンジニアリングマネージャーの重要な役割です。

そして、エンジニアの目線で求職者のスキルを的確に判断することで、エンジニアチームの生産性に貢献できる人材、または、その可能性のある人を採用できるのです。

エンジニアを評価する仕組みを作る

今は、極端なエンジニア不足の時代です。そのため、能力のあるエンジニアを求める企業が多く、待遇も良いことから現状に不満を持っているエンジニアは、簡単に転職してしまいます。

もし、そのエンジニアがプロジェクトのキーマンであれば、会社にとって大きな損失です。

そうならないようにエンジニアの実績を正しく評価する仕組みを作ることも、エンジニアリングマネージャーの重要な役割です。

テックリード(TL)とは

テックリード(Tech Lead)とは、プロジェクトやプロダクトにおける技術面でのリーダーのことです。ソフトウェアの開発を進める時は、チームで行う場合が多く、そのチームを牽引するテックリードは、「リーダー」「組織の窓口」となりシステムの開発に促進する役割です。

テックリードとリードエンジニアの違い

「リードエンジニア」「テクニカルリード」と言葉が利用されていますが、組織やプロジェクト・プロダクトで呼び方が違いますが、どちらも意味は同じものです。

実際にはどちらも「チームをリードするエンジニア」「チームを主導するエンジニア」 を指すことが多く、概念や役割はほぼ同一です。

テックリード(TL)の役割

テックリードには、大きく分けて「チームのリーダー」と「チームの窓口」という2つの役割があります。
前者については内部的な役割、後者については外部に対する役割です。

テックリードの役割とは、具体的には「コード品質の向上」「チームの生産性」「アーキテクチャ・設計」などです。

1. プログラム(コード)品質の向上

テックリードはチームで作るソフトウェアに対して、あるいはメンバーが書くプログラム(コード)の品質に対して責任を負います。高品質なコードを書けると開発のスピードが向上し十分な納期を確保できるだけでなく、メンテナンスの手間が削減されシステムの安定稼働や継続性にも寄与するのです。

コードの可読性が高いとセキュリティやパフォーマンスを担保することにもつながります。開発チームのメンバー同士がコードに対する認識を統一するには、テックリードが主体となり一貫性のあるコードを作っていく必要があります。

2. チームの生産性を高める

テックリードにはチームの生産性を向上させる役割もあります。エンジニアチームのメンバーが業務しやすい環境を作り、改善点がある時には対策を考えます。事前に「技術的に可能か」「実装難易度が高すぎないか」「既存機能と似ていないか」などを調べ、効率良くチームが活動できる状態を作っていきます。

3. アーキテクチャ・設計

アーキテクチャや設計は、テックリードを含めたさまざまなエンジニアが行います。その際、チーム内が納得して行える環境を整備するのがテックリードの役割です。最終的に決定したことは、テックリードが責任を持ちます。

テックリードとCTOとの違い

CTOとテックリードには、ポジション面で大きな違いがあります。

基本的にテックリードは、チームやプロダクトなど現場単位で、他のエンジニアをリードしていく役割です。

それに対して、CTOは会社全体をリードしていく役割です。

技術的に関係者をリードしていくという意味で仕事内容は似ている部分がありますが、責任範囲という観点では大きな違いがあります。

テックリードとエンジニアリングマネージャーとの違い

テックリードとエンジニアリングマネージャーの役割が混在している企業は非常に多いです。両者の役割には重複する部分もありますが、その焦点は異なります。テックリードはシステムに責任を持ち、エンジニアリングマネージャーは人に責任持っています。

チームの規模が小さい場合や、エンジニアのリーダーがエンジニアリングマネージャーとテックリードの両方を経験している場合は、同じ人が両方の役割を果たすこともあります。しかし、システムやチームの規模が大きくなり、複雑になってくると、それぞれの役割を別の人が担当する必要が出てくるかもしれません。

エンジニアリングマネージャーはマネジメントをメインで担う役割です。

テックリードは、エンジニアチームの中でリーダーとして役割を担い、開発をリードしていくというミッション持つ人を指します。

テックリードは、あくまでもチームの窓口チームリーダーにあたるポジションです。そのため、責任の範囲はチーム内に限定されます。

エンジニアリングマネージャーと協力し、チーム内のスキル不足のメンバーの底上げを担当するなど、補完する関係と言えるでしょう。

そのため、テックリードは技術に明るく、エンジニアリングに対して高い専門性を有していることが多いです。

役割の違い

役割の定義として、エンジニアリングマネージャーはメンバーアサインの部分「WHO(だれが)、WHERE(どこで)、HOW(どうやって)」 やるのか。そしてテックリードは「WHAT(なにを)、HOW(どうやって)、WHEN(いつまでに)」に注力するという違いがあります。

最後に

プロダクト開発をしていく上で、重要なポジションのエンジニアリングマネージャー、テックリードという役割と違いについて、そして、プロダクトマネージャーとの関係性をまとめました。エンジニア組織の拡張・拡大を考えた際に、リーダーやマネージャーの役割が大きい状態から、役割を分担し組織がスケール(拡張・拡大)を考える際にも大切と考えています。

<関連記事>


よろしければ、サポートお願いします。 サポートを頂いた費用でインプットを増やしてアウトプットを増やしていきたいと思います。