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
XP祭り2019 実践!モブプログラミング!!~躍進編~/Mob Programming in...
Search
Ikuo Suyama
September 21, 2019
Technology
2
5.6k
XP祭り2019 実践!モブプログラミング!!~躍進編~/Mob Programming in Practice
XP祭り2019、「実践!モブプログラミング!!成功も失敗も、全部見せます僕らのモブプロジャーニー!」
後編です。
Ikuo Suyama
September 21, 2019
Tweet
Share
More Decks by Ikuo Suyama
See All by Ikuo Suyama
Dive into JVM JIT Compiler
martin_lover
2
220
InvokeDynamic完全に理解した / Completely Understand InvokeDynamic
martin_lover
0
900
10分で完全に理解するInvokeDynamic / 10min To Understand InvokeDynamic
martin_lover
0
820
High Performance FastAPI EN
martin_lover
0
1.1k
High Performance FastAPI
martin_lover
17
8.7k
エッセンシャル モブプログラミング 〜実践者が考えるモブの価値,原則,プラクティス〜 / Essential Mob Programming
martin_lover
15
7.7k
NoEstimates Scrum En
martin_lover
0
1.2k
見積りしないスクラム/No Estimates Scrum JP
martin_lover
23
32k
正しくつくる、みんなでつくる。/Do things right with team
martin_lover
1
2.5k
Other Decks in Technology
See All in Technology
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
240
速くて安いWebサイトを作る
nishiharatsubasa
10
12k
技術負債の「予兆検知」と「状況異変」のススメ / Technology Dept
i35_267
1
1.1k
MC906491 を見据えた Microsoft Entra Connect アップグレード対応
tamaiyutaro
1
540
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
16
3.9k
バックエンドエンジニアのためのフロントエンド入門 #devsumiC
panda_program
18
7.5k
プロセス改善による品質向上事例
tomasagi
2
2.5k
白金鉱業Meetup Vol.17_あるデータサイエンティストのデータマネジメントとの向き合い方
brainpadpr
5
740
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
530
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
130
PL900試験から学ぶ Power Platform 基礎知識講座
kumikeyy
0
130
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Agile that works and the tools we love
rasmusluckow
328
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Designing for Performance
lara
604
68k
Gamification - CAS2011
davidbonilla
80
5.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
成功も失敗も、 全部見せます僕らのモブプロジャーニー!! 〜躍進編〜 実践! モブプログラミング!!
陶山 育男 Ikuo Suyama @martin_lover_se 見習い “Agile Developer” モブプロ大好き! CyberAgent,
AI Tech Studio LODEO モブプロは ええぞ!!
Agile2019でLTしてきました Running Mob Programming モブプロ好きすぎて... Mob Mentality Show に出ました!! Mob
Programming in Japan Mob Mentality Show みてね!
モブプログラミング / モブプロ 同じことを... 同時に... 同じ場所で... 同じコンピューターで... “On the same
thing... At the same time... In the same place... On the same computer… --Woody Zuill "Mob Programming A Whole Team Approach" Agile 2014
僕らのモブプロ 毎日フルタイムでモブプロしてます! ドライバ ナビゲータ ナビゲータ ナビゲータ コード書く人 “Smart Input Operator”
5~15分で交代 指示する人
僕らのモブプロ 毎日フルタイムでモブプロしてます! ドライバ ナビゲータ ナビゲータ ナビゲータ アレ 開いて [変数名] がよくな
い? テスト 書いて コード書く人 “Smart Input Operator” 5~15分で交代 指示する人
形成~混乱期 モブプロがデフォルト になるまで 今日お話すること モブプロ実践記! 統一期 開発チームにおけ る課題 機能期 組織における課題
形成~混乱期 モブプロがデフォルト になるまで モブプロが デフォルトになってから ”導入編” 見てね 統一期 開発チームにおけ る課題
今日お話すること モブプロ実践記! 機能期 組織における課題
開発チームの課題 モブがデフォルトになってから
「効率悪くない…?」 シチュエーション1
➔「効率悪そう」 ➔「あいつら遊んでるの? 」 ➔「モブプロってずっとやるものなの?」 「効率悪そう」問題 チーム内外から… チームの意思を統一するには? 説明責任を果たし、 チームを雑音から守るには?
効率 より 効果 に価値をおいています。 伝えていること
効率(Efficiency) より 効果(Effectiveness) ➔「効率」 ◆ 単位時間あたりのアウトプットの多寡 ➔「効果」 ◆ 得られた成果 大切なのはどちらですか?
もし、一緒に働くべきひとたちが バラバラに座っていたとしたら、 どうやって効果的に働けるの? “How can we be effective if we
separate the people who should be working together? ” --Woody Zuill
リソース効率 より フロー効率 伝えていること に価値をおいています。
リソース効率 より フロー効率 大切なのはどちらですか? ➔リソース効率 … リソースの稼働率 ◆ => アウトプット量の最大化
◆ つくるものが決まっているときにだいじ ➔フロー効率 … 作業時間 / (待ち時間 + 作業時間) ◆ => リードタイムの最小化 ◆ つくるものに正解がないときにだいじ
➔ キュー時間の排除 ➔ 依存の低減 ➔ WIP(仕掛り)制限 モブプロとフロー効率 質問 結合 QA
作業 etc... 作業! ムダ! ”普通にモブでやるだけで倍早くなる” -- Ikuo Suyama ※効果には個人差があります ソロ モブ VS
「何もわからねぇ...」 シチュエーション2
➔分かる人だけがずーっとしゃべる ◆ エキスパート=ドメイン知識/言語/ライブラリ/etc... ➔進むことが優先され、中断できない空気 ◆ 「自分の問題なんで、後でやっときます」 ➔悪気なく、意図せず進んでしまっている 「エキスパート vs 初学者」問題
何が起こるか? モブのメリットがまるで無い
None
None
誰も押さねぇ... ぼくの1,166円ェ... なんでも質問!ボタン
「全員がいま起こっていること すべてを知る権利がある」 「いつでも止めて良い権利がある」 ワーキングアグリーメント 意識するだけでは変えられないことも...
➔1 セッション 45分 、5minくらい休憩 ◆ いろいろ試したが今のところこれ ◆ 90minでは長すぎる、30min以下では短すぎる ➔ 1セッション内で、全員がドライバーに
◆ 交代時間を調整(5~15min) ◆ MobStarを使う ➔休憩は必ず取る ◆ 休憩でクールダウンできる … 進みすぎ対策 ◆ 休憩中の雑談のほうが聞きやすい Session / 時間を守る
「一人でできる...?」 シチュエーション3
「個人の学びと成長」問題 新しく始めた技術、「自分一人で」できる? エンジニアとしてのスキル/キャリアの不安 ➔ スキルが身についているか?という不安 ◆ 「モブでしか働けなくなりそう...」 ➔ 「一人で考える/やってみる」時間がない ➔
学びは広く速いが、浅い?
Learning Session 業務時間で、新しい技術や考え方を試す 発表者の個人の学びと、チームへの還元 元ネタは Learning to Experiment by @christophlucian
Lodeoでの Learning Session ➔これまで扱ったテーマ ◆ TDD / Haskell / FP,
Monad / Rust / eml / etc… ◆ 実務でカバーできない深いトピックや、新しい技術にトラ イ ➔ LearningSessionから生まれた機能も 週1回、3H 決まりは一つだけ ... 「手を動かす」
ゴールドカード ➔ 一日モブに参加しない宣言 ◆ 朝イチで宣言する ◆ 自分とチームに必要だと思うことを自分で選ぶ ➔ 月2〜3回使える
「チームで起こっていることに おいてかれる気がする...」 ゴールドカード
不安と向き合っている段階。 試行錯誤中!
組織としての課題 チームが機能してきたら
「人が足りない?」 シチュエーション 4.
モブチームにおける採用事情 ➔ 完全な職能横断チーム ➔ 各領域のエキスパートがチームに1人いれば成り 立つ 採用は必要なのか?
こういうシチュエーション ➔ 純粋にスループットを上げたい ◆ 3 ~ 4人では安定的なスループットを出すには心もとな い ◆ 誰かが休んだ時や、MTGで抜けた時にモブが成立しな
くなる ➔ モブを増やしたい ➔ 足りない専門性を補いたい
「バスに誰を乗せるか」問題 ➔ モブが合わない人はもちろんいる ◆ 「特定の技術/言語だけがやりたい」 ◆ 「自分がやったという感触がほしい」 スキルマッチ <<< 越えられない壁
<<< モブ適正 ◆ 最低限のスキルは要求(チームと歩速を揃えられる)
モブ採用 候補者にモブに実際に入ってもらう ➔ だいたい一時間もやれば感じはつかめる ◆ 面接的なことはなし、お互いリラックスして ◆ お互いチームの雰囲気とマッチするか? ➔ 「スキルスカウター」
◆ 百聞は一行にしかず、一緒にコード書くのが一番 ◆ 操作の手付き/指示の理解度で図る バスに乗せる人はチームが決めるのがだいじ
コンピテンシー マトリクス チームの状況と 対策を共通認識に ➔ チームに足りないコンピテンシー (能力)を可視化する ➔ どう補うか?をチームで議論する ◆
誰かがエキスパートをめざす ◆ よそから探す
「人が増えたぞ!」 シチュエーション 5.
チームの人数が増えてくると、 同じやり方でできなくなってくる... 「スケール」問題
「人が増えたねー。 モブ2つに分けようか」
_人人人人人人_ > つらい <  ̄Y^Y^Y^Y^Y ̄
無策のスケールアウトは死 ➔ 練度が低いチームを2つに分けると、 どちらも機能しなくなる ➔ 文化は多数派で決まる 「楽しくない」 「進まない」 「だれも喋らない」 etc...
「人が増えたけど... このままやろうか」
_人人人人人人_ > つらい <  ̄Y^Y^Y^Y^Y ̄
無策のスケールアップも死 ➔ ひとりあたまの貢献度が薄れる ➔ 集中が下がる ➔ リソース効率が悪すぎる
どうすれば...
None
同期モブ / Synced Mob 練度の高いチームを2つに分ける ➔ 半数以上が練度が高い状態を保つ ➔ 地理的に近くに配置する ➔
モブ間のコミュニケーションを自由にとる ➔ 同じフィーチャーをやる 物理的な距離の近さは正義!!
Q. 5人のときはどうする?
こんなかんじ?
ペアがめちゃきつい! 楽しい!! キッツ...
こう!
接続モブ / Double-Linked Mob 1人のナビゲーターが2つのモブを”つなぐ” ➔ 1人が2つのモブでナビゲータをやる ◆ モブ同士を "つなぐ"
Linking-Navigator ➔ Linking Navigator が一番ツライので時間交代 物理的な距離の近さは正義!!
まとめ ➔ たくさんの課題に直面 ◆ チーム:効率、エキスパート、学び ◆ 組織:採用、スケール ◆ 他にも... •
評価、コミュニケーション、リモート、受け入れ、貢献感、etc… ◆ モブプロ好きな方、情報共有しましょう! ➔ まだまだ毎日適応中! 大変だけど...
モブがデフォルトになった後、 「モブプロやめよう」とはならなかった。 何か本質的なものを見つけたように感じている!
Thank you for your kind attention!