Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームでモブプログラミングを経験して得られたもの / Hatena Engineer Semi...
Search
mds_boy
June 27, 2024
0
570
チームでモブプログラミングを経験して得られたもの / Hatena Engineer Seminar #30
Hatena Engineer Seminar #30 チーム開発編
mds_boy
June 27, 2024
Tweet
Share
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
230
18k
A better future with KSS
kneath
239
17k
What's in a price? How to price your products and services
michaelherold
245
12k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Automating Front-end Workflow
addyosmani
1370
200k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
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 • メンバーのコードベース理解が進んだ • メンバーのことをより知ることができた ◦ 会話しながら開発を進めたことで • モブプロという強い選択肢を得ることができた
◦ 向いている状況もわかった