見出し画像

チームトポロジーを読んで

チームで開発を効果的に行うためにはどのように設計をするべきかがまとまっている本です。

設計

設計には大きく分けて2種類の設計があります。
システム設計
システムを開発するので、システムの設計をするのは当然ですね!
ソフトウェア設計やアーキテクチャとかのことですね。

組織の設計
組織図やチームにどのような役割を与えるかを設計します。
明確な責任と境界を持つチームにすることで認知負荷を適切に分散させます。
チームトポロジーでメインで扱うのがこの「組織の設計」です。


チームトポロジーの組織設計を理解する時に大切なことはコンウェイの法則です。

コンウェイの法則とは組織のコミュニケーションパスを反映したシステムを作りだすことです。
フロントエンドとバックエンドでチームが分割されていると、システムの設計もフロントエンドとバックエンドが分かれた設計になります。

このコンウェイの法則を利用して、理想的なシステム設計になるように組織を設計することを逆コンウェイの法則と呼びます。(そのままですね笑)

チームトポロジーではチームタイプ(チームの役割)とチームインタラクションモード(コミュニケーションの仕方)に注目します。

チームタイプ(チームの役割)だけでなく、チームインタラクションモード(コミュニケーションの仕方)も考えることがチームトポロジーで効果を上げるためには重要そうだとなと思いました。


チームタイプ

チームタイプはチームの役割ごとにタイプを4つに分類しています。

ストリームアイランドチーム

ストリームとはビジネスや組織のメインの仕事のフローのことです。
noteのストリームは記事を書くこと、記事を読むこと、管理画面で売上を確認することなどになります。
ストリームアイランドチームは組織の根幹になっています。残りのチームタイプはストリームアイランドチームの負荷を減らすために存在しています。
ストリームアイランドチームは初期の要求探索から本番運用まで行うための能力を備えている必要があります。
RPGで例えると剣士ですかね。敵にダメージを与えつつ、敵からの攻撃を防ぐ役割があります。

イネイブリングチーム

イネイブリングを目標達成を支援することと捉えるとしっくりきました。直訳は依存になります。
イネイブリングチームは適切なツール、プラクティス、アプリケーションスタックのエコシステムに関する調査をストリームアイランドチームに伝えます。
チームのメトリクスを計測して、チームに異常がないかや、チームが効率的に働けるように改善を促します。
RPGで例えると白魔道士ですかね。仲間の回復やバフをかけて戦いを有利に進めます。

コンプリケイテッド・サブシステムチーム

コンプリケイテッドは複雑という意味の英語になります。
コンプリケイテッド・サブシステムチームは専門知識が必要となるパーツを開発、保守する責任をもつ。
noteの場合は記事のレコメンドエンジンとかになります。(存在するかはわからんです笑)
一般的には、動画処理、数理モデル。リアルタイム取引裁定アルゴリムなどの担当になります。
PRGで例えると魔法使いですかね。効果的に魔法を敵に当てることができれば、大ダメージを与えることができます。

プラットフォームチーム

チームトポロジーにおけるプラットフォームとは、内部向けシステムのことです。
プラットフォームチームは、ストリームアイランドチームが自律的に仕事を届けられるように手助けします。
一般的には、ログの仕組み、モニタリングシステム、テストツールなどを開発する担当になります。
RPGで例えると武器職人ですかね。パーティーメンバーが装備する武器や防具を作ることができます。タイミングが合えば、戦闘にも参加します。(武器はメイス感ある)


チームタイプだけで4つありました。あと記事は半分です!
チームインタラクションモードは3つです!

チームインタラクションモードはチーム間のコミュニケーションの仕方です。

コラボレーション

コラボレーションとは異なる専門知識と責任を持つチームが、協力して作業することです。
チームの振る舞いとしては、チームとの豊富なコミュニケーションによって経験や新しい知識を得ることができます。
多くの知見を得ることができますが、多くの労力や時間がかかることを受け入れる必要があります。
RPGで例えると2人の合体技ですかね。必殺ゲージを消費するかわりに、大きなダメージを敵に与えることができます。

X-as-a-Service

機能をサービスとして提供することが特徴です。
チームの振る舞いとしてはサービスのユーザー体験を重視します。
せっかく、システムを提供したのに毎回使い方を聞かれると困りますよね。
RPGで例えると飛行艇ですかね。毎回の移動をサービス(飛行艇)でショートカットすることができます。やりたいことがはっきりしている場合は、人とコミュニケーションを取るよりも、使いやすいサービスがある方が効率的ですね。

ファシリテーション

他の多くのチームに支援と能力を提供し、生産性と有効性を高める手助けをします。
新しい技術やトレンドの講義をするイメージです。
チームの振る舞いとしては助け合いの精神を発揮する必要があります。
RPGで例えるならチュートリアルですかね。チュートリアルがあるおかげで初心者でもゲームを楽しめます。ファシリテーションの場合は初心者向け以外にも、シニアエンジニア向けに新しい技術を伝えることもあります。

まとめ

チームトポロジーを読んで、チームタイプとチームインタラクションモードについて整理してきました。ソフトウェア進化のスピードは早いのでそこに追いつくためにも組織のあり方から真面目に考えることが大切ですね。
RPGの例えはチームタイプまではいい感じでしたが、チームインタラクションモードではかなりキツかったです笑。少しでも理解の助けになっていれば幸いです。それでは!

この記事が気に入ったらサポートをしてみませんか?