#book #r2020 ![image](https://gyazo.com/d2543f5d57d5fd388bea43080f72aa68/thumb/1000) # TL;DR - 逆コンウェイの法則など過去に提案されていたものを実際にチームの形に落とした話 - 4つのチームと3つの Interaction Mode でチームでビジネス価値の提供を中心にしつつ、うまくケイパビリティを埋めていくという話 - 複数の Stream-aligned Team と それを支援をする Enabling Team と Complicated-subsystem Team と Platform Team がコア ![image](https://gyazo.com/fd278edafd75b2b5cee8ce92debecc93/thumb/1000) [/iki-iki/QRC Team Topologies-ja](https://scrapbox.io/iki-iki/QRC Team Topologies-ja) ![image](https://gyazo.com/31f74680bf0a5e7ae61823cba3d36121/thumb/1000) # Summary ## Fundamental - The Reverse Conway Maneuver (逆コンウェイの法則) - [[LeanとDevOpsの科学]] でも述べられてる通り必要なアーキテクチャに沿ってチームを構成すべき - Restrict Unnecessary Communication - What we need is focused communication between specific teams - Use Samll, Long-Lived Teams as the Standard - Dunbar's number によれば、 - ~ 5 : limit of people with whom we can hold close personal releationships and working memory - つまり5人程度まで隣のメンババーが何をしてるのかを把握できる - ~ 15 : limit of people with whom we can experience deep trust - ~ 50 : limit of people with whom we can have mutual - ~ 150 : limit of people whose capabilities we can remember - Restrict Team Responsibilities to Match Team Cognitive Load - 1988年に John Sweller によれば、Cognitive Load は "the total amount of mental effort being used in the working memory" と定義され、3種類あると言われてる - Instrinsic Cognitive Load : Relates to aspects of the task fundamental to the problem space - Extraneous Cognitive Load : Relates to the environment in which task is being done - Germane Cognitive Load : Relates to aspects of the task that need special attention for learning or high performance - Organizations should attempt to minimize intrinsic cognitive load and eliminate extraneous cognitive load altogether, leaving more space for germane coginitive load ## The Four Fundamental Team Topologies (Stream Aligned Team is the main, with several enabling team) - Stream-aligned Team - The Team is empowered to build and deliver customer or user value as quickly, safely and independentely as possible, without requiring hand-offs to other teams to perform parts of the work. - Enabling Team - [[LeanとDevOpsの科学]] では、以下のように言われてる - > High-Performing teams are continuously improving their capabilities in order to stay ahead - が Stream-Aligned Team は一定のプレッシャーの元、機能開発をする中でどのように時間を取って Capabilities を得るか - An enabling team is composed of specialist in a given technical domain, and they help bridge this capability gap. Such teams cross-cut to the stream-aligned teams and have the required bandwidth to research, try out options, and make informed suggestions on adequate tooling, practices frameworks, and any of the ecosystem choices around the application stack.This allows the stream-aligned team the time to acquire and evolve capabilities without having to invest the associated effort. - Complicated-subsystem Team - A complicated-subsystem team is responsible for building and maintaining a part of the system that depends heaviliy on specialist knowledge. - The goal of this team is to reduce cognitive load of stream-aligned teams working on systems that include or use the complicated subsytem. - Platform Team - The platform team provides internal services to reduce the cognitive load that would be required from stream-aligned teams to develop these underlying services. - 大規模な場合には、 Platform Team の中にさらに Stream-Aligned Team や Enabling Team を置くこともあり、フラクタル構造と捉えることもできる ## Team Interaction Modes - Collaboration - Working closely together with another team - Advantages - 革新的な方法に早くたどり着いたり、発見がメイン - 他のチームに依頼したり、待つ必要がない - Disadvantages - チームの責任範囲が広く共有されてしまう - 別チームのコンテキストを理解しないといけないので認知的負荷が高い - 成果物の量が一時的に落ちてしまうこともある - Typical Uses - Stream-aligned Team と Complicated-subsystem Team が一緒に働く - Stream-aligned Team と Platform Team が一緒に働く - Platform Team と Complicated-subsystem Team が一緒に働く - X-as-a-Service - Consuming or providing something with minimal collaboration - Advantages - 責任分解点が明確 - お互いの詳細なコンテキストを把握する必要がない - Disadvantages - 革新的な方法などは生まれにくい - コミュニケーションやAPIが効率的じゃない場合、一連のワークフローのボトルネックになってしまう - Typical Uses - Stream-aligned Team と Complicated-subsystem Team が Plaform Team のツールを使う - Stream-aligned Team と Complicated-subsystem Team が Complicated-subsystem の機能を使うなど - Facilitating - Helping (or being helped by) another team to clear imedients - Advantages - Stream-aligned Team のワークフローを効率的に進めることができる - Platform Team などで満たせてないケイパビリティを見つけたりできる - Disadvantages - このモードを継続してしまうと、ビルドや実行するために経験のあるメンバーが必要になってしまう - Typical Uses - Enabling Team が Stream-aligned Team に対して働きかける場合 # 感想 - 開発基盤的なチームの働き方や価値などをイメージできた - 特に自分の中でCynefinの中のComplexの部分はStream Aligned TeamでありComplecatedな部分が支援チームであり、スクラムやDDDの範囲などについてわかりを得た - 特に、支援をする3つのチーム (3つの観点) とそれを提供するコミュニケーション方法に自分の中で名前がついてよかった - Facilitating と Collaboration の具体的なイメージが湧いてないのでその辺も調べていきたい # Ref - [https://deeeet.com/writing/2020/02/06/team-topologies/](https://deeeet.com/writing/2020/02/06/team-topologies/) - [/iki-iki/QRC Team Topologies-ja](https://scrapbox.io/iki-iki/QRC Team Topologies-ja)