チームを作るモブプログラミング 内側と外側から語る

チームを作るモブプログラミング 内側と外側から語る

自己紹介

アジャイルコーチ

  • やっとむさん
  • テスト駆動飲み会を2月26日 ​

    デンソーのエンジニア

  • 及部さん
  • モブプログラミングを教えにいってる
  • シルバーバレッットクラスというチームをやっている
  • ユーチューブとPODCASTを今日からはじめた
  • モププロ講座を開設予定 ​

    モブプロの紹介

    モブプログラミング

  • ハンダーインダストリー社の紹介
  • エンジニアプラクティスだけでない
  • 仕事を分担するより効率わるいと思われがち
  • チームをブーストと仕事をドライブの2つ視点で説明 ​

    聞き方

  • 興味があることだけ聞いてください
  • ショートトークとクロストーク
  • 質問と対面形式でやる ​

    モブプロ説明

    モブプロの本紹介

  • モブプロのやり方を説明している本
  • みんなが共感することから始める ​

    目的とゴールを定める

  • 今われわれはなんのためにモブしているかをはっきりとする
  • 新しい人の学習、来週のリリースか、ライブラリ共有か
  • 今日はどこまでいくかのゴールまず定める ​

    進め方

  • 目的はこれでいいですか?ではだめ。みんなで決める
  • 進め方を表明する ​

    道具

  • TODOリストを最初にあげておく
  • 作業の区切りを確認する
  • ドライバーがしゃべる(もくもくとコーディングしない) ​

    議論と実験のバランスを取る

  • モブでは議論が大事
  • リーダーが全部決めるはダメ
  • 議論も大事だがためすのも大事
  • 結論は出ていないが試すのが大事
  • 最初は議論<<実験くらいの気持ちで、実験が大事 ​

    いいところ

  • その場でフィードバックがもらえる
  • ビルドパイプラインとおったか、画面確認等、その場でできる
  • 品質、テスト、リファクタリングをその場でやることが有効
  • 品質控除、楽しい、学びを得る ​

    その場でフィードバックを得る

  • テストでなんかあってもその場で得ることができる
  • モブ作業を終えたら振り返りをする
  • よりよりプロダウトをめざす
  • 障害物が出てくる ​

    個々の人のペースでやり取りする

  • 復習する時間を設ける
  • セッション後に一定時間を確保する ​

    クロストーク

    ネガティブな反応をされたときは

  • まず二時間だけやってみないかと提案する
  • チーム外部の人をまきこんでみる
  • 外で体験した人の話を入れる ​

    とはいえ個人作業したいといわれたら

  • 個人んでやるのはよい
  • ただまずはモブをやってみてほしい
  • この人は1人のがよいなどの発見がやるとわかる
  • モブプロはやってみて体験できることがある
  • ハンダーインダストリー社の動画紹介 ​

    チームをブーストするモブプロ

    チームの内側を強くする

    スキルトランスファーの話(知識移転)

  • 経験値高い人がドライバーだとすごく進むが、意見交換しずらい
  • 入ったばっか人がやる方が、ジャストインタイムできけるから
  • 教育的なことを意識してやるが、意外とわかっていない人がほかにいるので、スキルを伝搬しやすい
  • SECIモデル
  • 暗黙知もまとめて伝える(形式知になっていないもの)
  • コードの組み立て方、ツール、何をどうやってなぜつくったか、問題解決の方法などがこれにあたる ​

    モブとレビュー

  • レビューおじさん問題
  • スキルアップをするとコードを書く時間がへる
  • モブだとこれが改善できるコードがかける ​

    レビューの目的の3分類

  • ナレッッジ、品質、リファクタリング

    モブプロがカバーできること

  • リアルタイムレビューができる
  • チームの合意がとれている
  • 忖度せずチームのベスト
  • タイポするとすぐに指摘される
  • 検査、学習、強化のうち、強化はあまりカバーできない
  • カバーするために振り返りにちかいレビューをやる ​

    モブ弱み

  • その場の熱が誤ったコード
  • 局所最適に陥る ​

    レビューの弱み

  • 忖度がうまれやすい ​

    中長期的な目線で捉える

  • 初期はモブを多めにやってチーム文化を醸成
  • うまくいけばソロ,ペアでやって、属人化は避ける ​

    質問

    喧嘩になりませんか

  • 仲が悪いとそうなる
  • 大事なのは議論は悪いことではない
  • ちゃんと伝わる言葉で無駄な喧嘩になりそうな言葉は避ける。ふざけない ​

    わからないですっていえない

  • スキル差が多い時は、一時間で休憩とって復習する時間をとる
  • 自分の知識をうまく渡せる場所なので、みんなの成長を優先する ​

    仕事をドライブするモブプログラミング

    仕事をドライブするとは

  • ソロワークよりも優れた成果が出せるモブ
  • かいた行数とか実装工数で評価するとモブプロの良さがない
  • 単縦な生産性だとモブの良さは測れない
  • よりユーザのニーズをくんだ仕様ができたなどが、より成果のでるモブプロ
  • 単純作業をモブでやっても効果は薄い
  • 仕事の分担がすでにされた開発内容 ​

    モブに向いているケース

  • クラッチ開発で2ヶ月弱の工数
  • メンバーがいるけどパートタイム
  • モブが初めてだったり、チームの仕事が初めての場合
  • ユーザがすぐそばで待機している状態がモブの良い形 ​

    仕事かチームか

  • 詳しい人はナビゲータをするべきだが、仕事を意識すると、ドライバーをやったほうがよくなってしまう
  • 仕事をドライブをするか、チームをブーストするか
  • どっちによせるか
  • 仕事をドライブをするー>1人でやってるのと同じ
  • チームをブーストするー>研修 ​

    仕事をドライブするモブ

  • 最初はどっちつかずになる
  • モブプロが上手になると、両方を重視した最高に生産性が高い状態になる
  • 最初は、GITの使い方の基本的な話になるが、モブを継続してチームをブーストすると、ハイレベルな設計士の話などに発展
  • 能力と責任の2軸でバランスを取る
  • 仕事が快適になると学びが低いので責任度合いをあげる
  • 心理的安全性が必要ー>言いたいことがいえる状況を作る
  • タスクの不確実性、リソース不足があっては心理的安全性とはいえない ​

    質問2

    やっぱり仕事を分担するほうがよいのでは?

  • 単純作業をやるならモブは不要
  • 人数が多すぎるとモブは無駄になる
  • 短期的にみると確かに非効率だが中期的に見る
  • チームの成長を考える
  • モブの成果とは何かをちゃんと定義するー>できたプログラムの行数じゃない ​

    ほどよい学習状態とは?工夫することは

  • チームが安定した状態がそんなにあるだろうか
  • パッケージ互換性、仕様変更とかいろいろ安定しない要素はある
  • なにか問題があったらモブで取り組む気持ちでいくと
  • 実はトラブルが起きていることに気づく
  • もしほんとうに問題ないなら、人工的に作る
  • 外部から学びを得る機会をえる
  • ラーニングセッションを取り入れる ​

    コーチ目線でモブが使えているチーム特徴とは?

  • みんながしゃべる
  • ドライバーをみんながやろうとする
  • マネージャとかがほっといてくれているチームがモブをうまくできている ​

    最後に

  • モブというかチームの話なんです ​

    モブプロの全体像

  • チームの内側と外側を考える
  • チームの内側と外側のバランスー>タックマンモデル
  • 大事なのはモブが難しいと思うかもしれないが、モブプロでなくてよい
  • モブプロ=チームワーク
  • 大事なのは場面場面で最適な選択肢を行うこと
  • チームワークとしてのモブプロを使ってほしい
  • 一緒に行動することではなくて、自分たちで選択して、自分たちでやめたり、実施したりする
  • 相互主観ー>みんなで同じものをみて、お互いの見かたを共有するてこと?<ーむずかしい