📚

チームで成果を出したいので『エンジニアリングチームのリード術』を読みました

に公開

はじめに

オライリー・ジャパン社の『エンジニアリングチームのリード術 ―Googleに学ぶインディビジュアルコントリビューターとマネージャーのための実践ガイド』という技術書でソフトウェア開発チームをリードする際に重要視すべきことを学習しました。本記事では、この技術書の概要と、私が本書で得た学びと気付きを紹介します。

どのような技術書なのか

著者のAddy Osmani(アディ・オスマーニ)氏はGoogle Chromeのシニアスタッフエンジニアリングマネージャーで、これまでのテックリードやテックリードマネージャーなどとして自身が効果的であり続けるために実践してきた記録をこの技術書で共有した、とあります。

本書は以下の7章で構成されます。

  1. ソフトウェアエンジニアリングチームを効果的にする条件
  2. 効率性と効果性と生産性
  3. 効果的なエンジニアリングのための3つのEのモデル
  4. 効果的なマネジメント:Googleの調査
  5. 効果性に対する一般的なアンチパターン
  6. 効果的なマネージャー
  7. 効果的なリーダーになる

本書では効率性、効果性、生産性を以下のように区別しています。

  • 効率性
    • 無駄を最小限に抑え、アウトプットを最大化するために物事を正しくおこなうこと。
  • 効果性
    • 正しいことを行い、正しいアウトカムを生み出すこと。
  • 生産性
    • 効率性のサブセットであり、インプットあたりのアウトプットを測定するもの。

エンジニアリングチームが効果的であるため、そしてリーダー/マネージャー自身が効果的であるために重要な概念や資質、実践事項が紹介されています。例えば以下のようなことが紹介されています。

  • 大事な概念の例
    • 効率性/効果性/生産性
    • アウトプット/アウトカム
    • 効果的なエンジニアリングのための3つのEのモデル
    • 効果性に対する一般的なアンチパターン
    • など
  • 効果的なマネジメント
    • Google社のProject OxygenとProject Aristotleの調査の中で明らかになった、マネジメントの重要な要素
  • 効果的なリーダーに必須の資質
    • 技術的な専門知識
    • アジリティ
    • コミュニケーション
  • 効果的なリーダーシップに望まれる資質
    • セルフモチベーション
    • ドライブ
    • 公平性
    • 謙虚さ
    • 勇気
    • 影響力
    • 他者への思いやり
    • 自己認識力

一方で、エンジニアリングチームの具体的な運営方法については記載されていません。

  • 記載されていないことの例:
    • 「スクラム」の単語は登場しますが、具体的なスクラムの運営方法は紹介されていません。
    • 「1on1」の単語は登場しますが、そのやり方までは具体的に紹介されていません。
    • など

本書を読んだきっかけ

この記事の投稿者である私は、都内のサービス事業会社でソフトウェア開発エンジニアとして勤務しています。この会社では複数のサービスを運営しており、私はその中の1つのサービスの開発チームに所属しています。そのチームはさらに複数のサブチームから構成されており、2025年2月から私はその1つのサブチームを技術リードする立場になりました。チームを技術リードし、メンバーに活躍してもらうにはリーダーとして自分はどのようなことを優先して実践すべきかを知りたく、この技術書を読みました。

本書で得た学びと気付き3選

ここでは本書から得た学びと気づきの中で特に印象的だった3つに絞って紹介します。

アンチパターンの認識

効果的なチームを運営することを阻害する複数のアンチパターンとその対処法の存在を知ることができました。なお、本書で紹介されているアンチパターンは以下の通りです。メンバーとリーダー、そしてチーム自体がこれらのアンチパターンに当てはまっている場合には、対処法の実施を検討する必要があります。

  • 個人のアンチパターン
    • スペシャリスト
    • ジェネラリスト
    • ため込み屋
    • 教え魔
    • 些細な手直し屋
  • 業務関連のアンチパターン
    • 締め切り間近の奮闘
    • PRプロセスにおける規約違反
    • 長期化するリファクタリング
    • レトロスペクティブでの手抜き
  • 構造的なアンチパターン
    • 孤立した集団
    • 知識のボトルネック
  • リーダーシップのアンチパターン
    • マイクロマネジメント
    • スコープマネジメントのミス
    • 詰め込み過ぎの計画
    • 懐疑的なリーダーシップ
    • 消極的なリーダーシップ
    • 過小評価

私の場合、技術面でのチームのリードをしつつ自分自身でエンジニアとして開発作業も行っているのですが、上記のアンチパターンのうち、リーダーとしては「消極的なリーダーシップ」が、エンジニアとしては「ジェネラリスト」が、自分に当てはまると感じました。

この2つのアンチパターンの詳細な内容と対処法として、本書では以下のように紹介されています。

  • 消極的なリーダーシップ
    • 自己満足、臆病さ、優柔不断を体現するリーダに特徴的なアンチパターン
    • チームにとって必要な改善や変化を行うことをためらい、不十分な指導や表面的なフィードバックしか提供しない
    • 対処法
      • リーダーの役割、責任、改善推進への積極的な関与について期待を明確にする
      • チームとのコミュニケーションチャンネルを構築し、定期的なフィードバックや、必要な改善について議論を行う。
      • リーダーが適切な決断をできるように、関連情報や知見を提供する
      • イノベーションを奨励する文化を醸成し、リーダーが新しいアイデアやアプローチを積極的に支援し推進する
      • チームの成長と成功に貢献する改善策の推進と意思決定に対して、リーダーに説明責任をもたせる
  • ジェネラリスト
    • さまざまな技術領域に手を広げてスキルを獲得していった結果、特定の技術領域における専門性を得られていない。
    • 対処法
      • プロジェクトで特定の技術領域を担当させる。
      • そのエンジニアが自分の強みや興味に合った技術領域の専門性を磨くよう働きかける
      • ジェネラリストとスペシャリストが協力する環境を構築する
      • 専門領域における継続的な学習とマスタリーを追求する姿勢を奨励する。

効果の定義の重要性

本書では効果的なエンジニアリングのための3つのEのモデルが紹介されています。3つのEはそれぞれ以下のような意味で、それぞれについて具体的に実践すべきことが紹介されています。

  • 実行可能にする(Enable):
    • リーダーはチームにとっての効果性を定義して、効果性を実現できるようにビジョンや戦略を策定し、チームに共有する。
  • 力を与える(Empower):
    • 効果性を実現するための戦略を策定したあとに、チームがその戦略を実践するように支援する。
  • 拡大する(Expand):
    • より大きな全体像に対して効果性をスケールさせる。

私の場合、「実行可能にする(Enable)」の「効果性の定義」の実践が重要であり、チームのアウトカムなどを明確にする必要があると感じました。現在はチームでスクラムで開発を行っているのですが、毎スプリントのチームの目標はあるものの、より長いスパンでのチームの目標や成果が曖昧だからです。

なお、本書では「効果性の定義」の一般的な方法として以下が紹介されています。

  • チームのゴールと目標を明確にする
  • 何をメトリクスとして使用すれば成果を測定できるのかを決定する
  • メトリクスごとにターゲットを設定する
  • アウトカムの観点から効果性を定義する

効果的なリーダーなることの必要性

本書では効果的なリーダーの主な役割として以下を挙げています。

  • 方向性の確立
    • 先見の明を持ち、チームに刺激的なビジョンを提示する
    • そのビジョンを実現するための戦略を練り、全体像を明確にする
  • 人々をまとめる
    • ビジョンを共有して、メンバー全員が目指す方向を理解できるようにする
    • メンバーに対して明確さと目的意識を提供することで、メンバー間の協力関係を築く
    • その結果、チームは共通の目標に向かって協力し合うようになる
  • やる気を引き出し、鼓舞する
    • メンバーに権限を与え、メンバーのニーズに応えることで、メンバーのやる気を引き出し鼓舞する
    • メンバーの熱意やコミットメントを引き出す。

なお、本書では効果的なリーダーの必須の資質として以下も紹介されています。

  • 技術的な専門知識
    • リーダーは、自身の経験と知識を活用しチームメンバーが問題を解決できるように支援します。
  • アジリティ
    • 学習する能力や、学習したことを忘れる能力、変化する状況に適応する能力
    • そして、戦略的に考え、素早く学び、方向転換して困難をチャンスに変える能力
  • コミュニケーション
    • そもそもメンバーとコミュニケーションを取れないと、上記の「技術的な専門知識」と「アジリティ」の2つのスキルが効果を発揮しない
    • 他の人々のモチベーションを高めたり、他の人々に影響を与えたりする最も重要なツール
    • 自分の傾聴能力や、説明能力、説得能力、コンテクストを共有するスキル、など

私の場合、これまでは如何にしてチームのパフォーマンス向上や成果を上げるかを意識していましたが、本書での学習を通じて自分自身も効果的なリーダーとして役目を果たす必要があることに気づきました。またメンバーとのコミュニケーションの質と量がどちらも不足しており、「コミュニケーション」の資質の改善が必要だと感じました。

おわりに

この記事ではオライリー・ジャパン社の『エンジニアリングチームのリード術 ―Googleに学ぶインディビジュアルコントリビューターとマネージャーのための実践ガイド』という技術書の概要と、本書で得た学びと気付きを紹介しました。
これらの学びと気づきを活かすことで自分のリーダーシップを改善することでまずは自分が効果的なリーダーになり、最終的にはミッションを効果的に達成できるチームを構築したいと思います。

Discussion