Photo by Nathan Dumlao on Unsplash
アーキテクチャは組織に従うというコンウェイの法則を踏まえて、具体的にどのようにチームを作り、そのチーム間のインタラクション(コミュニケーション)を設計すると良いのか、をまとめた本です。コンウェイの法則については別の投稿で書いているので詳しく知りたい方はこちらをご覧ください。

シンプルすぎる記載かも知れませんが、この2つの設計が重要とのことです。
- 4つの基本チーム
- チーム同士のインタラクション
これらは前提にしつつも、この2つを常に必要に応じて組み替えていくことを求めています。ただし、これを方法論として表面的に捉えるのでは無く、
- チームファースト
- 組織的センシング
- その他の重要な材料
などが重要という話が出てきており、形だけの適用にならないことが重要と思います。
著者は以下の4つのチームまでシンプルに考えると良いと提唱しています。
- ストリームアラインドチーム (Stream Aligned Team)
- イネイブリングチーム(Enabling Team)
- コンプリケイテッド・サブシステムチーム(Complicated Sub System Team)
- プラットフォームチーム (Platform Team)
それぞれの役割の詳細は本書に委ねるとして、ストリームアラインドチームが事業成長性分析やプロダクトオーナーシップ、ユーザエクスペリエンスにテストやQAまで一貫して責任を持つことで、開発と運用を一体とさせたチーム体制を築くことに重点を置いています。このチームをサポートするチームとして、他の3チームがある位置づけです。
誤解を恐れずに言うとイネイブリングチームは専門性を、コンプリケイテッド・サブシステムチームは特に複雑な一部分を、プラットフォームチームはどのチームも必要とするような共通基盤をそれぞれ提供するような役割に分かれています。そのため、イネイブリングチームやコンプリケイテッド・サブシステムチームは事業ドメインに応じて、専門性が求められなかったり、システムを分割して管理する必要が無い場合には不要になります。
こちらも3つの形があるとされています。
- コラボレーションモード
- X-as-a-Serviceモード
- ファシリテーションモード
コラボレーションモードは上記の複数のチームが、一時的に一つのチームになって支援をするような段階で、それが落ち着けばX-as-a-Serviceモードに切り替わり、互いのコミュニケーション量を最小にした状態でそれぞれのサービス改善に集中できる状態です。ファシリテーションモードは何か解決すべきことが複雑で、イネイブリングチームが主導してストリームアラインドチームの問題を解決に当たるような状況を指しています。
小さな長続きするチームを中心としてこれらを構成することを前提します。個人でこれらを進めるのでは無く、評価の単位も、扱える認知的な範囲もすべてこのチームが対応できる大きさに絞り込んで組織化していきます。そしてできるだけチーム外部とのコミュニケーションはAPIとして定義してコミュニケーションの最小化を図ります。そうすることで、自身のチームに集中することが出来るようになります。
プロダクトが完成に近づいたり、一定の成果を求めた後にはそのチーム組織をそのまま維持するのでは無く、共通化してシンプルになるものはプラットフォームチームに移管などを始め、組織は固定では無く、状況に応じて境界の入替を常に行えるようにします。
これまでの項目を揃えればうまくいくというわけでも無く、これに加えて、健全な組織文化、良いエンジニアリング・プラクティス、納期のあるプロジェクト単位では無く、チームやグループに対する予算付与、ビジネスビジョンを明確にし、なぜその戦略が重要なのかをチームが理解できるようにする、などの項目も必要になります。
LeanやDevOpsなどの新しい開発アプローチが提案される中で、それをどう組織の中で実践すべきなのか、そういったエッセンスが上記に書き出した項目にちりばめられており、それを同具体的に実践していくのか、それを整理してあるという意味で大変有意義な書籍と思います。理論的な部分のみならず、実践しようとすると躓く部分なども書籍なの中では説明されており、ハードルは高くとも挑戦しがいのある組織構造なのではと思います。
日本の会社の開発体制を見ていると、階層的な組織構造や文化がこれらの実現を難しくしている部分は多々あると思います。ただ、決して日本だから、というわけでも無さそうで、他の国の会社もなかなかこういったマインドセットを実現するには至ることは難しいです。ソフトウェア開発においてこれだけ組織内の力学を変更しながら切磋琢磨できるというだけでも他社よりも大きなアドバンテージを得ていると言うことなのかも知れません。