Slide 1

Slide 1 text

1人プロ・ペアプロ・モブプロ の効果的な使い分け まきまき 2024/05/11 まきの間@PHPカンファレンス香川 1

Slide 2

Slide 2 text

まきまき          @_mkmk884 愛媛県松山市出身 四国勢枠 愛媛→京都→小田原 2 1ヶ月前は小田原の人の顔をしていた 今日は四国の人の顔をする レギュラートーク初登壇(ドキドキ)

Slide 3

Slide 3 text

目次 1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 3

Slide 4

Slide 4 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 4

Slide 5

Slide 5 text

ペアプロ・モブプロしたことありますか? 5 成長する? 開発早く終わる? 銀の弾丸? 効率悪い? 負担? もったいない?

Slide 6

Slide 6 text

ペアプロ 6 タスク分解、設計、コーディング、… を全てペアで行う ペアプログラミングとは、2人でプログラミング(および 分析、設計、テスト)とプログラムの改良を同時に行う やりとりのことである エクストリームプログラミング p.40

Slide 7

Slide 7 text

ペアプロ 7 ドライバー ナビゲーター 1つの画面 ● 手を動かして コードを書く人 ● ドライバーを 導く人 ● キーボードの前 に座る ● 実装の細かい 部分を考える ● コードを常に レビューをする ● 実装の全体を 考える ※ 私がやっていたペアプロのやり方

Slide 8

Slide 8 text

ペアプロ 8 ドライバー ナビゲーター ● 手を動かして コードを書く人 ● ドライバーを 導く人 ● キーボードの前 に座る ● 実装の細かい 部分を考える ● コードを常に レビューをする ● 実装の全体を 考える 交代

Slide 9

Slide 9 text

モブプロ ペアプロの人数増えたバージョン(3〜5人) チーム全体で行う 9 ドライバー ナビゲーター ナビゲーター ナビゲーター 1つの画面

Slide 10

Slide 10 text

モブプロ ペアプロの人数増えたバージョン(3〜5人) チーム全体で行う 10 ドライバー ナビゲーター ナビゲーター ナビゲーター 交代

Slide 11

Slide 11 text

1人プロ 11 1人プログラミングとは、全て1人でプログラミングを行う ことである 要はシングルプログラミング、シンプロ まきまき(2024) いつもの開発 (比較用、説明用です)

Slide 12

Slide 12 text

[イメージ] ① 目標を決める このペアプロでどこまでやるかを決める 12 購入したものと税率 で合計金額を出す までやりましょう ※ 私がやっていたペアプロのやり方

Slide 13

Slide 13 text

[イメージ] ① 目標を決める このペアプロでどこまでやるかを決める 13 はい! 食品は8%で 食品以外は10%で 判定して最終の合計 を出力する イメージをしてます

Slide 14

Slide 14 text

[イメージ] ① 目標を決める このペアプロでどこまでやるかを決める 14 各商品の小計を画面 に表示するところ までやりますか?

Slide 15

Slide 15 text

[イメージ] ① 目標を決める このペアプロでどこまでやるかを決める 15 今回は値を 確かめるだけで、 表示は別で やりましょう!

Slide 16

Slide 16 text

[イメージ] ② タスクを分解する 16 要件通り、食品か 食品以外かの判定が 必要と思ったので こうしました! ありがとうございます! ここは先に単価*個数を して小計を出したほうが いいですね あと、判定と税率かける 部分を1タスクにした方 が、都度テストできて わかりやすそうです! ド ナ

Slide 17

Slide 17 text

ド ナ [イメージ] ③ 話しながらコードを書く ナ 17 考えていることをお互いに口に出しながらコードを書く isFoodがtrueなら、 1.08をかける… こんな感じで どうでしょう? ド いいと思います! ちなみに、 === trueなくても 判定ができますよ

Slide 18

Slide 18 text

[イメージ] ④ 交代 二人で決めたタイミングで交代する 18 ふー… 10分休憩して交代 しましょう 繰り返す ナ ド

Slide 19

Slide 19 text

1人・ペア・モブ、それぞれ効果的な場面がある 約1年間、チームの目的や状況に合わせて、 1人プロ・ペアプロ・モブプロで動き方を変化 19 絶対的にペアプロ・モブプロがいいという訳ではなく 時と場合によって、それぞれ良さがあると感じた

Slide 20

Slide 20 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 20

Slide 21

Slide 21 text

ここ直してね 所属している組織の前提 リリースするためには、 開発者+レビュー者+レビュー者 の3人の目を通る 必要がある 21 開発者 \ できた / レビュー者 \ OK!!! / レビュー者 リリース ここどう考えた? \ OK!!! /

Slide 22

Slide 22 text

1人プロを選択した私の当時の開発状況 22 概要 外部連携先の仕様変更 期限 あり、調整不可 チーム人数 5人 チーム構成 チームのうち2人は外部仕様を把握すること に徹底 1人プロ

Slide 23

Slide 23 text

1人プロのときの動き方 23 ● もくもくと開発を行う ● いつでも質問できる状況にする ○ 外部仕様を理解しているチームメンバーと同じ通話に 入って作業 ○ 不明点があればすぐ質問 ● レビューのときは、内容や外部要件を理解するところ から行う

Slide 24

Slide 24 text

1人プロのいいところ 24 ● 集中できる ● 見積もりがしやすい ○ 自分の要領は自分がよく知っている ● タスクの手を付ける順番を自由に決められる ○ 差し込みにも柔軟に対応しやすい ● 対人ストレスが少ない

Slide 25

Slide 25 text

1人プロの効果的なタイミング 25 タスクが単純で、量や期限の割に人数が少ない場合 1人プロ(or ペアプロ)で進めると複数の要件が平行で進む 1つのタスクが予想外の問題に直面した場合でも、 他が進んでいるため、全体的なリスクを分散できる ↪ 正解がある程度存在してほぼ相談しなくても進められる

Slide 26

Slide 26 text

1人プロの効果的なタイミング 26 さらに 外部要件・仕様等を理解する役割の人がいる場合、 その人から知識を得つつ開発する 全体の要件把握の知識が各メンバーに散らばることなく 1人に集約することができ、効率的であると感じた

Slide 27

Slide 27 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 27

Slide 28

Slide 28 text

ペアプロ・モブプロのいいところ ① 28 手が止まる瞬間が減る → 設計・書き方で悩む時間がなくなる ん〜、現時点では そこまでしなくても よさそうに思います ナ ド ここクラスに 分けたほうが いいですかね?

Slide 29

Slide 29 text

ペアプロ・モブプロのいいところ ② 29 設計や書き方について議論することができる → 知見が増える △△の役割と✕✕の 役割のそれぞれに 分けてまとめたほう が良いと思います このクラスは〇〇の 役割だと思うので、 こうがいいと思うの ですがいかがですか ナ ド

Slide 30

Slide 30 text

ペアプロ・モブプロのいいところ ③ 30 相手のツールの使い方も知ることができる macのキーボード ナビゲーションを入れる とキーボードから 手を離さなくていけます option2回押しで↓ で複数選択して ペーストで時短 できます ナ ド

Slide 31

Slide 31 text

ペアプロ・モブプロのいいところ ④ 31 うまくいったときの感動が共有できる テスト通った〜! ちゃんと動いた〜! 進捗〜! ハピネス〜! ナ ド

Slide 32

Slide 32 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 32 ● 躓いたり、議論が停滞した場合に進まなくなる可能性 モヤ① 同じレベルの人同士でのペアプロ ● 得意不得意が分かれてるとやりやすい 例)1人目:フロント得意、2人目:バックエンド得意 → 得意なことを進めて加速しつつ、お互いが学べる

Slide 33

Slide 33 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 33 相手がどこを見ているか、何をしているかがわからない ● 個人的に心理的負担があった ● 今意思が通じているのか、別のことをしているのか、なに か他の問題が起こったのかがわからない モヤ② オンラインでのペアプロ ド ナ こう思うので こう書いて… ……。 ?

Slide 34

Slide 34 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 34 相手がどこを見ているか、何をしているかがわからない モヤ② オンラインでのペアプロ ド ナ うん! 相槌!リアルより1000000%盛りで! よさそう! ふむふむ こう思うので こう書いて… あ!障害でメンションが 来たので目を離します

Slide 35

Slide 35 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 35 相手がどこを見ているか、何をしているかがわからない モヤ② オンラインでのペアプロ 複数人でコードをリアルタイムで触るツールを使う Code With Me や VSCode Live Share 等

Slide 36

Slide 36 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 36 ● 話し込んだりして休憩を逃す ● 自分が疲れてきても相手に言えない雰囲気 モヤ③ 疲れる、時間を忘れてしまう 先に時間を決めておく タイマーをつける

Slide 37

Slide 37 text

ペアプロ・モブプロのモヤモヤ場面と改善方法 37 「こんなこともできないのか」と思われるのが恥ずかしい モヤ④ 相手にどう思われてるか気になる 本当に信頼関係が大切 お互いに自己開示しあいましょう

Slide 38

Slide 38 text

[余談] 自分の手応え感じづらいな💭 38 モヤ⑤ 「自分で書いた!書けた!」という実感がわからない いい感じでコード書けたけど ペアの方と一緒に書いたから、 手柄に含めづらいな…

Slide 39

Slide 39 text

39 なんか やってみてもいいかも ペアプロ・モブプロ

Slide 40

Slide 40 text

40 いやでも、1タスクにつき2〜5人つくんやけん 効率悪いやろ?

Slide 41

Slide 41 text

ペアプロ・モブプロって効率悪い? 41 開発の中で”効率”に関わる部分 ● レビューの時間 ● 差し戻しによる修正 ● レビュー待ちのPRが滞留

Slide 42

Slide 42 text

ペアプロ・モブプロって効率悪い? 42 開発の中で”効率”に関わる部分 ● レビューの時間 ● 差し戻しによる修正 ● レビュー待ちのPRが滞留 レビュー者(ナビゲーター)も前提や意図を把握している ので理解しやすい 並行で行う

Slide 43

Slide 43 text

ペアプロ・モブプロって効率悪い? 43 開発の中で”効率”に関わる部分 ● レビューの時間 ● 差し戻しによる修正 ● レビュー待ちのPRが滞留 なくなる

Slide 44

Slide 44 text

リソース効率とフロー効率 44 リソース効率 フロー効率 リソース効率が高い 「リソースの稼働率」を 考えること 常に全員が何かしらの タスクを持っている状態である = タスクが生まれてからリリース するまでの期間が短い 「価値を届けるためのリードタイム」 を重視して考えること フロー効率が高い =

Slide 45

Slide 45 text

リソース効率とフロー効率 45 フロー効率 タスクが生まれてからリリース するまでの期間が短い 「価値を届けるためのリードタイム」 を重視して考えること フロー効率が高い = モブプログラミングの考え方は、 本質的にフロー重視であり、機能 を安く作るのではなく、早く完成 させることを目標としている。 モブプログラミング・ベストプラクティス ソフトウェアの品質と生産性をチームで高める p.27 ペアプロ・モブプロは フロー効率を上げる

Slide 46

Slide 46 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 46

Slide 47

Slide 47 text

ペアプロを選択した私の当時の開発状況 47 概要 外部の仕様変更(インボイス対応) 期限 あり、調整不可 チーム人数 8人 チーム構成 1人は外部仕様を把握することに徹底 1人はチームを把握することに徹底 ペアプロ (3ペア)

Slide 48

Slide 48 text

ペアプロ・モブプロを選択した私の当時の開発状況 48 概要 新規機能開発、アジャイル開発 既にチームができていたところに入った 期限 調整可能 チーム人数 5、6人 チーム構成 PO + 開発3、4人 + SM ペアプロ・モブプロ

Slide 49

Slide 49 text

小さくリリースし、リリース後に効果を確かめながら 新機能の開発をしていく場合(アジャイル開発) ペアプロ・モブプロの効果的なタイミング 49 ① 新機能を早く世に出すほうが利益を得れるとき 新機能の開発コストを下げるよりも、新機能を早く市場に 送り出した方が大きな利益が得られるときには、フロー効 率を重視したほうがいい。 モブプログラミング・ベストプラクティス ソフトウェアの品質と生産性をチームで高める p.27

Slide 50

Slide 50 text

1つの機能を複数人で分担して、細かくリリースする場合 ペアプロ・モブプロで機能の構造や設計を把握しておく ペアプロ・モブプロの効果的なタイミング 50 ② 複数人が同じ箇所の構造を理解しておくとよい場合 連絡や把握の時間が減る フロー効率が上がる

Slide 51

Slide 51 text

相手と協力して仕様の確認から行うことができる 把握や考慮の漏れがないかどうかも平行で確認しながら、 実装を進めることができる ペアプロ・モブプロの効果的なタイミング 51 ③ 仕様が複雑で把握が大変な場合 この場合、計算が 合わない…!? インボイス制度 ってなんだ?

Slide 52

Slide 52 text

新規機能でほぼ0から設計して開発しているチームに 入った どういう設計思想かを理解するのにペアプロが役に立った ペアプロ・モブプロの効果的なタイミング 52 ④ チームに入りたてのとき テーブル構造が こんな感じで… UseCaseがこの 場所にあって… ナ ド

Slide 53

Slide 53 text

抜けるメンバーの知識や能力を伝授してもらうことが できる ペアプロ・モブプロの効果的なタイミング 53 ⑤ チームから人が抜けるとき ペアプロよりもペアワークが◎ 〇〇を意識して 設計するように しています ナ ド

Slide 54

Slide 54 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 54

Slide 55

Slide 55 text

ペアプロ・モブプロを1つの選択肢に 55 ⭐ チームやチームメンバーの状態、目の前にある課題に   応じて柔軟に変えていくことが大切 ● チームの状態で決める 決め方の例 ● 案件で決める

Slide 56

Slide 56 text

ペアプロ・モブプロを1つの選択肢に 56 ● チームの状態で決める チーム結成 モブプロ メンバー増える ペアプロ 知識定着する 1人プロ メンバー減る ペア or モブプロ メンバー増える ペアプロ …

Slide 57

Slide 57 text

ペアプロ・モブプロを1つの選択肢に 57 ● 案件で決める ○ 仕様把握が重要で大変 ■ 仕様把握することのみを行う人を立てて、 1人・ペアプロ ■ ペアワーク・モブワークで仕様把握からする ○ 正解がある程度存在して変化が少ない案件かどうか ■ はい:作り切るが重要 → 1人・ペア ■ いいえ:チーム全体での把握が重要 → ペア・モブ

Slide 58

Slide 58 text

させるよりプレーヤーが率先してやっていくとよい 58 ● マインド要素が強く、負担は大きい ● うまみを感じていないのに取り入れる・取り入れ続ける のは酷 きつい… 一人になりたい もっと自由に 書きたい

Slide 59

Slide 59 text

59 やってみたいと思ってくれたらうれしい… 1回やってみて! なんなら!

Slide 60

Slide 60 text

1. ペアプロ・モブプロとは 2. 1人プロのいいところと効果的なタイミング 3. やってみて感じたペアプロ・モブプロの いいところとモヤモヤ場面 4. ペアプロ・モブプロの効果的なタイミング 5. 状況や課題に合わせた動き方のススメ 6. まとめ 目次 60

Slide 61

Slide 61 text

まとめ 61 ● ペアプロ・モブプロ ○ フロー効率を高めることを目標 ○ 議論しながら進めれたり、メンバーの成長に つながったりする ● 1人・ペア・モブ、時と場合でそれぞれ効果的な場面がある ○ チーム状態や案件で決めるのが1つの指標に ● うまく使って効率を上げたり、チームメンバーの成長を促進させて いきましょう〜!