Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームをつくるモブプログラミング / Mob Programming to build teams
Search
yattom
February 13, 2020
Programming
14
14k
チームをつくるモブプログラミング / Mob Programming to build teams
デブサミ2020[13-E-8]でのセッションスライドです。
yattom
February 13, 2020
Tweet
Share
More Decks by yattom
See All by yattom
テストのスライド(内容なし)
yattom
0
55
チームで壁をひとつ越えるためにインテグラル理論を使ってみよう
yattom
1
430
ペアプログラミング復習スライド
yattom
0
480
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング 復習
yattom
0
360
モブプログラミング 復習スライド
yattom
0
290
アジャイルとスクラムとは ~価値、原則、プラクティス~
yattom
0
14k
テストの自動化とテスト駆動開発
yattom
36
16k
アジャイルの風味をお持ち帰り
yattom
1
290
Happy! Lucky! XP!
yattom
4
1.4k
Other Decks in Programming
See All in Programming
Figma Dev Modeで変わる!Flutterの開発体験
watanave
0
3.7k
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
7
3.1k
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
140
デザインパターンで理解するLLMエージェントの作り方 / How to develop an LLM agent using agentic design patterns
rkaga
11
2.3k
14 Years of iOS: Lessons and Key Points
seyfoyun
0
370
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
0
2.8k
カンファレンスの「アレ」Webでなんとかしませんか? / Conference “thing” Why don't you do something about it on the Web?
dero1to
1
150
大規模サイトリビルドの現場から:成功と失敗のリアルな教訓 / Site Rebuild,Real Lessons Learned from Successes and Failures_JJUG Fall 2024
techtekt
0
190
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.2k
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.9k
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
9
4k
Better Code Design in PHP
afilina
PRO
0
140
Featured
See All Featured
Teambox: Starting and Learning
jrom
133
8.8k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Agile that works and the tools we love
rasmusluckow
327
21k
Ruby is Unlike a Banana
tanoku
97
11k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
RailsConf 2023
tenderlove
29
910
Happy Clients
brianwarren
98
6.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
A designer walks into a library…
pauljervisheath
204
24k
A Philosophy of Restraint
colly
203
16k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
[RailsConf 2023] Rails as a piece of cake
palkan
52
5k
Transcript
νʔϜΛͭ͘ΔϞϒϓϩάϥϛϯά ͬͱΉɹ5",",*/( ଆͱ֎ଆ͔ΒޠΔ
2001年ごろアジャイルと出会い、開発者、チームリーダー、ト レーナー、導入支援と多様な立場で関わってきた。(株)永和シス テムマネジメントにて2010年頃からアジャイルコーチを主軸とし て活動。2014年独立。 プログラマー Python JavaScript Java C/C++ アジャイルコーチ
(プロセス面) チームビルディング 現場導入支援 スクラムマスター支援 ふりかえり アジャイルコーチ (ものづくり面) モブプログラミング テスト駆動開発 テスト自動化 学びのゲームをデザイン、製作、デリバリー 宝探しアジャイルゲーム カンバンゲーム 心理的安全性ゲーム 著書・訳書
[email protected]
twitter:@yattom https://www.facebook.com/yattom https://www.linkedin.com/in/yattom/ やっとむ / 安井力(やすいつとむ)
https://tddrinking.connpass.com/event/164790/ PR
✤ ٴ෦ܟ༤!5",",*/( ✤ גࣜձࣾσϯιʔΤϯδχΞ ✤ ΞδϟΠϧνʔϜΛࢧ͑Δձཧࣄ
ΞδϟΠϧ ίʔν ϖΞεΫϥϜ Ϛελʔ ߨԋɾݚम ࣥච ͦͷଞ૬ஊ ͓ؾܰʹ͝૬ஊ͍ͩ͘͞㱺IUUQTBHJMFNPOTUFSDPN
✤ νʔϜ໊ɿ4*-7&3#6--&5$-6# ✤ ਓνʔϜ ✤ ϞϒϓϩάϥϛϯάBTಇ͖ํ ✤ ݄ʹνʔϜస৬ 5",",*/( 4BUP@SZV
͝ʔͨ
ۜͷؙϥδΦ ݱͷΞδϟΠϧνʔϜʹΑΔ νʔϜ:PVUVCFνϟϯωϧɺ1PEDBTU࢝Ί·ͨ͠ʂ IUUQTUBLBLJOHDPNTJMWFSCVMMFUDMVCTUBSU
νʔϜͷଆͱ֎ଆ νʔϜ
Ϟϒϓϩάϥϛϯάߨ࠲։ઃ༧ఆ IUUQTFWFOUTIPFJTIBKQD[B $PEF;JOF"DBEFNZʹͯ
Ϟϒϓϩάϥϛϯάͱ ✤ ಉ͡ࣄΛ ✤ ಉ࣌ؒ͡ʹ ✤ ಉ͡ॴͰ ✤ ಉ͡ίϯϐϡʔλʔͰ νʔϜશһͰ
͢Δ͜ͱ
None
✤ ݴ༿ࠒʹ91ίϛϡχςΟͰੜ·Εͨ ✤ )VOUFS*OEVTUSJFTൃͷϞϒϓϩάϥϛϯά ✤ ΤϯδχΞϓϥΫςΟεͰͳ͘ࣄͷελΠϧ ✤ ຊͰҎ͔߱ΒΓ্͕͍ͬͯΔ Ϟϒϓϩάϥϛϯά
✤ ࣄΛ୲͢Δ͜ͱΑΓੜ࢈ੑ͕͍ʁ ✤ Ϟϒϓϩମݧͯ͠͡ΊͯޮՌΛ࣮ײͰ͖Δ ✤ ϞϒϓϩΛ͏·͘׆༻Ͱ͖ΔνʔϜݶΒΕΔ ✤ ڭҭతޮՌ͕ߴ͍ ✤ ୯ൃ͍͍͚Ͳৗతʹ͢Δͷ͍͠
Α͘ʹग़ͯ͘Δ͜ͱ
None
νʔϜΛϒʔετ͢ΔϞϒϓϩάϥϛϯά ࣄΛυϥΠϒ͢ΔϞϒϓϩάϥϛϯά
͡ΊΔ νʔϜΛϒʔετ͢Δ Ϟϒϓϩάϥϛϯά ࣄΛυϥΠϒ͢Δ Ϟϒϓϩάϥϛϯά
✤ ڵຯ͕͋Δͱ͜Ζʹूத͍ͯͩ͘͠͞ ✤ γϣʔττʔΫʴΫϩετʔΫ ✤ ࣭ର໘4/4ͳͲ͔Β͓ؾܰʹ ͜ͷߨԋͷฉ͖ํ
ͬ͘͡Γ͓͍ͨ͠ํͪ͜ΒͲ͏ͧ IUUQTXXXTFTIPQDPNQSPEVDUEFUBJM IUUQTEFWTVNJOPSBQBSUZDPOOQBTTDPNFWFOU
͡ΊΔ
None
ベストプラクティスの例 • モビングを実験として位置づける • 行番号ON • モビングインターバル…10分ごとに ドライバーを交代する • 経験からの学習…セッション後には毎回、ふりかえりをする
• 最初は共感から • 協調的なマインドセットの獲得 • スペースは重要だ
始めるとき気をつけるとよいこと •目的とゴールを定める •進み方を表明する •議論と実験のバランスを取る •その場でフィードバックを得る •ふりかえりをする •個々人のペースとやり方で復習する
目的とゴールを定める • 目的: なにを目指すか、現在の優先事項、方向性 • 例: X機能の開発を全力で進める Yライブラリの使い方を共有する AさんがZモジュールの現状を把握する •
ゴール: セッション終了時に到達したい点 • 例: X機能の正常系2パターンを実装してテストする Yライブラリを納得するまで動かして結果を残す AさんがZモジュールのシーケンスを図に描ける 目的や 方向性 ゴールと 進み方
「目的はこれ。いいですか?」ではダメ 「目的はこれこれです。いいですか?」 A) 「いいです(よくない)」 B) 「いいです(と思ったけど違った)」 C) 「いいです(聞いてない)」 • 少し議論や質問をして認識違いや
理解の差異を埋める • 進めながら揃う部分もあるので 深入りしすぎない • セッション途中でも確認する https://www.oreilly.com/library/view/user-story-mapping/9781491904893/
進み方を表明する • モブプロ中、現在地がわからなくなったり、迷子になったりする • いまどこにいるのか、次は何をするのか、ゴールに近づいているかを 常に共有する • ゴールに向かう手順は? • いまなにしてる?
次の作業はどれ? • やろうとしていることの全体像は? どのくらい終わった?
進み方を表明するツール TODOリスト 作業の区切り ここまでできたね 快調! このTODOは☑ね 次はどれだっけ こっちのTODO? あれ先にしない? それがいいかも!
ドライバーがしゃべる さてABCメソッド 書くぞ あれ、DEFだっけ 正常系はこうで 変数名 どうしよっかな FOOBARは? FOOBAR…と 戻り値の型int? intでよかった
進み方を表明するツール TODOリスト 作業の区切り ここまでできたね 快調! このTODOは☑ね 次はどれだっけ こっちのTODO? あれ先にしない? それがいいかも!
さてABCメソッド 書くぞ あれ、DEFだっけ 正常系はこうで 変数名 どうしよっかな FOOBARは? FOOBAR…と 戻り値の型int? intでよかった intだとダメじゃね そう? いい気がする 結果ゼロどうする? 例外かと思った 例外でいいね なにしてたっけ コメント忘れてた 条件書き換えて テストしたい テストあるよ テスト変更し いやケース追加 このケースある テスト足らんじ あとにしよう えー…はーい できた気がする 処理がこうで、 チェックがあっ 引数のバリデー ンは…しなくて ので、ループの もいいし、フェ ポストエラーは ドライバーがしゃべる 注意: ナビゲーターがもうちょっと仕事したほうがよい あーうー…あー あーーー!おけ これでよさげ わからん…
議論と実験のバランスを取る • モブでの議論は大事 • 知見を出しあってお互いから学べる • 創造的な騒々しい議論ができる • 知識が組み合わさって新しいアイデアが得られる •
話すだけではなく、試してみる • いいアイデアが出たら、書いてみる • 複数のアイデアは、書いて見比べる • 議論が平行線になったら、実際に動かしてみて比べる • 最初は議論 << 実験くらいの気持ちで • 結論が出るまで話す < 試してから結論を出す • 書く時間がもったいない < 書けば判明する・共有できる情報がもったいない
その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト)
その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト) ビルドパイプ ライン通る
デプロイ できる 動く (E2E)
その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト) ビルドパイプ ライン通る
デプロイ できる 動く (E2E) 仕様漏れ がない (品 質テスト) よい設計 (リファクタ リング) モブ外の 人の評価 外部 システムと つながる
その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト) 仕様漏れ がない
(品 質テスト) ビルドパイプ ライン通る デプロイ できる 動く (E2E) よい設計 (リファクタ リング) モブ外の 人の評価 外部 システムと つながる 楽しい! 学びが多い! 品質向上!
その場でフィードバックを得る • 作業が“ちゃんと”進んでいるかどうか、モブの中でわかるように • 後で問題がわかっても、モブに伝わらない • 全員が正しい理解や学びを、できるだけたくさん得る • 動いたほうが楽しい!
ふりかえりをする • モブ作業を終えるとき • 全員で一緒に • やりかたはいろいろ • モブの延長として、みんな声を出すスタイルがおすすめ https://www.ogis-ri.co.jp/otc/hiroba/others/ActivityPocket/FunDoneLearn.html
マインドマップでふりかえり して共有(リモート) ファンダンラーン 参考書籍
ふりかえりのねらいは2つ • よりよいプロダクトを目指す • よりよいモブプログラミングを目指す
学びを積み上げる • ふりかえりの結果を再利用できる形で残していく
個々人のペースとやり方で復習する • 復習 ― モブの中で得た新しい知識を定着させる • セッション後に一定の時間を確保する • スタイルは個々人の自由 •
ひとりで復習してもよい • モブ体制を維持しながら、個人作業としてもよい • モブとして復習するのもよい ※復習に限らず、モブへの参加・離脱は各自の判断でゆるくてもよい
ϞϒϓϩΛ࢝ΊΔͱ͖ʹͲ͏࢝ΊΕ͍͍͔ʁ ಛʹωΨςΟϒͳԠΛ͞Εͨͱ͖ʹʁ ͍
• まずは試してみましょうというアプローチ。実験としてやってみると よい。実験したうえで、このチームではどう進めるといいのか話し合 う。 • モブプロを教えてくれる外部の人を呼んできて、やり方を教えても らったり、ガイドしてもらう。外部のお墨付きとして利用する。 • 外部の勉強会などでモブプロを体験したメンバーが、これは良 かったからやってみようと持ち帰ってくるのもよい。
ʮݸਓͰ࡞ۀʢֶशʣ͍ͨ͠ʯ ͱݴΘΕͯ͠·ͬͨΒͲ͏͢Ε͍͍ʁ ͍
• 個人でやりたいというのは、それでよい。モブだから全員拘束する という必要はない。 • とはいえまずは試してみる方がよい。実感してから、どういう仕事を モブでやるか、どういうモブを組むと良いか考える。 • 最初は抵抗感がある人でも、やってみたら思ったよりよかったと感 じる人は、けっこう多い。 •
Hunter Industriesの動画では、複数のモブの中を個人がけっこう 自由に移動している様子が見られる。 https://youtu.be/dVqUcNKVbYg • 大事なのは仕事を進めること。スタイルにこだわるべきではない。
νʔϜΛϒʔετ͢Δ Ϟϒϓϩάϥϛϯά
✤ νʔϜͷଆΛڧ͘͢ΔϞϒϓϩ ✤ ϞϒϓϩͷڧΈΛ׆͔͢ ڭҭతޮՌ͕ߴ͍ ‣ ࣝҠస ‣ ϨϏϡʔ
νʔϜΛϒʔετ͢ΔϞϒϓϩͱʁ
ϞϒϓϩάϥϛϯάºࣝҠస
✤ ܦݧ͕͍ਓΛυϥΠόʔʹ͢ΔͱΑ͍ ✤ ࣄΛࢭΊΔ͜ͱ͕Ͱ͖ΔݖརΛ͢ ✤ ࣝͷδϟετΠϯλΠϜ ✤ ฉ͖ͳ͕ΒखΛಈֶ͔ͯ͠Ϳ͜ͱ͕Ͱ͖Δ ✤ ࢀՃ͍ͯ͠Δશһʹಉ࣌ʹ͑Δ͜ͱ͕Ͱ͖Δ
ϞϒϓϩάϥϛϯάͱࣝҠస
4&$*Ϟσϧ
✤ ҉ʹܗࣜʹͳΒͳ͍ͷ ίʔυͷΈཱͯํ πʔϧ*%&ͷ͍ํͷίπ ͳʹΛɺͲͷΑ͏ʹɺͳͥͭͬͨ͘ͷ͔ ͲΜͳղܾ͕͋ͬͨͷ͔ɺۤ࿑ͨ͠ॴ
✤ ҉ܗࣜ·ͱΊͯڞ௨ମݧͰ͑Δ ҉·ͱΊͯ͑Δ
ϞϒϓϩάϥϛϯάºϨϏϡʔ
1IPUPCZϑϦʔࣸਅૉࡐͺͨͦ͘ IUUQTXXXQBLVUBTPDPN ϨϏϡʔ͓͡͞Μ ΤϯδχΞͱͯ͠εΩϧΞοϓ͍ͯ͘͠ͱɺ ΤϯδχΞϦʔμʔςοΫϦʔυΛ͞ΕͨΓ͢Δɻ ͦ͏ͳΔͱɺϝϯόʔڭҭ࣭୲อγεςϜ҆ఆՔಇͷ͕ͷ͖ͬͯͯɺ ྫ͑ϨϏϡʔΛ͢Δ͕࣌ؒͲΜͲΜ૿͍͑ͯ͘ɻ ͱͱΤϯδχΞϦϯά͕͖ͰΤϯδχΞΛ͖ͬͯͨΜ͚ͩͲɺ εΩϧΞοϓ͍ͯ͘͠ͱͲΜͲΜίʔυΛॻ͕࣌ؒ͘ݮ͍ͬͯ͘ͷͬͯͳΜ͔ͩͳ͋ɻ
ϨϏϡʔͷతͷྨ $IFDL -FBSOJOH &OIBODF ݕࠪ ֶश ڧԽ w ࣭Λ୲อ͢Δ w
όάΛݟ͚ͭΔ w ςετͱͯ͠ w ʢ࠷ݶͷʣ ϦϑΝΫλϦϯά w φϨοδͷڞ༗ w εΩϧτϥϯεϑΝʔ w ৽ਓڭҭ w จԽͷৢ w ϦϑΝΫλϦϯά w ͬͱΑ͘ w ͬͱΩϨΠʹ w ઌߦࢿ
ϞϒϓϩάϥϛϯάͷΧόʔൣғ $IFDL -FBSOJOH &OIBODF ݕࠪ ֶश ڧԽ
✤ ϦΞϧλΠϜϨϏϡʔ ✤ λΠϙ͢ΔͱͷٲͷΑ͏ʹࢦఠ͞ΕΔ ✤ νʔϜશһͷ߹ҙͷͱͰίʔυ͕·Ε͍ͯ͘ ✤ ͤͣʹνʔϜͷϕετΛࢦ͢͜ͱ͕Ͱ͖Δ ϞϒϓϩάϥϛϯάͱϨϏϡʔ
✤ ఔͱͯ͠ͷϨϏϡʔϞϒϓϩͰସͰ͖Δ ✤ ݕֶࠪशϦΞϧλΠϜͷํ͕ޮՌతͳ͜ͱ͕ଟ͍ ✤ શʹϨϏϡʔ͕ඞཁͳ͘ͳΔΘ͚Ͱͳ͍ ϞϒϓϩάϥϛϯάͱϨϏϡʔ
ϞϒϓϩάϥϛϯάͷΧόʔൣғ $IFDL -FBSOJOH &OIBODF ݕࠪ ֶश ڧԽ
3FWJFX ࠶ͼ ݟΔ
ڧΈ ऑΈ ϦΞϧλΠϜ Ϟϒϓϩάϥϛϯά ϨϏϡʔ 3FWJFX ✤ ৗʹνʔϜͷϕετΛ ࢦ͢͜ͱ͕Ͱ͖Δ ✤
݁Ռ͚ͩͰͳ͘ϓϩηεΛ ධՁ͢Δ͜ͱ͕Ͱ͖Δ ✤ ྫྷ੩ʹݟΔ͜ͱ͕Ͱ͖Δ ✤ શମ࠷దΛߟ͑ͯϑΟʔυ όοΫ͍͢͠ ✤ ͦͷͷʹΑͬͯޡͬͨ அΛͯ͠͠·͏Մೳੑ ✤ ہॴ࠷దʹؕΔՄೳੑ ✤ ͕ੜ·Ε͍͢ FYΠϚΠν͚ͩͲ͕࣌ؒͳ͍͔Βʜ ✤ ݁ՌͷΈͰಡΈऔΕͳ͍ ෦ΛΔͨΊʹɺ ίϛϡχέʔγϣϯ͕ඞཁ
ڧΈ ऑΈ ϦΞϧλΠϜ Ϟϒϓϩάϥϛϯά ϨϏϡʔ 3FWJFX ✤ ৗʹνʔϜͷϕετΛ ࢦ͢͜ͱ͕Ͱ͖Δ ✤
݁Ռ͚ͩͰͳ͘ϓϩηεΛ ධՁ͢Δ͜ͱ͕Ͱ͖Δ ✤ ྫྷ੩ʹݟΔ͜ͱ͕Ͱ͖Δ ✤ શମ࠷దΛߟ͑ͯϑΟʔυ όοΫ͍͢͠ ✤ ͦͷͷʹΑͬͯޡͬͨ அΛͯ͠͠·͏Մೳੑ ✤ ہॴ࠷దʹؕΔՄೳੑ ✤ ͕ੜ·Ε͍͢ FYΠϚΠν͚ͩͲ͕࣌ؒͳ͍͔Βʜ ✤ ݁ՌͷΈͰಡΈऔΕͳ͍ ෦ΛΔͨΊʹɺ ίϛϡχέʔγϣϯ͕ඞཁ ิؔ
ϞϒϓϩάϥϛϯάͱϨϏϡʔͷΈ߹Θͤ $IFDL -FBSOJOH &OIBODF ݕࠪ ֶश ڧԽ ϨϏϡʔ w ;Γ͔͑Γ
w ࣗୡͷࣄͷධՁ w ͬͱΑ͘͢Δʹ
தظతͳࢹͰϞϒϓϩάϥϛϯάΛ׆༻͢Δ
ϞϒϓϩΛத৺ʹਐΊͯ ࣝҠసΛ͠ͳ͕Β νʔϜͷจԽΛৢ͢Δ ιϩɺϖΞΛΈ߹Θͤͯ εϐʔυΛ্͛Δ ϞϒϓϩʹΑͬͯ ଐਓԽΛ͗ νʔϜͷจԽΛอͭ ॳظ ͏·͘·ΘΓ࢝ΊͨΒ
ϨϏϡʔͷதͰͲΜͳձ͕ग़Δͷ͔ʁ έϯΧʹͳͬͨΓ͢Δ͜ͱͳ͍ͷ͔ʁ ͍
• 特に始めのうちは、変数の命名、関数の書き方、これモデルに書い ていいんだっけ?などの議論が盛り上がる。そうした話を全員です るのが大事で、全員の認識がそろえば、ソロで書いてもちゃんとそ ろったコードが書けるようになる • ケンカになるという話は聞いたことがある。もともと仲が良くない チームがモブプロのような密なコミュニケーションをしようとしたら 爆発するのは当たり前で、モブプロのせいとは言えない。 •
ケンカや議論自体は悪いことではない。ケンカのようなやり取りを 通じて相互理解が進んだり、隠れたフラストレーションがないか チェックする機構になる。 • 無用に感情を傷つけるような言葉は避け、伝えるべきことを伝える 丁寧なコミュニケーションをする。
ʮΘ͔Βͳ͍Ͱ͢ʯͬͯݴ͑ͳ͍ਓ͕ ग़ͯ͠·͍·ͤΜ͔ʁ ͍
• 言えない人は出る。仕事が進んでいるところを止めるのは心苦し いもの。ドライバーは止められるが、ドライバー以外の人はどうす るか。たとえば1時間おきに一時停止して、理解の度合いを確認し たり、復習したりする時間を取る。 • チーム内でスキルや知識のある人にとっては、周囲に伝えるよい チャンス。周りの人ができるようになれば、本来やりたいことに集中 しやすくなる。この考え方を、スキルのある人に理解してもらう。
ࣄΛυϥΠϒ͢Δ Ϟϒϓϩάϥϛϯά
仕事をドライブするモブプロとは? • ソロワークより優れた成果を出せるモブプロ • 「優れた成果」とは何か? • モブプロの真価 • 全員の知識を生かせる •
個々人の総和以上の成果が出る • エンゲージメントが引き出される • オーバーヘッドが最小になる
モブプロが生きる仕事 仕事に生かす モブプロの強み 仕事に生かせない 高度な知識を 組み合わせる 全員の知識を生かせる 形式的に定義された知識 均一な知識 解くべき問題が複雑
個々人の総和以上の 成果が出る 容易な問題の積み重ね 創造性が求められる エンゲージメントが 引き出される 単純作業 密な連携が必要 オーバーヘッドが 最小になる 明確に切り分け、 定義された作業 ルーチンワーク
モブプロが生きる仕事 最近の経験だと… ✓スクラッチ開発2ヶ月弱 ✓メンバーはいるけどパートタイム ✓知らんサービスいろいろ試す ✓どレガシーな既存システムと結合 ✓もやっとしたイメージだけで 何を実現したらいいかわからない ✓でも本番でユーザーに見せる (マジで?)
• 新しいことを試す • 未知のものを使う • 全体的な設計 • 問題が複雑 • 正解がわからない • いろいろ起きて、どんどん対処する • 曳光弾開発 (『達人プログラマー』) • 顧客も一緒 • メンバーのスキルが高い • みんな乗り気 • 一部屋占拠して部室化
必死にデプロイ中 なんかあったら すぐ参加できる 全体がモブ
なぜモブプロを導入するのか? A) 仕事の成果を向上するため(品質、生産性) B) 教育や、知識の伝達のため •プロダクトのため •チームのため
仕事に生かすかチームに生かすか? 仕事に生かす モブプロの強み チームに生かす 高度な知識を 組み合わせる 全員の知識を生かせる メンバーどうしで学びあう 解くべき問題が複雑 個々人の総和以上の
成果が出る 自分の力の出し方を学ぶ 協力が上手になる 創造性が求められる エンゲージメントが 引き出される モチベーションが上がる 障害物が見つかる 密な連携が必要 オーバーヘッドが 最小になる 文化を醸成、維持する
モブの目的: 仕事かチームか 仕事をドライブ • 詳しい人がドライバー • 今やるべき箇所をやる • 議論する •
幅広いメンバーでやる チームをブースト • 詳しい人がナビゲーター • 難しい箇所をやる • 質問する • 必要なメンバーでやる
高 パ フ ォ ー マ ン ス 低 チームブースト重視
仕事ドライブ重視 アプローチ 仕事面 チーム面 合計 こうかな?
高 パ フ ォ ー マ ン ス 低 チームブースト重視
仕事ドライブ重視 アプローチ 仕事面 チーム面 合計 こうじゃない?
高 パ フ ォ ー マ ン ス 低 チームブースト重視
仕事ドライブ重視 アプローチ 仕事面 合計 むしろこうしたい チーム面
モブの目的: 仕事もチームも 教育軽視 教育重視 仕事軽視 簡単な仕事 仕事重視 難しい仕事 研修 タスク丸投げ
優秀な人がレビューする できなかったら 教える さしみタンポポ OJT 常時レビュー その場で理解する 全員の知識を使う 品質の高い成果を 完成する ベストの仕事をする できる人に任せる 使い捨て人材 議論と実験 優秀な人がタスクアサイン
仕事面 高 パ フ ォ ー マ ン ス 低
チームブースト重視 仕事ドライブ重視 アプローチ 合計 チームが成長し 学びが高度化していく チーム面 チームが学び成長する モブプロが上手になる
責 任 大 ← → 小 能力 →高 低← 学習
パニック 快適
責 任 大 ← → 小 能力 →高 低← 学習
パニック 快適
「チームの心理的安全とは、対人のリスクを取っても 安全であるという、チーム全員の信念である」 “Psychological Safety and Learning Behavior in Work Teams”
Amy Edmondson, 1999 Amy C. Edmondson https://twitter.com/amycedmondson 心理的安全 (Psychological Safety) 「「心理的安全」とは、関連のある考 えや感情について人びとが気兼ね なく発言できる雰囲気をさす。」
図3. グルー プレベルで 研究した心 理的安全性 の関係
仕事をドライブするモブ • モブの「成果」として何を求めるか考える • モブに向いた仕事を選ぶ、モブに向くよう仕事を作る • 成果が出るようチームをブーストする
None
ͬͺΓࣄΛ୲ͯ͠ਐΊΔΑΓ ੜ࢈ੑམͪͯ͠·͏ͷͰͳ͍͔ʁ ͍
• 単純作業ならモブのメリットはない。仕事の成果に対する評価を見 直したうえで、モブプロすべき仕事を選ぶ。 • そのうえで生産性を考えてみると、適切な人数は意識するべき。い まチームに10人いるから10人のモブにすると、短絡的に決めない 方がよい。 • モブをやる中で個人が学んで成長することから、中期的に全体の パフォーマンスがよくなるという側面もある。
• 短期的に見ては難しいので中長期的に見る。チーム全体の成長を 見る。モブに求める成果を見直す。
΄ͲΑֶ͍शঢ়ଶʢ৺ཧత҆શʣʹ Λ͓ͨ͘Ίʹ͍ͯ͠Δ͜ͱ͋Δͷ͔ʁ ͍
• チームが安定した状態というのは、よく見るとめったにない。周囲で はいろいろなことが起きているのだが、ベテランだったりリーダ だったりの個人が見つけて対策して、チーム全体に影響しないよう にしていることが多い。それをあえて、モブとして取り組むように切 り替えるとよい。 • 人工的に外部から新しい知識を取り込むラーニングセッションを、 定期的におこなう。学んだことを自分たちで積極的に試してみる。 す。
ίʔνઢͰϞϒϓϩΛ͏·͑ͯ͘Δͳʔ ͍ͬͯ͏νʔϜͷಛ͋Γ·͔͢ʁ ͍
• 楽しそうなチーム。具体的には、発言が均等になっていて、しゃべ る人・しゃべらない人という区別がない。 • ドライバーが流動的で、この部分は誰がやるという固定化がない。 • モブ外の人、マネージャーとか部長とかがモブを放っておいてくれ ている。そういう仕組みができている。
·ͱΊ 1IPUPCZ.JDIBFM$PVSZPO6OTQMBTI
ʮϞϒϓϩʜ͍ͬͯ͏͔νʔϜͷͳΜͩΑʯ
ϞϒϓϩάϥϛϯάνʔϜશମͷ׆ಈͰ͋Δ IUUQTXXXTMJEFTIBSFOFUBOESFGBSJBNPCQSPHSBNNJOH
Ϟϒϓϩͷlશମੑzʹண͢Δ
νʔϜͷଆͱ֎ଆ νʔϜ νʔϜΛϒʔετ͢ΔϞϒϓϩ ࣄΛυϥΠϒ͢ΔϞϒϓϩ
私(I) 主観的 私たち(We) 間-主観的 この図は『インテグラル理論 多様で複雑な世界を読み解く新次元の成長モデル』を参考にしながら独自に作ったもの https://www.amazon.co.jp/dp/B07TSD52MX それら(Its) 間-客観的 それ(It)
客観的 個人 美意識 文化 スキル 役割 チーム / モブ 美意識 価値観 ミッション 得意範囲 組織? 全体性を維持しながら成長するには、内側のすべてのレベルと、 四象限すべての方面を包含しなくてはならない 美 善 真
νʔϜͷঢ়گʹΑͬͯൺॏ͕ҧ͏ νʔϜͷ֎ଆ νʔϜͷଆ νʔϜͷख़
λοΫϚϯϞσϧ 1FSGPSNBODF 5JNF 'PSNJOH 4UPSNJOH /PSNJOH 1FSGPSNJOH
ϞϒϓϩPS/05Ͱͳ͍
ϞϒϓϩʹνʔϜϫʔΫ ιϩϓϩ ϖΞϓϩ
໘໘Ͱ࠷దͳબΛ͢Δ͜ͱ
ڱٛͷϞϒϓϩɺٛͷϞϒϓϩ ܗࣜͱͯ͠ͷ Ϟϒϓϩ νʔϜϫʔΫͱͯ͠ͷ Ϟϒϓϩ
Ұॹʹߦಈ͢Δ͔Ͳ͏͔͕ॏཁͰͳ͍
✤ ׂΕͨ૭Λͳ͘͢ ✤ ֝ͷࣽ ✤ ୡ͠Α͏ ✤ %3:ݪଇ ✤ ߦੑ
✤ ࣗಈԽ ✤ ֆըͷ੍࡞ͷΊ࣌ΛΔ ୡਓνʔϜ IUUQTBN[OUP/J;F
ͦͷͨΊʹΛຏ͘
Ϟϒϓϩάϥϛϯάߨ࠲։ઃ༧ఆ IUUQTFWFOUTIPFJTIBKQD[B $PEF;JOF"DBEFNZʹͯ
ͬ͘͡Γ͓͍ͨ͠ํͪ͜ΒͲ͏ͧ IUUQTXXXTFTIPQDPNQSPEVDUEFUBJM IUUQTEFWTVNJOPSBQBSUZDPOOQBTTDPNFWFOU
૬ޓओ؍ IUUQTBN[OUP2**W/ ϝϯόʔҰਓͻͱΓ͕ࣗͷओ؍Λ อ࣋͢ΔҰํͰɺଞͷϝϯόʔͱڞಉͰ ங্͖͛ΔʮΘΕΘΕͷओ؍ʯͷ͜ͱ
IUUQTXXXTMJEFTIBSFOFUZNBFEBTT
*:PV͔Β8F ϞϒϓϩνʔϜͩʂʂ