Slide 1

Slide 1 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 複数プロダクトの 技術改善・クラウド移行に向き合うチームの フレキシブルなペア・モブプログラミングの実践 XP祭り2024 1 Matsutani Yuki 2024.9.28 ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug

Slide 2

Slide 2 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 本日話すこと ConfEngineより 皆さんはプロダクト開発・技術改善を進める中でどのようにペア・モブプログラミング(以降ペアプロ・モブプロ)を行っていますか? 株式会社ADWAYS DEEEのプロダクト開発組織であるアドテクノロジーディビジョンでは、スクラム開発を行っております。 直近では今年21年目を迎えるアフィリエイトサービスのモダナイゼーションをきっかけとして、各チームペアプロ・モブプロを始めとしたXPのプ ラクティスが活発となっています。 そんな中、私自身はモダナイゼーションに取り組むチームから、プロダクトのクラウド移行を推進するチームへ異動しました。 もともとクラウド移行チームではモブプロで開発する文化が根付いていましたが、チームメンバーが3人から4人に増えたことで、2トラックを分 けてペアプロを開始しました。 4人に増えることで新たな問題点が出てきましたが、チームとしてペアプロ・モブの実施方法を考え、実践することができています。 複数プロダクトの技術改善・クラウド移行に向き合うチームがどのようにペアプロ・モブプロを行っているのかを紹介致します。 https://confengine.com/conferences/xp2024/proposal/20425 2

Slide 3

Slide 3 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 本日話すこと(すごく簡単に) - 徹底的にペア・モブプロやってます! - クラウド移行など、アプリではなくインフラに近い領域で ペア・モブプロやってます! - タスクやリソースによってペア・モブプロを フレキシブルに選択しています! インフラに近い領域でフレキシブルなペア・モブプロを実践 とても良い感じなので、どのように取り組んでいるのかを紹介します! ぜひ良さそうなプラクティスがあれば持ち帰ってください! 3

Slide 4

Slide 4 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug アジェンダ - 自己紹介 - ADWAYS DEEE プロダクト開発組織紹介 - 過去のクラウド移行チームの開発の進め方(チームジョイン前) - 3人→4人チームでの変化(チームジョイン後) - 変化したからこその課題と取り組んだプラクティス - まとめ 4

Slide 5

Slide 5 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 自己紹介 名前: Matsutani Yuki まっちゃん X: @honyanyas(yuki / ほにゃにゃ) 所属: 株式会社ADWAYS DEEE アドテクノロジーディビジョン 技術改善第三ユニット(クラウド移行チーム) リードアプリケーションエンジニア 最近のお仕事: オンプレミスからパブリッククラウドへの移行 Ansible CI/CDパイプライン改善 Amazon Aurora MySQL DBアップグレード アドウェイズエンジニアブログ運営 趣味: YouTube(自主制作アニメ系みます、日々の更新楽しみ) お酒(ウイスキー多め、真夏のハイボールはとても美味しい) 麻雀(アプリ、見る雀、シーズン始まったので追っかけ忙しい) アイコン Xアカウント 5

Slide 6

Slide 6 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 自己紹介 登壇予定: (申込やプロポーザルを出さねば!ツキイチ登壇目指したい!) 登壇実績: ● SLO導入と Datadog SLO Dashboard / JDDUG#5 アドウェイズエンジニアブログで最近書いた記事: ● 「技術広報の集い #3」に参加して、飛び込みLTしてきました ● 技術改善チームの心強いエンジニアメンバーから学んだインボイス対応「攻めの アーキテクチャ」 ● やらかし先生 俺みたいなプロジェクトリーダーになるな!! 〜俺のプロダクトマネジメ ントでの失敗談を聞け〜 ● なぜ崩したシステム設計が事業貢献、仮説検証のしやすさに繋がるのか?最近の 事例から考える 書いた記事 アイコン 6

Slide 7

Slide 7 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 会社紹介 会社名 : 株式会社ADWAYS DEEE(アドウェイズディー) 設立年日: 2023年1月1日(株式会社アドウェイズ 100%子会社) 事業概要: アフィリエイト広告事業 WEBマーケティング事業 メディア開発・運営事業 URL : https://adways-deee.net/ 広告システムを作っています 認知メインの広告(ディスプレイ広告)ではなく 体験メインの広告(アフィリエイト、リワード)を扱っています 7

Slide 8

Slide 8 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ADWAYS DEEE プロダクト開発組織紹介 8

Slide 9

Slide 9 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug プロダクトチームと技術改善チーム 大きく2つのチームに分かれています 9

Slide 10

Slide 10 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug プロダクトチームと技術改善チーム 大きく2つのチームに分かれています - プロダクトチーム - 新規機能・新規プロダクト開発 - 仮説検証・MVP開発 - 技術改善チーム - モダナイゼーション - クラウド移行 - 各種運用(バージョンアップ・ EOL対応・セキュリティ・etc) 10

Slide 11

Slide 11 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チームの紹介・役割 技術改善チーム内に3チームあります 11

Slide 12

Slide 12 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チームの紹介・役割 技術改善チーム内に3チームあります - モダナイズチーム(技術改善第1) - 主にアフィリエイト広告サービス担当 - 別機能のモダナイズに着手中 - 改善Aチーム(技術改善第2) - 主にリワード広告サービス担当 - 最近は新規開発(プロダクトチーム)の動きが多め - クラウド移行チーム(技術改善第3) - 複数サービス担当 - 名前の通りクラウド移行を担当 - 他にも EOL 対応や IaC CI/CD 改善などやってます 12

Slide 13

Slide 13 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug クラウド移行チームの技術スタック(抜粋) アプリからインフラまで幅広い技術 複数サービスを触れるドメイン知識が必要 - インフラ - AWS、Terraform、Ansible、Docker - アプリケーション - Scala、Perl - ドメイン知識 - インプレッション、トラッキング、バッチ、管理画面、レポート 13

Slide 14

Slide 14 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チーム内を異動 開発ロードマップと遷移 14

Slide 15

Slide 15 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チーム内を異動 開発ロードマップと遷移 15

Slide 16

Slide 16 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チーム内を異動 インフラ→アプリ→インフラを渡り歩いています - 〜2024/03:モダナイズチーム合流前の別チーム - インフラ多め - 認知負荷削減、運用負荷軽減のため、 Google Cloudで提供していたAPIをAWSへお引越し - 移行のためにScalaアプリ改修なども実施 - 2024/04:モダナイズチームへ合流 - アプリ中心 - モダナイゼーションに関わる開発・改善を実施 - Go触ってました(Go x TDD x GitHub Copiot) - 2024/05〜:クラウド移行チームへ異動 - インフラ中心 - インフラ・IaC周りの技術強化、クラウド移行をより加速させるために異動(ノリと勢い) - やらなければならないことを消化( EOL対応、IaCパイプライン改善) - 最近クラウド移行を再開中 16

Slide 17

Slide 17 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 補足:アプリ・インフラにおける画面の違い アプリ、インフラでペア・モブしてきたからこその違い 17

Slide 18

Slide 18 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 補足:アプリ・インフラにおける画面の違い アプリ、インフラでペア・モブしてきたからこその違い - アプリ - 基本的にエディタのみを押さえておけば良い - インフラ - エディタ以外にもドキュメントや他ターミナル、設定を押さえる必要がある - 調査することが多いため、見るべきものがアプリよりも多い 18

Slide 19

Slide 19 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 過去のクラウド移行チームの開発の進め方 (チームジョイン前) 19

Slide 20

Slide 20 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 異動前のチーム状況 基本的に3名でのモブプロを実施 - 開発チームは3名 - シニア1名、リード1名、無印1名 - コアタイム(12:00~17:00)はモブプロを実施 - それ以外の時間は職務・個人目標の時間 - 会議がある場合は残ったメンバーでペアプロ(1人のときも) - 主に担当していた開発案件 - GitHub Enterprise へのリポジトリ移行 - ジョブサーバのクラウド移行 - Amazon Aurora MySQL DB Upgrade - 基本的にリモートワーク - Zoomに常駐(溜まり場) - 週1出社 ※地方在住メンバーが居るので全員ではない 20

Slide 21

Slide 21 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug コアタイム(12:00~17:00)はモブプロを実施 1週間のタイムスケジュール 21

Slide 22

Slide 22 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 溜まり場 - 問題 - フルリモートワークになったことでコミュニケーションが希薄に - 出社時のように気軽に聞けない、話せない - テキストコミュニケーションだけの限界 - 対応 - Zoomで溜まり場といういつでも入れる部屋を用意 - 基本的に作業時は溜まり場で作業 - 効果 - 相談、依頼などがしやすくなる - 雑談も生まれる - 業務時間外に問題が発生しても「溜まり場集合ね」ですぐに集まれる 22

Slide 23

Slide 23 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug モブプロの進め方 - 1人がタイピスト(ドライバー)、2人はその他モブ(ナビゲーター) - タームごとに最初は目標決め、最後にふりかえりを簡単に実施 - Slack チャンネルに記載 - 1タームごと(区切りのいいタイミングや時間)にローテーション - 3人なので必ず1日1回はタイピスト(ドライバー)になる - 必ずしも役割にあてはめるのではなく、調査時は誰もがタイピスト(ドライバー)であ り、その他モブ(ナビゲーター) インフラ作業やクラウド移行において、ドメイン知識が必要 故に調査する機会が多い 23

Slide 24

Slide 24 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 3人→4人チームでの変化 (チームジョイン後) 24

Slide 25

Slide 25 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 異動後のチーム状況 基本的に2名ずつのペアプロを実施 - 開発チームは4名 - EM1名(リードからスライド)、シニア1名、リード1名(自分)、アソシエイト1名(今年入社) - コアタイム(11:30~17:00)はペアプロを実施 - それ以外の時間は職務・個人目標の時間 - 会議がある場合は残ったメンバーでペアプロ(1人のときも) - 会議体の変更 - 同期的なコミュニケーションを増やす - スタンドアップミーティングの開催 - レトロスペクティブの実施 - 基本的にリモートワーク - 他チームとあわせて Discord へ移行、他チームの状況も見えるように(溜まり場) - 週1出社 ※地方在住メンバーが居るので全員ではない 25

Slide 26

Slide 26 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タイムスケジュール 同期的なコミュニケーションを増やすためにスタンドアップ、レトロを追加 26

Slide 27

Slide 27 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ペアプロの進め方 - プランニングでペア決め・スタンドアップミーティングで時間・ペア確認 - 属人化を防ぐためのペアローテーションを実施 - タームごとに最初は目標決め、最後にふりかえりを簡単に実施 - Slack チャンネルのスレッドに記載 - 1タームごと(50分作業、10分休憩)にローテーション - 調査時は2人で一緒に調査する 27

Slide 28

Slide 28 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 属人化を防ぐために毎日ペアローテーション 同じペア同士だと属人的になるため、ペアをローテーションすることでチーム全体でコン テキストを持つようにする 28

Slide 29

Slide 29 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 属人化を防ぐために毎日ペアローテーション 29

Slide 30

Slide 30 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 属人化を防ぐために毎日ペアローテーション 30

Slide 31

Slide 31 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 属人化を防ぐために毎日ペアローテーション 31

Slide 32

Slide 32 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 属人化を防ぐために毎日ペアローテーション - Day1 プランニング - ペア決め - Day2 - 上のメンバー同士を入れ替える - 下のメンバーから上のメンバーへコンテキストが引き継がれる - Day3 - 下のメンバー同士を入れ替える - 上のメンバーから下のメンバーへコンテキストが引き継がれる - Day4 - 全員がコンテキスト持っている状態に - ペアの固定化を避けるため斜めも入れ替えるときも(ペア決め時に調整) 32

Slide 33

Slide 33 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タームごとの目標・作業ログ・ふりかえり 毎日朝作業ログ用のスレッドが用意される(運用などは手動で作るケースも) 33

Slide 34

Slide 34 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タームごとの目標・作業ログ・ふりかえり スレッドに目標を書く 34

Slide 35

Slide 35 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タームごとの目標・作業ログ・ふりかえり 適宜作業ログを残す、ドキュメント、参考リンクを貼る 35

Slide 36

Slide 36 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タームごとの目標・作業ログ・ふりかえり スレッド上にふりかえりを書く(よかったところ、改善点、Try) 36

Slide 37

Slide 37 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 休憩は大事 集中するとずっと作業しがち...... 集中しすぎたゆえに抜け漏れが増えてくるという問題も発生 50分は集中して作業、10分休憩のサイクルを繰り返すようにした ※定期的にストレッチ・エクササイズも取り入れてます 37

Slide 38

Slide 38 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug チーム状況 before / after ジョイン前 ジョイン後 メンバー 3名 4名 進め方 3名でモブプロ 2名・2名ペアプロ コアタイム 12:00~17:00 11:30~17:00 サイクル 区切りがいいタイミング 50分作業・10分休憩 38

Slide 39

Slide 39 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 変化したからこその課題と 取り組んだプラクティス 39

Slide 40

Slide 40 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 目指したいこと - チームとして最適な体制をその日のリソースに合わせて考えたい - お休みや職務などでどうするべきが良いのか - シンプルな作業であってもペア・モブで動くべきなのか - リソースをかけるべきなのか - アウトプット量を維持・増やす - 人が増えたから、トラックが増えたからアウトプットは増えるよね 40

Slide 41

Slide 41 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ペアプロができない問題 お休みや会議などで 3 人になってしまうタイミングがある - 悩みポイント - 2トラックのままで進めるのか - 1トラックで進めるのか - 2トラック(2人ペア・1人ソロ)の場合 - Pros - アウトプット量を維持できる - Cons - コンテキスト引き継ぎ難易度が上がる - 1トラック(3人モブ) - Pros - 参加した全員がコンテキストを持てる - Cons - アウトプット量が減る - 参加していないメンバーのコンテキスト引き継ぎが発生する 41

Slide 42

Slide 42 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug チーム内でトレードオフスライダーを実施 42

Slide 43

Slide 43 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug チーム内でトレードオフスライダーを実施 運用案件が進まない、ながーく着手していることでコンテキストを忘れてしまう問題が あった チームとして何を大事にしたいのか改めて全員で認識合わせをした 納期、品質を大事にしよう! → リソース最適化に向けた動きを行い、運用案件を集中して終わらせた 43

Slide 44

Slide 44 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タスク特性によってペア・モブを使い分ける Pointing 説明 実際に発生したタスクの種類例 (イメージ) 0 既にできている、作業は不要 先行して行っていたこと 別チームが行っていたこと 1 ソロでも良い 知っているからできそう 作業手順や内容が明確 単純な作業(lint警告撲滅) 2 調べたらできそう はじめて着手するが進め方のイメージがある 調査・設計 3 必ずモブ わからない ※普段はつかない プロジェクトのキックオフ ペンディングしていた案件の着手 あまりにも大きすぎる変更 不確実高いものはモブでやろう 44

Slide 45

Slide 45 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タスク特性によってペア・モブを使い分ける モブで進めるのが良いタスク、ソロで進めるのが良いタスクがある - モブで進めるのが良いタスク - 不確実性が高いもの( Pointngが高い) - ソロで進めてもわからない、不明点があるもの - チーム全体で意思決定が必要なもの - ソロで進めるのが良いタスク - 不確実性が低いもの( Pointngが低い) - 明確にやることが決まっている - シンプルな作業 45

Slide 46

Slide 46 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ときには時間ごとのペアローテーション 46

Slide 47

Slide 47 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ときには時間ごとのペアローテーション より効率的に進めるために時間単位のローテーションも実施 - おやすみがひとり - 11:00~12:00 - 3人でモブを実施 - 12:00~13:00 - 1人が先行して実施 - 他2人は会議 - 14:00~15:00, 15:00~16:00, 16:00~17:00 - ペアローテーション! 47

Slide 48

Slide 48 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug プラクティスとして取り組んだ結果 フレキシブルにペア・モブを使い分ける開発チームとなった - チームとして最適な体制をその日のリソースに合わせて考えることができる - タスクの特性、リソースを元にペア・モブを使い分け - ひとりになるときがあってもローテーションをする - ローテーションをするので必ずコンテキストを引き継ぐことができる - シンプルな作業だったらみんな居る状態でソロ作業をすることもある - 溜まり場だからおやすみ・会議以外のメンバーは一緒にいる - 人数が減ってもアウトプット量を大きく減らさない - 2トラックを維持 48

Slide 49

Slide 49 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug まとめ 49

Slide 50

Slide 50 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ペアプロ・モブプロの過程の変化 常に取り組んでいるからそこ、今も変化している ジョイン前 ジョイン後 現在 メンバー 3名 4名 4名 進め方 3名でモブプロ 2名・2名ペアプロ 適宜ペア・モブを 使い分け コアタイム 12:00~17:00 11:30~17:00 10:00~17:00 サイクル 区切りがいいタイミング 50分作業・10分休憩 50分作業・10分休憩 50

Slide 51

Slide 51 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ペアプロ・モブプロの過程の変化 常に取り組んでいるからそこ、今も変化している 51

Slide 52

Slide 52 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug インフラに近い領域でのフレキシブルなペア・モブプロを実践 行っていたプラクティス - 溜まり場 - タームごとの目標設定、ふりかえり フレキシブルにするためのプラクティス - ペアローテーション - トレードオフスライダー - リソースを元にしたペア・モブプロの選択 - タスクの特性を元にしたペア・モブプロの選択 結果 - ペアのローテーションによって 属人化を無くし、チームで対応 ができる - 人数が少ないときでも アウトプット量を大きく減らさない - 不確実性が高いときはチームとして動き 、認識を揃えながら進める 52

Slide 53

Slide 53 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 🎉ペアプロ・モブプロ最高!🎉 53

Slide 54

Slide 54 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ご静聴ありがとうございました! 54

Slide 55

Slide 55 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug このあとCTO大曲が発表します! 15:00~ Track G 『多様性のあるプロダクトチームを目指した共創の3年間の変化』 こんなことが聞けます - プロダクトチームの組織設計の参考 - 多様性のあるチームでの課題に対する解決策の事例 - マインド形成とプロセスづくりのバランス判断(苦悩に近い内容) https://confengine.com/conferences/xp2024/proposal/20495/3 55

Slide 56

Slide 56 text

©ADWAYS DEEE Inc. ハッシュタグ: #xpjug XPの取り組みについて ぜひアドウェイズエンジニアブログもご覧ください! https://blog.engineer.adways.net/archive/category/XP 56