Upgrade to Pro — share decks privately, control downloads, hide ads and more …

チームをつくるモブプログラミング / Mob Programming to build teams

yattom
February 13, 2020

チームをつくるモブプログラミング / Mob Programming to build teams

デブサミ2020[13-E-8]でのセッションスライドです。

yattom

February 13, 2020
Tweet

More Decks by yattom

Other Decks in Programming

Transcript

  1. 2001年ごろアジャイルと出会い、開発者、チームリーダー、ト レーナー、導入支援と多様な立場で関わってきた。(株)永和シス テムマネジメントにて2010年頃からアジャイルコーチを主軸とし て活動。2014年独立。 プログラマー Python JavaScript Java C/C++ アジャイルコーチ

    (プロセス面) チームビルディング 現場導入支援 スクラムマスター支援 ふりかえり アジャイルコーチ (ものづくり面) モブプログラミング テスト駆動開発 テスト自動化 学びのゲームをデザイン、製作、デリバリー 宝探しアジャイルゲーム カンバンゲーム 心理的安全性ゲーム 著書・訳書 [email protected] twitter:@yattom https://www.facebook.com/yattom https://www.linkedin.com/in/yattom/ やっとむ / 安井力(やすいつとむ)
  2. 目的とゴールを定める • 目的: なにを目指すか、現在の優先事項、方向性 • 例: X機能の開発を全力で進める Yライブラリの使い方を共有する AさんがZモジュールの現状を把握する •

    ゴール: セッション終了時に到達したい点 • 例: X機能の正常系2パターンを実装してテストする Yライブラリを納得するまで動かして結果を残す AさんがZモジュールのシーケンスを図に描ける 目的や 方向性 ゴールと 進み方
  3. 「目的はこれ。いいですか?」ではダメ 「目的はこれこれです。いいですか?」 A) 「いいです(よくない)」 B) 「いいです(と思ったけど違った)」 C) 「いいです(聞いてない)」 • 少し議論や質問をして認識違いや

    理解の差異を埋める • 進めながら揃う部分もあるので 深入りしすぎない • セッション途中でも確認する https://www.oreilly.com/library/view/user-story-mapping/9781491904893/
  4. 進み方を表明するツール TODOリスト 作業の区切り ここまでできたね 快調! このTODOは☑ね 次はどれだっけ こっちのTODO? あれ先にしない? それがいいかも!

    ドライバーがしゃべる さてABCメソッド 書くぞ あれ、DEFだっけ 正常系はこうで 変数名 どうしよっかな FOOBARは? FOOBAR…と 戻り値の型int? intでよかった
  5. 進み方を表明するツール TODOリスト 作業の区切り ここまでできたね 快調! このTODOは☑ね 次はどれだっけ こっちのTODO? あれ先にしない? それがいいかも!

    さてABCメソッド 書くぞ あれ、DEFだっけ 正常系はこうで 変数名 どうしよっかな FOOBARは? FOOBAR…と 戻り値の型int? intでよかった intだとダメじゃね そう? いい気がする 結果ゼロどうする? 例外かと思った 例外でいいね なにしてたっけ コメント忘れてた 条件書き換えて テストしたい テストあるよ テスト変更し いやケース追加 このケースある テスト足らんじ あとにしよう えー…はーい できた気がする 処理がこうで、 チェックがあっ 引数のバリデー ンは…しなくて ので、ループの もいいし、フェ ポストエラーは ドライバーがしゃべる 注意: ナビゲーターがもうちょっと仕事したほうがよい あーうー…あー あーーー!おけ これでよさげ わからん…
  6. 議論と実験のバランスを取る • モブでの議論は大事 • 知見を出しあってお互いから学べる • 創造的な騒々しい議論ができる • 知識が組み合わさって新しいアイデアが得られる •

    話すだけではなく、試してみる • いいアイデアが出たら、書いてみる • 複数のアイデアは、書いて見比べる • 議論が平行線になったら、実際に動かしてみて比べる • 最初は議論 << 実験くらいの気持ちで • 結論が出るまで話す < 試してから結論を出す • 書く時間がもったいない < 書けば判明する・共有できる情報がもったいない
  7. その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト) ビルドパイプ ライン通る

    デプロイ できる 動く (E2E) 仕様漏れ がない (品 質テスト) よい設計 (リファクタ リング) モブ外の 人の評価 外部 システムと つながる
  8. その場でフィードバックを得る コードを 書く レビュー OK 動く (ユニット テスト) 仕様漏れ がない

    (品 質テスト) ビルドパイプ ライン通る デプロイ できる 動く (E2E) よい設計 (リファクタ リング) モブ外の 人の評価 外部 システムと つながる 楽しい! 学びが多い! 品質向上!
  9. 個々人のペースとやり方で復習する • 復習 ― モブの中で得た新しい知識を定着させる • セッション後に一定の時間を確保する • スタイルは個々人の自由 •

    ひとりで復習してもよい • モブ体制を維持しながら、個人作業としてもよい • モブとして復習するのもよい ※復習に限らず、モブへの参加・離脱は各自の判断でゆるくてもよい
  10. ϨϏϡʔͷ໨తͷ෼ྨ $IFDL -FBSOJOH &OIBODF ݕࠪ ֶश ڧԽ w ඼࣭Λ୲อ͢Δ w

    όάΛݟ͚ͭΔ w ςετͱͯ͠ w ʢ࠷௿ݶͷʣ
 ϦϑΝΫλϦϯά w φϨοδͷڞ༗ w εΩϧτϥϯεϑΝʔ w ৽ਓڭҭ w จԽͷৢ੒ w ϦϑΝΫλϦϯά w ΋ͬͱΑ͘ w ΋ͬͱΩϨΠʹ w ઌߦ౤ࢿ
  11. ڧΈ ऑΈ ϦΞϧλΠϜ
 Ϟϒϓϩάϥϛϯά ϨϏϡʔ 3FWJFX ✤ ৗʹνʔϜͷϕετΛ
 ໨ࢦ͢͜ͱ͕Ͱ͖Δ ✤

    ݁Ռ͚ͩͰͳ͘ϓϩηεΛ
 ධՁ͢Δ͜ͱ͕Ͱ͖Δ ✤ ྫྷ੩ʹݟΔ͜ͱ͕Ͱ͖Δ ✤ શମ࠷దΛߟ͑ͯϑΟʔυ
 όοΫ͠΍͍͢ ✤ ͦͷ৔ͷ೤ʹΑͬͯޡͬͨ
 ൑அΛͯ͠͠·͏Մೳੑ ✤ ہॴ࠷దʹؕΔՄೳੑ ✤ ዁౓͕ੜ·Ε΍͍͢
 FYΠϚΠν͚ͩͲ͕࣌ؒͳ͍͔Βʜ ✤ ݁ՌͷΈͰಡΈऔΕͳ͍
 ෦෼Λ஌ΔͨΊʹ͸ɺ
 ίϛϡχέʔγϣϯ͕ඞཁ
  12. ڧΈ ऑΈ ϦΞϧλΠϜ
 Ϟϒϓϩάϥϛϯά ϨϏϡʔ 3FWJFX ✤ ৗʹνʔϜͷϕετΛ
 ໨ࢦ͢͜ͱ͕Ͱ͖Δ ✤

    ݁Ռ͚ͩͰͳ͘ϓϩηεΛ
 ධՁ͢Δ͜ͱ͕Ͱ͖Δ ✤ ྫྷ੩ʹݟΔ͜ͱ͕Ͱ͖Δ ✤ શମ࠷దΛߟ͑ͯϑΟʔυ
 όοΫ͠΍͍͢ ✤ ͦͷ৔ͷ೤ʹΑͬͯޡͬͨ
 ൑அΛͯ͠͠·͏Մೳੑ ✤ ہॴ࠷దʹؕΔՄೳੑ ✤ ዁౓͕ੜ·Ε΍͍͢
 FYΠϚΠν͚ͩͲ͕࣌ؒͳ͍͔Βʜ ✤ ݁ՌͷΈͰಡΈऔΕͳ͍
 ෦෼Λ஌ΔͨΊʹ͸ɺ
 ίϛϡχέʔγϣϯ͕ඞཁ ิ׬ؔ܎
  13. モブプロが生きる仕事 仕事に生かす モブプロの強み 仕事に生かせない 高度な知識を 組み合わせる 全員の知識を生かせる 形式的に定義された知識 均一な知識 解くべき問題が複雑

    個々人の総和以上の 成果が出る 容易な問題の積み重ね 創造性が求められる エンゲージメントが 引き出される 単純作業 密な連携が必要 オーバーヘッドが 最小になる 明確に切り分け、 定義された作業 ルーチンワーク
  14. モブプロが生きる仕事 最近の経験だと… ✓スクラッチ開発2ヶ月弱 ✓メンバーはいるけどパートタイム ✓知らんサービスいろいろ試す ✓どレガシーな既存システムと結合 ✓もやっとしたイメージだけで 何を実現したらいいかわからない ✓でも本番でユーザーに見せる (マジで?)

    • 新しいことを試す • 未知のものを使う • 全体的な設計 • 問題が複雑 • 正解がわからない • いろいろ起きて、どんどん対処する • 曳光弾開発 (『達人プログラマー』) • 顧客も一緒 • メンバーのスキルが高い • みんな乗り気 • 一部屋占拠して部室化
  15. 仕事に生かすかチームに生かすか? 仕事に生かす モブプロの強み チームに生かす 高度な知識を 組み合わせる 全員の知識を生かせる メンバーどうしで学びあう 解くべき問題が複雑 個々人の総和以上の

    成果が出る 自分の力の出し方を学ぶ 協力が上手になる 創造性が求められる エンゲージメントが 引き出される モチベーションが上がる 障害物が見つかる 密な連携が必要 オーバーヘッドが 最小になる 文化を醸成、維持する
  16. モブの目的: 仕事かチームか 仕事をドライブ • 詳しい人がドライバー • 今やるべき箇所をやる • 議論する •

    幅広いメンバーでやる チームをブースト • 詳しい人がナビゲーター • 難しい箇所をやる • 質問する • 必要なメンバーでやる
  17. 高 パ フ ォ ー マ ン ス 低 チームブースト重視

    仕事ドライブ重視 アプローチ 仕事面 チーム面 合計 こうかな?
  18. 高 パ フ ォ ー マ ン ス 低 チームブースト重視

    仕事ドライブ重視 アプローチ 仕事面 チーム面 合計 こうじゃない?
  19. 高 パ フ ォ ー マ ン ス 低 チームブースト重視

    仕事ドライブ重視 アプローチ 仕事面 合計 むしろこうしたい チーム面
  20. モブの目的: 仕事もチームも 教育軽視 教育重視 仕事軽視 簡単な仕事 仕事重視 難しい仕事 研修 タスク丸投げ

    優秀な人がレビューする できなかったら 教える さしみタンポポ OJT 常時レビュー その場で理解する 全員の知識を使う 品質の高い成果を 完成する ベストの仕事をする できる人に任せる 使い捨て人材 議論と実験 優秀な人がタスクアサイン
  21. 仕事面 高 パ フ ォ ー マ ン ス 低

    チームブースト重視 仕事ドライブ重視 アプローチ 合計 チームが成長し 学びが高度化していく チーム面 チームが学び成長する モブプロが上手になる
  22. 「チームの心理的安全とは、対人のリスクを取っても 安全であるという、チーム全員の信念である」 “Psychological Safety and Learning Behavior in Work Teams”

    Amy Edmondson, 1999 Amy C. Edmondson https://twitter.com/amycedmondson 心理的安全 (Psychological Safety) 「「心理的安全」とは、関連のある考 えや感情について人びとが気兼ね なく発言できる雰囲気をさす。」
  23. 私(I) 主観的 私たち(We) 間-主観的 この図は『インテグラル理論 多様で複雑な世界を読み解く新次元の成長モデル』を参考にしながら独自に作ったもの https://www.amazon.co.jp/dp/B07TSD52MX それら(Its) 間-客観的 それ(It)

    客観的 個人 美意識 文化 スキル 役割 チーム / モブ 美意識 価値観 ミッション 得意範囲 組織? 全体性を維持しながら成長するには、内側のすべてのレベルと、 四象限すべての方面を包含しなくてはならない 美 善 真
  24. ✤ ׂΕͨ૭Λͳ͘͢ ✤ ֝ͷࣽ෺ ✤ ఻ୡ͠Α͏ ✤ %3:ݪଇ ✤ ௚ߦੑ

    ✤ ࣗಈԽ ✤ ֆըͷ੍࡞ͷ΍Ί࣌Λ஌Δ ୡਓνʔϜ IUUQTBN[OUP/J;F