常に喋っている!? TanzuLabs流XPで「徹底的な同期コミュニケーション」を体験して得たものとは

初めまして!アドプラットフォーム事業で働くリードアプリケーションエンジニアのshoです。

最近アドテクでは大きな挑戦として、去年の12月から3月末までの4ヶ月間TanzuLabs(以下Labs)様と一緒に20周年でもあるJANetのモダナイゼーションを行っていました。

私はこのプロジェクトの初期メンバーとして参加させて頂き、非常に楽しく刺激的な日々の中で、たくさんのことを学ぶことができました。
今回はその学びの中から、「徹底的な同期コミュニケーション」をテーマにお話しさせていただきます。

XP(エクストリームプログラミング)のValue: コミュニケーション

今回のプロジェクトではLabsが推進する開発手法「XP(エクストリームプログラミング)」を取り入れました。
XPには5つのValueがあり、その中の一つに「コミュニケーション(communication)」があります。

皆さんが想像するコミュニケーションとはどんなものがあるでしょうか?
会話やチャット、メールなど想像しやすいものから、ドキュメントやコードのコメントなどもコミュニケーションの一種だと言えると思います。

それでは、XPではどんなコミュニケーションを重要視しているのでしょうか?
Kent beckの著書によるとXPでは会話、つまり 「同期コミュニケーション」を重要視しています。

大量のドキュメントはコミュニケーションを目的としたものだが、会話も同じ目的を持っている。 ではどちらがより効果的位なのだろうか?その答えは文脈によって決まる部分もあれば、原則によって決まる部分もある。 この場合は、人間の基本的な欲求である「つながり」が会話によって満たされること、その他の条件が等しければ、会話の方が好ましいコミュニケーション方法であることが、人間性の原則によって示されている。

出典:エクストリームプログラミング 第5章「原則」

「そんなの当たり前のことじゃん」
「ウチもコミュニケーションはちゃんと取れているよ」

と思う方もいるでしょう。私自身そう思っていましたし、業務でも適切にコミュニケーションを取れていると思っていました。

ただ今回Labsのメンバーと一緒に働く中で、もう一段二段上のコミュニケーションを知り、これを体験することができました。
どんな体験をしたのか、どんなことを学んだのか、振り返ってみていこうと思います、

実際にやったこと・学んだこと

morning standup

「Good morning!」
朝は全員集まってのstandup(いわゆる朝会)から始まります。
(今回はチームメンバーに英語圏の方が2名いたので、standupは英語で行っていました。)

一人一人、「昨日やったこと」「昨日学んだこと」「今日やること」を話していきます。
学びの共有は他メンバーへの知見の共有だけでなく、自身への知見・スキルの定着にも繋がるのでオススメです!

次に「Parking lot」を見ていきます。
これは掲示板のようなもので、解決できていない困りごと・モヤモヤや、全員に相談・シェアしたいことなどを書いておく場所です。
私たちのチームではこれが特に効果的で、これまでは週次の振り返りなどで問題の顕在化・解決を行っていましたが、このParking lotを使うことで問題が小さいうちに早期に解決されることが多くなりました。

その後「Action Item」を確認します。 これは後述のレトロで出た改善のためのアクションなどの進捗を追うためのものです。 別途JIRAなどのタスク管理ツールも使っていますが、そちらではストーリーなどのチケット管理のみ行っていました。

最後に今日のスケジュールを確認して、一本締めをして終わります。
よーおっ!(パンッ!)

ペアプログラミング

開発フェーズでは、standupが終わったらペアを組んでペアプログラミングを行います。(奇数の場合はモブにしたり1人だけソロワークにしたりします)
ペアプロの詳細はそれだけで1つの記事にできるレベルなのでここでは割愛しますが、コミュニケーションを取っていることで生まれるメリットを挙げると以下のようなものがあります。

  • バグや技術的負債の早期発見、解消
  • より良いシステム設計
  • わかりやすいコード
  • 互いに学び合うことができる
    • シニアエンジニアがジュニアエンジニアから学ぶこともよくあります!
  • 目の前のタスクに集中できる
  • 手戻りの減少
  • 属人性の解消
  • 共通理解・共通言語を増やす
  • 対人スキルの向上
  • モチベーションの向上

今回ペアプロはリモートで行うことがほとんどで、通話ツールはDiscordを使いました。
このペアプロ x Discordの組み合わせは非常に相性が良く、各メンバーから「他メンバーへの相談がやりやすい」という声が多くでました。理由を下記に挙げます。

  • Discordだと他チャンネルの状況(誰がいるか、休憩しているか)がわかりやすい
  • 常に喋っているから、誰かが相談しに来ても集中が途切れるということがない。逆もまた然り。

ペアプロ中は基本的にずっと喋っているので、1日5~6時間やっているともうクタクタになりますが、お互いがソロで同じ時間働くよりも大きな恩恵があると確信しています。
もちろんペアプロ始めたての段階では、それまでのソロワークよりも生産性は落ちることもあります。
しかし、ペアプロで重要視しているのは短期的ではなく長期的な生産性です。目先の効率だけに拘りすぎないようにしましょう。

色んな人とペアをすることでたくさんの学びが得られるので、ぜひ皆さんも周りの色んな人とペアプロしてみてください!

休憩:卓球(オフライン)、エクササイズ(オンライン)

ペアプロはとても疲れるので、適度な休憩が大切です。
私たちは休憩中によく、卓球をしてリフレッシュしていました。

皆さん休憩中なのに仕事のことを考えてしまったり、PCを触ってしまうなんてことありませんか??
卓球台に向かうことで自然と仕事場から離れて、仕事のこと一旦忘れることができます。
プレイする中で自然と会話が発生し、みんなが笑顔にもなるのでとてもリフレッシュできますし、チームの関係値も上がります!


日本語・英語入り混じりながら楽しく卓球しています!

自社のオフィスやリモートの環境では、卓球の代わりにエクササイズを行っていました。
YouTubeでエクササイズの動画を流しながら、一緒に運動をすることでリフレッシュしていました。
たまに激しめのダンス動画を流したり、ちょっとしたゲームをみんなでプレイしたり、リモートでも楽しく休憩を取ることができました。


YouTubeの動画を見ながらみんなでエクササイズ!

心理的安全性Workshop

同期コミュニケーションだけの話ではありませんが、チームで活動する上で極めて重要なのが「心理的安全性」です。

心理的安全性とは、対人関係においてリスクある行動を取ったときの結果に対する個人の認知の仕方、つまり、「無知、無能、ネガティブ、邪魔だと思われる可能性のある行動をしても、このチームなら大丈夫だ」と信じられるかどうかを意味します。
出典:Google rework「効果的なチームとは何か」を知る

もし心理的に安全な環境を作れていない場合、チームの生産性は向上せず、日々の活動の中でメンバーは少しづつストレスを蓄積していってしまいます。
心理的安全性を高く維持するために大切なことと、それを実現するための取り組みや考えた方を下記に挙げます。

  • チーム一人一人がしっかり意見を言える機会を作りましょう。
    • standupで全員が話す、レトロ、ペアプロなど
  • できるだけ色んなメンバーの意見を聞けるように、ファシリテートを工夫しましょう。
    • 全員の意見が一致することが心理的安全性なのではありません。
  • 長所や良いと思ったことは、積極的に褒めましょう。
    • 1on1でも良いですが、みんなの前で褒めることも大切です。逆に改善点はみんなの前ではなく、1on1などを活用してフィードバックを行いましょう。
  • 仕事の会話だけにならないように、卓球やエクササイズなどで楽しくコミュニケーションがとれる場を作りましょう。
  • 常に相談し合える環境を作りましょう。
    • 例)Discordに全員入っておき、他の人にいつでも相談できるようにする

レトロスペクティブ

週の最後には、レトロスペクティブ(振り返り)を行います。
レトロのやり方にはKPT・YMTなど様々な手法がありますが、私たちは「Good(良かったこと)」「Wondering(悩んでいること・モヤモヤしていること)」「Bad(良くなかったこと)」の3つのカテゴリで行いました。

正直手法自体はなんでもよく、チームや会社にあった手法で問題ありません。
ただし、どの手法でも取り入れて欲しいなと思うのが下記の点です。

  • Goodで始まりGoodで終わりましょう
    • レトロの最初と最後はGood(ポジティブ)な付箋の話題にして、気持ちよく終われるようにしましょう!
  • 投票を行い、気になった付箋を中心に触れるようにしましょう
    • チームの人数によっては付箋が多すぎる場合があります。優先順位をつけるために投票を行い、重要なものから話すようにしましょう!
  • 色んなメンバーから意見が拾えるように、ファシリテートを工夫しましょう。
  • Actionable(行動可能な) アクションアイテムを出しましょう
  • 雰囲気よくやりましょう!
    • お菓子や飲み物を用意する、BGMを流す、など工夫をして楽しく行いましょう!

これまでのチーム・PJでは、レトロで問題の付箋がたくさん出てきたり、ネガティブな話題に対して議論が白熱することが多くありました。
一方でこのPJでは、レトロでたくさんの問題が出てきたり、クリティカルな課題が出てくることはほとんどありませんでした。
これは、日々のstandupやペアプロで問題が早期発見・解消されていたためだと思います。
逆に、レトロで根深い問題が多く出てくるチームは日々のコミュニケーションが不十分な可能性があると思っています。
皆さんのチームのレトロはいかがでしょうか?ぜひ参考にしてみてください!

全員同席(sit together)

XPの主要プラクティスの1つに「全員同席(sit together)」があります。 これは、チームメンバーが物理的に同じ場所にいることの重要性を強調するものです。

今回私たちはオフライン・オンライン両方の働き方を実践しましたが、振り返ってみてもオフラインでの対面のコミュニケーションに勝るものはありませんでした。
コロナ禍によってリモートワークが世の中的に主流となってはいますが、徹底した同期コミュニケーションを実現するならば、最低でも週に1,2回は対面での共同作業を行うのが良いでしょう。
PJやチームの初期段階においては、1週間〜1ヶ月などの期間を設けて毎日対面で業務を行うのも良いと思います。


色んな意味でsit togetherな様子

兼業の排除

ここまで挙げた同期コミュニケーションのプラクティス・考え方を実践するためには、チームメンバーが常に一緒に居られる環境を用意する必要があります。
しかし、「シニア層やマネージャー職種のメンバーなどは掛け持ち(兼業)をしていて常に一緒には居られない。だからSlackなどの非同期コミュニケーションを活用している。」という悩みはどこの企業・チームでもあるのではないでしょうか。

弊社でも同様の課題がありますが、本PJを通して兼業は極力排除すべきという方針を会社として強く持つことになりました。

実際このPJでは各メンバーがこれまでの業務を一時的に引き継ぐなどして、ほぼ完全に兼業ゼロの状態を作りました。
その結果全員がPJに集中し、一緒にいることでコミュニケーションが円滑に進み、クリティカルな問題はほぼなくスムーズにリリースまで進むことができました。
もし兼業状態のままこのPJに臨んでいたら、知見の共有もされずビジネスの理解も薄いまま実装だけ行い、リリース後にポツポツとバグによる問題が発生する、なんて未来になっていたかもしれません。

最後に、Labsの方が残してくれた兼業に対する名言で締めくくりたいと思います。

「兼業が、バグを生む」

まとめ

「まじで常に喋ってるじゃん」
こう思われましたか?本当に常に喋っています。

こうした文化で働いてみた結果、私たちが得たものは以下のようなものです。

  • メンバーの相互のスキルアップ
  • 属人性の解消
  • 新規メンバーの受け入れが容易になり、立ち上がりも早い
  • メンバー間の関係値の向上
  • プロダクト品質の向上
  • 根深い問題になる前の解消(≒技術的負債を溜めない)

さらに、改めて大切なポイントをまとめておきます。

  • 毎日コミュニケーションを取り、問題の早期発見・解消ができるようにしましょう
    • standup、parking lot、レトロなどを活用しましょう
  • ペアプロを活用してコミュニケーションを活性化し、チームの生産性を向上させましょう
  • 適度に休憩を取り、良いコミュニケーションが持続できるようにしましょう
    • 最初は疲れるので多めに取るようにしても良いでしょう
  • 兼業を可能な限り排除し、チームメンバーが常に一緒にいられる環境を作りましょう
  • リモートだけではなく、対面でのコミュニケーションも積極的に行いましょう

また、お読み頂いた方の中にはもしかしたら懐疑的な見方をされている方もいるかと思います。
良くある否定的な意見とそれに対する回答を最後にまとめておきます。

  • 「めっちゃ疲れるんじゃない?」
    • はい、めっちゃ疲れます。そのためチームのコアタイムは1日7時間にしています。また、休憩時間もしっかり取るようにしています。
  • 「非同期コミュニケーションはダメなの?」
    • そんなことはありません。有名どころだとGitLabなど、非同期コミュニケーションを重視している企業も存在します。どちらを重視するかは企業やチームの相性などが関連するでしょう。また 「徹底できるか」 が1つのキーポイントになります。
  • 「ソロワークだと集中状態、いわゆるゾーンに入って作業できるけど、常に喋っていたらできなくない?」
    • ソロワークにゾーンがあるように、ペアワーク(同期コミュニケーションでの仕事)にもまた違ったゾーンがあります。もしペアでゾーンに入ることができたら、スムーズなコミュニケーションとかけ合わさった知見でより高いパフォーマンスが出せるでしょう。

いかがだったでしょうか?
私たちのやり方が全て100%正しいとは限りません。
ですがもし何か参考になったり、取り入れたいと思った要素・プラクティスがあったらぜひチャレンジしてみてください!
(一気に全てをやろうとするのではなく、1つ1つ小さく取り入れてみるのをオススメします!)