チーム間連携で定例会を激減させた話

こんにちは。AI・IoTサービス開発部の青木です。

今年度に入ってからOPTiM IoTというプロダクトのチームリーダとして開発を行っています。 新卒入社後初めてのチーム開発 + チームリーダで経験も浅いので、周りのスタッフに助けていただきながら推進しています。

さて、OPTiM IoTでは弊社開発のプラットフォームOPTiM Cloud IoT OSを利用しIoTの強みをよりユーザフレンドリーに体験出来るようなプロダクトとなっているのですが、チーム編成としては完全に別チーム(別部署)なのでチーム間連携が必須な状態となっています。

そこで課題として上げられるのは打ち合わせの増加です

OPTiM Cloud IoT OSチームだけではなく、各種AIサービスにおける共通なインフラ基盤を構築しているインフラチームや、OPTiM IoTにおける「サービス連携機能」*1 により、多くのチームと連携するための打ち合わせが必要となってしまいました。

どのくらい激減したか

既に予定が入っている定例会を50%削減に成功しました!

自由な時間が増えることで作業効率も大幅にアップし、本来時間をかけるべきタスクに時間を割くことができるようになりました。

今回はどのようにして解決したのかを説明していこうと思いますが、これはあくまで "私達のチーム" で成功した事例で、周辺の体制や環境によって大きく変化するものかと思われますので参考程度に見ていただけると幸いです。

課題:打ち合わせが多すぎてタスクが消化できない...

スケジュールを見ると思わずため息が出てしまう程の打ち合わせ。 リモートワークだったとしても四六時中会議通話がつながっていて別議論が挟まるのはなかなかに辛いところです...

詳細を調べてみるとほとんどが定例会になっており、連携チームが増加するたびに定例会が増加していました。

課題:別チームに聞かないと話が進まない(無限ループ)

各チーム間で議論する際によく起こるのがこの現象です。 定例会が悪いというわけではなく、定例会だけでチーム間連携を行おうとしてしまったが故に起こってしまった現象なのかなと思います。

こうなる前に早めに関係者を集めておくべきなのですが、Aチーム定例でしか議題に上がってこない場合が多く、定例会の強みと弱みが同じタイミングで浮上するケースになります。

(画像では既に2week目に突入してしまっています)

では、どう解決する?

解決手法はたくさんあるかと思いますが、その中で一つだけピックアップして

チーム間連携で有名なスクラムのトピックの1つであるScrum of Scrumsを参考にしてみます。

Scrum of Scrums とは、複数のチームが協力して複雑なソリューションを実現する必要があるときに、その連携方法を提供する拡張アジャイル手法です。

この手法に従うことにより、チームは透明化、点検、適合により、複雑な製品を大規模に開発および提供できます。パフォーマンスの高いすべてのスクラムチームメンバーが共通の目標に向かって力を合わせ、信頼と尊敬に基づいて完全に連携することで、特に大きな成果を達成できます。

引用: https://www.atlassian.com/ja/agile/scrum/scrum-of-scrums

大規模スクラムといった形ではありませんが、チーム間連携を行うには良さそうな手法ですね。

今回はこの Scrum of Scrums我流にアレンジして*2解決を図ってみたいと思います。

ちなみに、私達のチームではツールではなく個人との対話を重視しているため、チームメンバーの性格や周辺環境によって進め方を我流アレンジしているものが多く存在します。ですので、

Scrum of Scrumsの本来の方法とは違っていることをご留意ください

本来のScrum of Scrums と混同することを避けるため、ここではSoS*3と呼ぶこととします。

ワーキングアグリーメントを決める

ワーキングアグリーメントとは、チーム内の約束事です。 今回のチームはSoSとして集められたメンバーをチームとして捉えます。

ワーキングアグリーメントを決めることで15minを有意義な時間にします。また、何を議論する場所なのかを会議参加者全員の認識をあわせる事で、よりスムーズに進めることが可能になります。

会議のワーキングアグリーメント

  • 18:00 ~ 18:15 に毎日会議を設ける
  • 各チームの代表者1名*4を選出する
  • 完了の定義を参加者と合意する
  • 議論がある場合はSoS管理表に記入する

SoS管理表のワーキングアグリーメント

SoS管理票とは、SoS の課題が今どの程度存在するかを管理するための表であり、ここはチーム間で共通に書き込みができる場所であればどのようなものでも構わないと思っています。

弊社では非エンジニアの企画チームや営業チームにも参加出来るようにと Microsoft Excel を利用して課題表を作成しました。

f:id:optim-tech:20211004225039p:plain

項目:No,入力日,議論にかかる時間,記入者,現在の担当者,タイトル,ステータス,ステータス詳細,FROM,TO,依頼・課題内容,完了の条件 ,Ticketリンク,対応期限

このシートに記入する時のワーキングアグリーメントを以下のように決めました。

  • このシートはいつ、誰でも記述可能
  • 他チームに関わることを書く
  • 自チームで解決出来る事は基本書かない
    • 各チームのチケット管理システム等で行う
  • 次のSoSでどの程度議論時間が必要かを書く
  • 次のSoSで話したい議題を書き、ステータスをToDoにする
  • ToDoにしたものから順番に議論する
  • 誰から(FROM) どのチーム(TO) に向けてのものかを記述する
    • TOがわからない場合はその旨を記載する
  • 完了の定義: 議題内容において、次アクションでクリアできる状態であれば完了とみなす
    • 例)次回のリリースで対応見込み
    • 例)不明点が明確になり実装により解決見込み
  • 15minを超える場合は、SoSで別会議を決める時間として利用する
  • Doing状態の進捗確認も議論したい時間として扱い、15minを超える場合は別会議を設ける

Let's SoS!!

f:id:optim-tech:20211004225028p:plain

ここからは対話形式でSoSを開催してみます! 登場人物を揃えてみました。(登場人物や議論内容はフィクションです。実際の人物等とは一切関係はございません)

青木: では本日のSoSを開催したいと思います。SoS管理票を確認します。

SoS管理票(見やすいよう項目を減らしています)

日付 議論にかかる時間 FROM TO タイトル ステータス 内容
2021/00/00 1h 開発 太郎さん APIの利用について ToDo ...
2021/00/00 3min 平安氏 キャンさん ○○画面のデザインについて ToDo ...
2021/00/00 不明 太郎さん 青木 ロードマップに関して ToDo ...

最初の議題:15minを超える内容の場合

青木: 最初の議題ですが、これは 議論にかかる時間が1hかかる ので概要だけ説明いたします。

1min程で背景を解説中...

青木: ...なのですが、これに関して詳しい方や呼んでおいたほうがいい方などいらっしゃいますか?

太郎さん: でしたら、キジさんと犬さんを呼んでおいて頂けますか? 明日の○○時なら会議可能です。

青木: ありがとうございます!では会議設定しておきますね。


このようになるべく端的に解説して必要なメンバーだけを集めて会議を開きましょう。SoSは毎日行われるので定例会を待つよりかなり早く議論が始められます。

次の議題: ほかのメンバーも内容を聞いている

青木: 次の議題ですが、平安氏 内容を共有頂けますか?

平安氏: 昨日、デモンストレーションの際にアプリ画面を触っていたのですが、ここの部分のデザインをもう少し見やすいように変更してほしいと顧客からフィードバック頂いたのですがいかがでしょう?

キャンさん: 確かに、、少し見づらいですね。ここの色を変更してみましょうか。

青木: そこの色を変更するより、背景色を濃くして白文字にした方が見やすくないですか?ユーザは屋内で使うことが多いようですし、暗い場所だとこのほうが見やすそうですが...

キャンさん: いいですね! 平安氏はどう思いますか?

平安氏: 良いと思います!顧客のフィードバック時も屋内で若干暗かったですし。

青木: では、その変更を開発側のバックログにチケット化しておきますね!


ここでは FROM, TO が平安氏とキャンさんだけでしたが、開発チームやその他のチームもプロダクトに対して意見を言える場でもあります。 他の方がこのやり取りを聞いている事で改めて他チームへ情報共有する必要もなくなりますし、何よりすぐに合意出来てスピーディーです。

最後の議題

青木: では最後の議題ですが、太郎さん解説お願いできますか?

太郎さん: プロダクトのロードマップで○○の機能追加があると思いますが、その際に叩くAPIに改修が必要なのではと思っています。どのように利用予定ですか?

青木: それは...(カクカクシカジカ)ですが、まだそこの仕様についてはFixできておらず、詳しいものは未定です。

キャンさん: その部分は画面デザインも必要なところですよね?

青木: はい。

平安氏: これは新規機能で、現在ユーザインタビューなどの結果を集計して企画側で議論中なものです。○○日までお待ち頂けますか? キャンさんはこのあたりのデザインについて議論に参加頂きたいので○○日の会議に参加頂きたいです。

青木: 承知しました! 太郎さん、この流れですと○○日後には詳細なフローなどが開発チームで定義出来ている頃ですので、それまでは着手せず待機頂けますか?

太郎さん: 了解です! この場で進捗などを共有いただければ前もって動くことも可能です。

キャンさん: 会議参加の件、承知いたしました。


この場でかなり動いたことがわかりましたね。新規機能の話の進捗に応じてそれぞれのチームが準備を始められるくらい余裕を持つことが出来る環境になりました。定例会で来週まで待っていると急に要望を共有することになってしまい、プラットフォーム開発チームに無理をお願いすることになることも... そうなる前にこの場で共有出来たことはとても有意義です。

このように、時間の使い方を工夫すれば会議をかなり減らしつつ有意義に情報共有ができるようになります!

さいごに

ここまで見ていただいてありがとうございます。これはあくまで一例ですので、このやり方が完璧というわけではありません。2021/10/04現在ではこのようなやり方で進めていますが、ふりかえりなどを通してこの会が本当に必要なものなのか、もっといいやり方が無いかなどを話し合っており日々変化していっています。

もしわたしたちのように、会議が多すぎて辛かったりチーム間連携がうまくいかない時、是非この手法を利用して頂いて、やり方をどんどんアップグレードをしていただければ幸いです!


オプティムではOPTiM Cloud IoT OSの開発、及び利用するアプリケーション開発を行うエンジニアを募集しています。

www.optim.co.jp

*1:Optimal Remote IoTや、Optimal Second Sightなどのサービスと連携する機能を持っています

*2:本来のScrum of Scrumsの手法をチームの目標にコミットするためにアレンジしています

*3:Scrum of Scrumsを弊チームが勝手にアレンジして進めている手法

*4:代表者は必ずリーダでないといけないわけではなく、チームと共有する際にキーマンを1名選出頂く程度で構いません。各チーム内で行われている朝会や定例会でこのオレオレSoSの内容を共有して頂く事が出来れば問題ありません。