Upgrade to Pro — share decks privately, control downloads, hide ads and more …

複数プロダクトの技術改善・クラウド移行に向き合うチームのフレキシブルなペア・モブプログラミング...

yuki
September 28, 2024

複数プロダクトの技術改善・クラウド移行に向き合うチームのフレキシブルなペア・モブプログラミングの実践 / Flexible Pair Programming And Mob Programming

yuki

September 28, 2024
Tweet

More Decks by yuki

Other Decks in Programming

Transcript

  1. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 本日話すこと ConfEngineより 皆さんはプロダクト開発・技術改善を進める中でどのようにペア・モブプログラミング(以降ペアプロ・モブプロ)を行っていますか? 株式会社ADWAYS DEEEのプロダクト開発組織であるアドテクノロジーディビジョンでは、スクラム開発を行っております。

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

    ペア・モブプロやってます! - タスクやリソースによってペア・モブプロを フレキシブルに選択しています! インフラに近い領域でフレキシブルなペア・モブプロを実践 とても良い感じなので、どのように取り組んでいるのかを紹介します! ぜひ良さそうなプラクティスがあれば持ち帰ってください! 3
  3. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug アジェンダ - 自己紹介 - ADWAYS

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

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

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

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

    新規機能・新規プロダクト開発 - 仮説検証・MVP開発 - 技術改善チーム - モダナイゼーション - クラウド移行 - 各種運用(バージョンアップ・ EOL対応・セキュリティ・etc) 10
  8. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 技術改善チームの紹介・役割 技術改善チーム内に3チームあります - モダナイズチーム(技術改善第1) -

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

    - AWS、Terraform、Ansible、Docker - アプリケーション - Scala、Perl - ドメイン知識 - インプレッション、トラッキング、バッチ、管理画面、レポート 13
  10. ©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
  11. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 補足:アプリ・インフラにおける画面の違い アプリ、インフラでペア・モブしてきたからこその違い - アプリ -

    基本的にエディタのみを押さえておけば良い - インフラ - エディタ以外にもドキュメントや他ターミナル、設定を押さえる必要がある - 調査することが多いため、見るべきものがアプリよりも多い 18
  12. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 異動前のチーム状況 基本的に3名でのモブプロを実施 - 開発チームは3名 -

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

    - 出社時のように気軽に聞けない、話せない - テキストコミュニケーションだけの限界 - 対応 - Zoomで溜まり場といういつでも入れる部屋を用意 - 基本的に作業時は溜まり場で作業 - 効果 - 相談、依頼などがしやすくなる - 雑談も生まれる - 業務時間外に問題が発生しても「溜まり場集合ね」ですぐに集まれる 22
  14. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug モブプロの進め方 - 1人がタイピスト(ドライバー)、2人はその他モブ(ナビゲーター) - タームごとに最初は目標決め、最後にふりかえりを簡単に実施

    - Slack チャンネルに記載 - 1タームごと(区切りのいいタイミングや時間)にローテーション - 3人なので必ず1日1回はタイピスト(ドライバー)になる - 必ずしも役割にあてはめるのではなく、調査時は誰もがタイピスト(ドライバー)であ り、その他モブ(ナビゲーター) インフラ作業やクラウド移行において、ドメイン知識が必要 故に調査する機会が多い 23
  15. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 異動後のチーム状況 基本的に2名ずつのペアプロを実施 - 開発チームは4名 -

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

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

    ペア決め - Day2 - 上のメンバー同士を入れ替える - 下のメンバーから上のメンバーへコンテキストが引き継がれる - Day3 - 下のメンバー同士を入れ替える - 上のメンバーから下のメンバーへコンテキストが引き継がれる - Day4 - 全員がコンテキスト持っている状態に - ペアの固定化を避けるため斜めも入れ替えるときも(ペア決め時に調整) 32
  18. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug チーム状況 before / after ジョイン前

    ジョイン後 メンバー 3名 4名 進め方 3名でモブプロ 2名・2名ペアプロ コアタイム 12:00~17:00 11:30~17:00 サイクル 区切りがいいタイミング 50分作業・10分休憩 38
  19. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug 目指したいこと - チームとして最適な体制をその日のリソースに合わせて考えたい - お休みや職務などでどうするべきが良いのか

    - シンプルな作業であってもペア・モブで動くべきなのか - リソースをかけるべきなのか - アウトプット量を維持・増やす - 人が増えたから、トラックが増えたからアウトプットは増えるよね 40
  20. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug ペアプロができない問題 お休みや会議などで 3 人になってしまうタイミングがある -

    悩みポイント - 2トラックのままで進めるのか - 1トラックで進めるのか - 2トラック(2人ペア・1人ソロ)の場合 - Pros - アウトプット量を維持できる - Cons - コンテキスト引き継ぎ難易度が上がる - 1トラック(3人モブ) - Pros - 参加した全員がコンテキストを持てる - Cons - アウトプット量が減る - 参加していないメンバーのコンテキスト引き継ぎが発生する 41
  21. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug タスク特性によってペア・モブを使い分ける Pointing 説明 実際に発生したタスクの種類例 (イメージ)

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

    不確実性が高いもの( Pointngが高い) - ソロで進めてもわからない、不明点があるもの - チーム全体で意思決定が必要なもの - ソロで進めるのが良いタスク - 不確実性が低いもの( Pointngが低い) - 明確にやることが決まっている - シンプルな作業 45
  23. ©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
  24. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug プラクティスとして取り組んだ結果 フレキシブルにペア・モブを使い分ける開発チームとなった - チームとして最適な体制をその日のリソースに合わせて考えることができる -

    タスクの特性、リソースを元にペア・モブを使い分け - ひとりになるときがあってもローテーションをする - ローテーションをするので必ずコンテキストを引き継ぐことができる - シンプルな作業だったらみんな居る状態でソロ作業をすることもある - 溜まり場だからおやすみ・会議以外のメンバーは一緒にいる - 人数が減ってもアウトプット量を大きく減らさない - 2トラックを維持 48
  25. ©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
  26. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug インフラに近い領域でのフレキシブルなペア・モブプロを実践 行っていたプラクティス - 溜まり場 -

    タームごとの目標設定、ふりかえり フレキシブルにするためのプラクティス - ペアローテーション - トレードオフスライダー - リソースを元にしたペア・モブプロの選択 - タスクの特性を元にしたペア・モブプロの選択 結果 - ペアのローテーションによって 属人化を無くし、チームで対応 ができる - 人数が少ないときでも アウトプット量を大きく減らさない - 不確実性が高いときはチームとして動き 、認識を揃えながら進める 52
  27. ©ADWAYS DEEE Inc. ハッシュタグ: #xpjug このあとCTO大曲が発表します! 15:00~ Track G 『多様性のあるプロダクトチームを目指した共創の3年間の変化』

    こんなことが聞けます - プロダクトチームの組織設計の参考 - 多様性のあるチームでの課題に対する解決策の事例 - マインド形成とプロセスづくりのバランス判断(苦悩に近い内容) https://confengine.com/conferences/xp2024/proposal/20495/3 55