$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームでモブプログラミングを経験して得られたもの / Hatena Engineer Semi...
Search
mds_boy
June 27, 2024
0
650
チームでモブプログラミングを経験して得られたもの / Hatena Engineer Seminar #30
Hatena Engineer Seminar #30 チーム開発編
mds_boy
June 27, 2024
Tweet
Share
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Embracing the Ebb and Flow
colly
88
4.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Designing for Timeless Needs
cassininazir
0
93
KATA
mclloyd
PRO
33
15k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
68
The SEO identity crisis: Don't let AI make you average
varn
0
36
It's Worth the Effort
3n
187
29k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
Transcript
チームでモブプログラミング を経験して得られたもの id:mds_boy 2024/06/27 Hatena Engineer Seminar #30 1
自己紹介 2 • id:mds_boy • 2023年入社 • Webアプリケーションエンジニア • Mackerelチーム所属
話すこと 3 • 当初の課題感 • モブプログラミングとは • モブプログラミングの実施 • まとめ
4 当初の課題感
前提:開発体制 5 • Mackerelの、とある新機能の開発チーム ◦ アプリケーションエンジニア3~4人 ▪ うち2人は(当時)入社数ヶ月以内 ◦ 基本的にフルリモート
◦ 細かい仕様は作りながら決めていく
課題感 6 • 開発が思うように進まない ◦ 手が止まる要因 ▪ コードベースへの慣れ ▪ 仕様の理解、不確定な部分
→ モブプログラミング、やってみよう!
7 モブプログラミングとは?
モブプログラミングとは? 8 • 3人以上の人々が1台のコンピューター の前に座って協力しながら問題を解決 していくこと[1] ◦ モブプロ、モビングなどと略される チームでプログラミングを しているイラスト
[1] Mark Pearl (2018). Code with the Wisdom of the Crowd: Get Better Together with Mob Programming. Pragmatic Bookshelf. (マーク・パール 長尾高弘 (2019) モブプログラミング・ベストプラクティスソフトウェアの品質と 生産性をチームで高める)
モブプログラミングにおける役割 9 • ドライバー(タイピスト)👦 • ナビゲーター(モブ)👧👨🧑
モブプログラミングにおける役割 10 • ドライバー(タイピスト)👦 ◦ 1台のコンピューターに入力、操作をする人 ▪ ドライバーの操作する画面をみんなで見ることになる ◦ 同時に1人だけ
モブプログラミングにおける役割 11 • ナビゲーター(モブ)👧👨🧑 ◦ ドライバーに指示を出したり、自分の考えを共有する人 ◦ 基本的に、直接は入力を行わない ◦ ドライバー以外全員
12 モブプログラミングの実施
導入前の期待 13 • メンバー間で知識の共有が進むこと ◦ コードベース、仕様など ◦ いわゆるスキルトランスファー • 一定のペースで作業が進むこと
◦ 全員が一つのタスクに取り組むことになる
どうやったか 14 • ドライバーが画面を共有 ◦ ナビゲーターはその画面を見て会話する ◦ ドライバーは交代制 • VSCodeのLive
Shareなども活用 ◦ ナビゲーターが手元でソースコードを見られる
どうだったか 15 • 不定期で「モブプロのふりかえり」を行い、 確認した ◦ いわゆる Good, Keep, Problem,
Try
ふりかえり 16 • Good:事前の期待通りの効果が得られた ◦ メンバーのコードベースへの理解が進んだ ◦ 作業も一定のペースで進めることができた
ふりかえり 17 • Good:事前の期待以外の効果も得られた ◦ 実装、仕様の考慮漏れに気付きやすい ◦ 会話、議論の機会が増える ◦ 仕掛かり(WIP)タスクが減る
ふりかえり 18 • 実装、仕様の考慮漏れに気付きやすい ◦ コードレビュー前に気付ける ▪ レビュー前にレビューが行われているようなもの ◦ 仕様についての疑問が気軽に交わされる
ふりかえり 19 • 会話、議論の機会が増える ◦ 他のメンバーのことを知る ◦ 他のメンバーの「問題解決のための思考法」を知る ◦ 便利tipsを知れる
▪ 人の作業をまじまじ見ることはなかなかない
ふりかえり 20 • 仕掛かり(WIP)タスクが減る ◦ フロー効率を重視した開発 ◦ 現在進行中のタスクが1つだけになる ▪ 状況がわかりやすい
◦ タスク同士の依存関係による待ち、競合が起こらない
ふりかえり 21 • Problem ◦ 交代のタイミングが難しい ◦ 疲れやすい ◦ ドライバーの手が止まってしまう
◦ 会話だけで完結すると、テキストに残りづらい ◦ 個人のタスクを進める時間が取りにくい ◦ 比較的容易なタスクでも、全員の時間を使ってしまう → Try を出す
ふりかえり 22 • Problem → Try (1/2) ◦ 交代のタイミングが難しい ▪
→ 交代を幅のある時間制に ◦ 疲れやすい ▪ → 交代時に休憩を挟む ◦ ドライバーの手が止まってしまう ▪ → 今何をしようとしているか、何を考えているか、意識して 声に出してもらう(実況スキル)
ふりかえり 23 • Problem → Try (2/2) ◦ 会話だけで完結すると、テキストに残りづらい ▪
→ 意識してテキストに残す • 声を上げるのもナビゲーターの仕事 ◦ 個人の時間が取りにくい ▪ → モブプロをする時間帯を決める ⇨ 取り組み方の工夫で、ある程度問題を解消
残った Problem 24 • Problem ◦ 交代のタイミングが難しい ◦ 疲れやすい ◦
ドライバーの手が止まってしまう ◦ 会話だけで完結すると、テキストに残りづらい ◦ 個人のタスクを進める時間が取りにくい ◦ 比較的容易なタスクでも、全員の時間を使ってしまう ▪ モブプロの性質上の問題 ▪ メンバーにスキルがつくにつれ、この場面が増える
モブプロの向き不向き 25 • 状況により向き不向きはある • 向いていそうな状況 ◦ その領域に自信がないメンバーがいるとき ◦ 仕様に不確定な部分が多くあるとき
◦ タスクを分割して並行に進めにくいとき ▪ プロジェクトの動き始めなど
26 モブプログラミングを 経験してみて
現在 27 • メインは分担作業 ◦ メンバーのコードベース理解も進んだため • 場面によって、モブプロも活用 ◦ メンバーの慣れていない領域に触れるとき
▪ タスクの一連の流れを全員で体感 ◦ 困っている状況の相談、解決 ▪ 今の状況を説明するスキルが役立つ
まとめ:モブプロを経験して得られたもの 28 • メンバーのコードベース理解が進んだ • メンバーのことをより知ることができた ◦ 会話しながら開発を進めたことで • モブプロという強い選択肢を得ることができた
◦ 向いている状況もわかった