プロダクトモード組織におけるプログラムの管理方法

理想的な状態では、プロダクトモード組織は、明確化された、そして明確化されていないユーザーニーズに迅速に対応する、疎結合で自律的なチームで構成されています。しかし、時折、複数のチームにわたる調整が必要な機会が生じます。効果的に管理されない場合、その結果、収益の損失、顧客の不満、チーム能力の無駄遣いとなります。私たちは、これらの機会に対応する組織的取り組みをプログラムと呼びます。この記事では、うまくいかなかったプログラムの例を通して、プロダクトモード組織におけるプログラム管理に関する私たちの経験を共有します。

2020年1月23日


Photo of Luiza Nunes

ルイザ・ヌネスはThoughtworksのプロジェクトマネージャーです。テクノロジー業界における9年間の経験を通して、ソフトウェア開発者、テストエンジニア、学習とリーダーシップ開発責任者としても勤務しました。世界中の様々なクライアントと協力することで、ルイザはいくつかのソフトウェア開発とプロジェクト管理のベストプラクティスを適用し、実験することで、彼女のチームとクライアントの成功を支援してきました。

Photo of James Lewis

ジェームズ・ルイスはThoughtworksのリードコンサルタントです。彼のキャリアを通して、ジェームズは主にデジタルスケールアップ企業と協力し、バックエンドマイクロサービスチームのリードエンジニアとして、あるいは技術戦略の策定と実行を通してアーキテクチャとデリバリープロセスの改善を支援するコンサルタントとして働いてきました。彼はエンジニアリングの卓越性とビジネス成果のバランスに関心を持っています。


なぜプログラムは難しいのか?

プロダクトモードで運用されている組織は、持続的なビジネス課題に取り組む持続的な発想・構築・運用チームを使用して、顧客に継続的に価値を提供します。時間の経過とともに、バリューストリームにおける無駄を排除することにより、これらの組織は、複数のチーム間の調整の必要性を減らすような方法で自らを構築し、多くの場合、マイクロサービスシステムアーキテクチャにつながります。このように運用されている組織は、アーキテクチャを反映した組織構造を持つことが一般的です。つまり、独自の作業バックログを持ち、製品機能またはビジネス機能を提供するシステムを所有および運用する小規模なチームです。

しかし、時折、組織の複数の領域で新しい機能と能力の構築が必要となる機会が発生し、価値を提供するためにチーム間の調整が必要になります。これらの取り組みにおける調整努力を、私たちはプログラムと呼びます。

顧客価値の提供が複数のチームにわたるオーケストレーションを必要とするプログラムは、プロダクトモード組織にとって真の課題です。それは、

  • プログラムの価値を提供するために必要な運用モデルの変化を特定することが困難であるため。
  • 複数の作業ストリームにわたってデリバリープロセスを標準化することでプログラムが恩恵を受けるため、プロダクトチームで一般的な自律的な文化に反する可能性があるため。
  • 単一のプロダクトチームに適したリーダーシップスタイルは、異なる優先順位を持つ複数のチームを調整し、説明責任を維持する必要があるプログラムレベルでは適用できない可能性があるため。

私たちの経験では、プロダクトモード組織において成功したプログラムと失敗したプログラムの両方を見てきました。以下は、私たちが遭遇した現実の問題に触発された、そのような組織におけるチーム間の調整の困難さの架空の例です。

例:デジタルファースト銀行が新しい顧客セグメントに進出する場合

南米の近代的なフィンテック企業は、日常的な取引を行う消費者向けに成功したデジタルファースト銀行を構築しました。スタートアップであるため、アジャイル原則でビジネスを構築し、成長に伴い文化とアーキテクチャをスケーリングしてきました。

現在、製品部門に約200人の従業員がおり、組織構造は広く知られているSpotifyモデルと同様に、基盤となるモジュール化された製品アーキテクチャに合わせたSquadとTribeで構成されています。

数ヶ月間のユーザーリサーチの後、銀行は、ビジネス顧客にサービスを提供するのに適した立場にあることに気づきました。この洞察の結果、組織は数ヶ月以内に新しいオファリングをリリースすることを目的として、チームを編成することに決めました。

図1:ビジネスバンキング製品のMVPデリバリーに関する予想されるプログラムタイムライン

組織内の既存のプロダクトチームから3人のリーダー(デザインリード、テクニカルリード、プロダクトマネージャー)が、取り組みを調整するために選出されました。数ヶ月かけて、3人はディスカバリーに取り組み、最初のデリバリーフェーズの仕様を確立するための計画を作成し、MVPユーザージャーニーと高レベルのストーリーマップを定義しました。

ユーザー目標
タスク
ビジネスバンキングにサインアップする
  • 製品カタログにビジネスバンキング製品を追加する
ホームページにログインする
  • ビジネスバンクホームページを作成する
  • ビジネスバンクログインを作成する
  • 顧客APIにビジネスバンキング機能を追加する
  • 認証APIにビジネスバンキング機能を追加する
最近の取引を表示する
  • ビジネスバンク取引履歴ページを作成する
  • 取引APIにビジネスバンキング機能を追加する

プログラムのMVPは、新しいビジネス口座製品、ビジネス顧客としてログインする機能、ビジネス口座取引を表示する機能で構成されていました。MVPユーザージャーニーを確立した後、3人はスコープを提供するために必要な既存のプロダクトチームを特定しました。

チーム
所有権
Web UI
Webフロントエンド
顧客
顧客CRM、API、データベース
取引
取引APIとデータベース
認証
認証と承認プラットフォーム
カタログ
製品カタログAPIとデータベース

チームは、組織のプロダクトチームの典型的なものでした。自律的で自己管理していました。関与した各チームはすでに彼らにとってうまく機能する特定のデリバリープロセスを持っていました。一部は、製品ロードマップから作業する構造化されたアジャイルプロセスを使用し、見積もり付きのエピックとストーリーを作成しました。一方、他は、小さなタスクに分割された漠然とした目標で作業する方が快適でした。

自己組織化の文化を維持するために、3人は各プロダクトチームに個別に製品ビジョンを提示し、新しい顧客セグメントに対応するために必要な変更を彼らが自分で見つけることを許可することにしました。これとチーム間のデリバリー方法の矛盾により、3人は各高レベルのユーザーストーリーに隠された依存関係の数を予測できませんでした。

製品カタログにビジネスバンキング製品を追加するビジネスバンクログインを作成するビジネスバンク取引履歴ページを作成する
Web UIログインページ取引表示ページ
顧客新しい構成員のサポート新しい構成員のサポート新しい構成員のサポート
取引新しい構成員のサポート新しい構成員のサポート
認証新しい構成員のサポート新しい構成員のサポート
カタログ新しいビジネスバンキング製品
各チームがユーザー価値の一部に貢献する必要があることを強調した表

経験から学ぶために、プログラムの最後にチームは、直面した課題の根本原因を発見するためのレトロスペクティブを実施しました。彼らが発見したことは次のとおりです。

  • バリューストリームの変化を反映するように運用モデルが変更されなかったため、3人が自己組織化の文化に挑戦することを望まなかったため、デリバリーチームは顧客への価値のフローに対して全体的ではなく、ローカルに最適化しました。
  • 組織のリーダーは影響力を行使する権限を与えられていなかったため、プログラムの状況に関する情報の取得が困難でした。
  • **進捗報告が個々のデリバリーチームの状況に焦点を当てており**、顧客ニーズに対応する広範な全体的な作業ソリューションには触れられていませんでした。これは、連携と焦点を合わせる上で失われた機会であり、チームはプログラムへの貢献を認識していませんでした。
  • **リスク管理は暗黙的なタスクとして扱われ**、デリバリーチーム内で管理されると想定されていましたが、明示的なプログラムレベルの取り組みとしては行われていませんでした。そのため、納期に影響を与える多くの予期せぬ事態が発生しました。
  • **チーム間の未管理の依存関係とチーム間の協力不足**により、デリバリーチーム間に緊張が生じ、作業環境が悪化し、個人の士気に悪影響を与えました。
  • **プログラムリーダーシップチームは状況に合わせたコミュニケーションスタイルを変えませんでした**。コンテキストとプログラムの目標は、チームとリーダーシップによって完全に共有されていませんでした。誰もが仕事に必要な情報を持っているという仮定に基づいた、誤った理解が存在していました。
  • 上記の他の問題により、**チーム全体のモチベーションと説明責任が損なわれました**。

プロダクトモード組織におけるプログラム管理のベストプラクティス

これは仮説ですが、上記の例は、製品モード組織がチーム間の調整、プログラムのような機会に対応する際に直面する一般的な課題を表しています。この記事の残りの部分では、上記のようなプログラムに取り組む際に私たちが成功裏に使用してきた戦略、実践、原則について説明します。

プログラムの成功のために、開始時に時間を投資する

プログラムの開始は、チームとプログラムを成功に導くための集中的なワークショップを実施するための自然な休憩点となります。プログラムキックオフの終了までに、ビジネス関係者とチームメンバーは、イニシアチブとその重要性、その役割、デリバリー方法、最初のリリースのハイレベルな範囲を認識している必要があります。このようにプロジェクトキックオフに前もって時間をかけることは、数ヶ月にわたる納期遅延に対する適切なリスク軽減策となります。以下のような成果をもたらすワークショップを実施するための時間を確保することをお勧めします。

  • 何をすべきか、そしてなぜすべきなのか(現在の運用モデルへの変更を含む)について、すべての関係者を**連携**させる。
  • 一貫した**働き方、セレモニー、ベストプラクティス**を定義する。
  • 関係するすべてのチームに、ビジネス、技術、顧客の**コンテキスト**を周知させる。
  • 個人の役割、責任、モチベーションを明確にすることで、チーム間の**信頼**を構築する。
  • チーム内の共感と理解を築くための**基礎**を築く。
  • デリバリーに存在するリスク、依存関係、仮定、複雑性を**明確にする**。

これらの成果を目指したキックオフの例として、次のようなスケジュールが考えられます。

午前コンテキスト設定(すべての関係者)ターゲットアーキテクチャ非機能要件働き方成果発表(すべての関係者)
午後ユーザージャーニーマッピングRAIDs(リスク、仮定、課題、依存関係)トレードオフスライダーストーリーマッピングとリリースプランニングチーム交流(すべての関係者)

プログラムに適切なリーダーシップスタイルを選択する

組織や製品部門の現在の文化によっては、プログラムのデリバリーに必要な緊急性とプロセスの標準化レベルを受け入れられない場合があります。そのため、ソリューションチャンピオンとして行動するプログラムリーダーは、イニシアチブの要求に合わせてリーダーシップスタイルを調整する必要がある場合があります。

例として、状況に応じたリーダーシップモデルは、さまざまなリーダーシップの状態における一般的なコミュニケーションスタイルの有用な説明を提供します(サイドバーを参照)。理想的な状態では、自己組織化された製品チームのリーダーは、チームに関与し、エンパワーメントします。しかし、プログラムでは、関係する製品チームの自己組織化の性質に挑戦する運用モデルの変更が必要になる場合があり、リーダーは自分のスタイルを調整し、通常よりも多くの時間を明確化と定義に費やす必要があるかもしれません。

コミュニケーションスタイルを変えることに加えて、プログラムリーダーは、新しい運用モデルをサポートするために必要な変更について、チームの説明責任を維持する必要があります。責任と説明責任を伝えるために一般的に使用されるツールは、責任委任マトリックス(サイドバーのRACIマトリックスを参照)です。このようなものを使用すると、プロセス標準の維持と重要なプログラム会議への参加に関して、チームメンバーが何を期待されているかを理解するのに役立ちます。

依存関係とリスクを綿密に管理する

チーム間の依存関係(バックログカップリングと呼ばれる)は、複数のチームがソリューションの異なる個別部分のデリバリーを担当するため、プログラムデリバリーでは一般的です。これらの依存関係を積極的に管理するための優れたプラクティスは、チームがより自律的にデリバリーできるように、個々のチームのバックログを分離することを目的としたアクティビティでプログラムデリバリーの前倒しを行うことです。

たとえば、例の製品チーム間のバックログカップリングを削減するために、プログラムチームは最初の数回のイテレーションでウォーキングスケルトンを構築することに集中することを決定する場合があります(下の図7を参照)。成熟した継続的デリバリー設定を想定すると、ウォーキングスケルトンはフィーチャフラグの背後で本番環境にデプロイでき、将来のプログラムの進捗状況の更新は、製品チームによってより多くの忠実度とスコープの深さが追加されるにつれて、ウォーキングスケルトンの進化に焦点を当てることができます。以下は、ウォーキングスケルトンチームが製品ロードマップにどのように適合するかを示すリリースプランの例です。

ウォーキングスケルトンリリース1リリース2
スウォームチームすべての画面のローファイUI、スタブAPI、モック静的データ
Web UIスタブ上に構築されたログインページ、スタブ上に構築されたトランザクションページの表示
顧客フルビジネス顧客サポート
取引フルビジネス顧客サポート
認証フルビジネス顧客サポート
カタログフルビジネス顧客サポート
新しいリリースプラン

上記の例では、ウォーキングスケルトンはMVPユーザージャーニー全体で構成されますが、ユーザーインターフェースの忠実度にはほとんど時間が費やされていません。さらに、すべてのAPI統合は、モックおよびハードコーディングされたデータを使用してスタブ化されます。ウォーキングスケルトンを顧客が使用するためのものではなく、製品チームがお互いに結合する作業を、チームが独自のバックログのデリバリーを進める前にほとんど解決するためのものであることに注意してください。さらに、ウォーキングスケルトンが構築されると、すべてのチームがコードを継続的に統合できるようになり、統合が遅れるリスクを軽減します。

プログラムのデリバリーには他にも多くのリスクがあるため、通常のイテレーションサイクルの一部としてリスクを積極的に管理することは、成功に不可欠です。アクティブなリスク管理は、標準的な製品デリバリーサイクルの一部ではないことが多いため(上記の例で示されているように)、デリバリー全体を通じて勢いを維持するには、リーダーシップチームの側にある程度の規律が必要です。

強力なコミュニケーション戦略を開発する

プログラム管理における調整努力の大部分は、コミュニケーションに費やされ、次のことを行います。

  • すべての関連する関係者に情報が伝えられ、問題を提起し、質問をする機会が与えられるようにする。
  • チーム間のコミュニケーションを促進し、デリバリーにおけるボトルネックを軽減する。
  • プログラムリーダーシップチームにブロッカーを提示し、リーダーシップチームがそれらを軽減するのに役立つようにする。

プログラムにおけるこの必要なコミュニケーションのオーバーヘッドのために、プログラムリーダーシップは、各関係者グループのニーズを満たすタッチポイントを持つ強力なコミュニケーション戦略を作成する必要があります。コミュニケーション戦略の例を以下に示します。

タッチポイント目的対象者頻度
プログラムスタンドアッププログラムリーダーシップにブロッカーを提示する各製品チームの代表者週2回
プログラムクリニックフィードバックを収集し、関係者からの質問に対応する質問のある関係者毎週
成果発表進捗状況を祝い、関係者にデモンストレーションするすべてのプログラム関係者イテレーションごと
更新メール状況更新のための非同期コミュニケーション組織イテレーションごと
プログラム全体説明会会社に状況更新を提供する組織組織全体説明会に合わせて

情報伝達を支援する視覚的な成果物に投資する

物理的なプログラムウォール(下の図9を参照)などの視覚的な成果物は、主要な関係者だけでなく、会社全体にとってもプログラムの優れた情報ラジエーターとして機能します。

プログラムウォールは、当初は孤立したイニシアチブとして見られますが、最新の状態に保ち、その周りの会話を強制することにより、新しい組織習慣と規律を作成することもできます。物理的なウォールの興味深い追加の副次的利点は、チーム間の協力と説明責任を促進できることです。さらに、プログラムウォールは、誰かと時間をスケジュールする必要なく、情報をすばやく消費できるようにすることで、会社内の他の人々からの質問を促すのに役立ちます。

進行中完了状況ブロッカー
スウォームチーム

ローファイUI

スタブAPI

Web UI

トランザクションページの表示

ログインページ

顧客

ビジネス顧客API

オレンジ

認証への将来的な依存

取引

ビジネス顧客トランザクションタイプの追加

カタログ

ビジネス製品の追加

認証

ビジネス顧客向けの新認証

オレンジ

顧客を潜在的にブロックする可能性がある

理想的なプログラムウォールには、状況を簡単に更新するために必要な情報のみが含まれています。上記の例から、スウォームチームが作業を完了して解散し、デリバリーチームが現在、成果物を処理しており、そのうちの1つのチームが将来のブロッカーを削除するために何らかの支援を必要としていることがわかります。

プログラム管理のための明確な役割を持つことを恐れない

プログラム管理の規律は、複数のチームのオーケストレーションと調整を伴うイニシアチブが成功するために不可欠であると考えています。しかし、実際の役割の定義と責任は、組織のコンテキストとプログラムの複雑さに依存するため、この役割をプログラムマネージャーではなく「ソリューションチャンピオン」と呼ぶことを好んでいます。しかし、基本的に、イニシアチブ全体の健全性について責任を負い、次の戦略要素に重点を置いた努力を行う人が必要です。

  • チーム間の連携を継続的に確保する。
  • チームと外部関係者間のコミュニケーションが円滑に流れるようにする。
  • 関連性があり重要な情報を最新の状態に保つ。
  • プログラムの依存関係とリスクを管理する。

役割の責任を明確にして、関係者全員に周知させることが重要です。特に、プログラムのキックオフ時に実施することが望ましいです。製品モード組織でソリューションチャンピオンを導入する際に観察されたリスクとして、製品チームメンバーとソリューションチャンピオンの責任が重複し、両方の役割の効果が低下することがあります。前述のように、ソリューションチャンピオンはプログラムの戦略的側面に集中し、関係チームの戦術的な製品デリバリータスクには関与すべきではありません。以下のRACIマトリックスは、役割間の責任分担を示しています。

ソリューションチャンピオンプロダクトマネージャーテクニカルリードデザインリードデリバリーチーム
プログラムデリバリーA/RRRRR
依存関係とリスク管理A/RRRRC/I
イテレーションプランニングIA/RRRR
コミュニケーションA/RC/IC/IC/IC/I
ストーリーライティングIA/CCCR

ソリューションチャンピオンと製品デリバリーのリーダーシップおよびチーム間の説明責任の分離に注意してください。

結論

これまで説明してきたように、プログラムが特定されると、顧客への価値を提供するために運用モデルの変更が必要になることが明らかになります。成功への道を導くための多くの戦略、実践、原則をリストアップしましたが、万能な解決策はありません。どのようなメカニズムを選択する場合でも、プログラム関係者とのフィードバックループを構築し、必要に応じて学習と適応を行うようにしてください。


重要な改訂

2020年1月23日: 本文の残りの部分を公開

2020年1月21日: 依存関係の管理とコミュニケーション戦略策定に関するセクションを公開

2020年1月14日: 開始時の投資とリーダーシップスタイルの実践に関するセクションを公開

2020年1月13日: 第一稿を公開