社内モブプロ普及のための「2時間でできるリモートモブプロ体験会」を20分で紹介する / 2 hours Mob Programming Trial Workshop

467edb2e221a47426f19405f53aa51ca?s=47 nakaly
June 27, 2020

社内モブプロ普及のための「2時間でできるリモートモブプロ体験会」を20分で紹介する / 2 hours Mob Programming Trial Workshop

モブプログラミングを導入したいと思っていても1人で出来るものでもないですし、良さそうだなと思ってもやったことないと自信を持ってお勧めできないというところはあると思います。

弊社では、継続的にモブプログラミングをしているチームはまだあまりないのですが、興味のある人はいそうです。また、ジュニアの育成に悩むマネジメント層からの興味もあり、モブプロ 体験会を実施することになりました。

すでに5回実施して参加者からは好評を受けているその中身を紹介したいと思います。

https://confengine.com/scrum-fest-osaka-2020/proposal/14509/220

467edb2e221a47426f19405f53aa51ca?s=128

nakaly

June 27, 2020
Tweet

Transcript

  1. 社内モブプロ普及のための 「2時間でできるリモートモブプロ体験会」 を20分で紹介する

  2. ⾃⼰紹介 LINE FukuokaでAgile Coachやっています 元々はサーバーサイドエンジニアで、その後、リーダーやったり、 エンジニアリングマネージャーやったりしてました 特定のチームでAgile Coachとして働くのと並⾏して、社内のエンジニアリング マネージャーコミュニティーを作る活動(読書会、OST、相談会)も企画運営しています

  3. 話すこと モブプロ体験会とはどんなものか、何に気をつけて実施するか 話さないこと モブプロを実際のチームで実践した話

  4. モブプロ とは? [狭義] チームメンバー全員で同じ時間に同じ場所で同じコンピューターで同じことをする ということ [広義] 3名以上で同じ時間にVideoチャットでも、画⾯共有でも、同じことをするという こと <- 今回はこちら

  5. モブプロ のメリット 体験会でも実感しやすいもの 普通のレビューでは共有されない知識(暗黙知)も含め知識が共有されるスピードが早い バグや技術的負債が減る 集合知で難しい問題を解くことができる 業務で継続していくことで実感していくもの ジュニアメンバーやチームに⼊って⽇が浅いメンバーが早く即戦⼒になる キーパーソンへの依存度を下げていける リードタイムの減少

    (⼀度に並⾏してたくさんするのではなく優先順位が⾼いものからユ ーザーに提供していく)
  6. モブプロ 体験会 Agenda . 集合・アイスブレイク / 10 min . 概要・ルール説明

    / 10 min . ワークショップ準備 / 5-10 min . モブプログラミング / 60 min . ふりかえりと質問 / 30 min
  7. 体験会の様⼦

  8. None
  9. None
  10. 体験会のポイント

  11. 狙い ひとまず体験してもらって良い印象を持ってもらう ⻑期的にモブプロをするチームになるには、↑であげたようなメリットを認識しつつある程度 の期間チームで取り組んでいくことは⼤事思う しかし、今回のものは2時間で以下のようなところを狙っている 体験しないとわからない良さを楽しんでモブプロすることで得てもらう 達成感と学びを味わうことで業務に取り⼊れてもいいなと思ってもらう

  12. 対象者 体験会も楽しみやすく、その後業務に活かしやすいようにチームで呼ぶ 同じサービスを開発しているチーム 興味はあるけどやったことない⼈がメインユーザー、聞いたことある、もしくは、やった ことあるけど業務に取り⼊れてないという⼈がいてもいい 全く知らない、興味ないという⼈をの強制参加はしない

  13. ⼈数 モブプロに適した⼈数で参加してもらう 1チーム3-5⼈で複数チーム同時にやってもいい 書籍などでもオススメされている⼈数 参加者がたくさんいる場合は分割してでも ⼤きなグループにしすぎないようにしている 体験会だから⼤⼈数でやるということをしない

  14. 事前準備 達成感を味わってもらうための事前準備 体験会中に⽤意してある課題をある程度のところまで進み達成感を味わってもらいたいので、 体験会前にチャットツールなどで以下を準備しておいておきたい 使⽤する⾔語を選ぶ コードの共有⽅法を選ぶ github VS Code Live

    Share githubでコードを共有する場合、皆が触れるレポジトリに雛形をフォークしてもらう 参加者皆が振り返りのためのmiro(miroじゃなくても何かしら)のオンラインホワイトボー ドにログインする 参加者皆が開発環境を整える
  15. アイスブレイク 体験会の効果をわかりやすくするアイスブレイク 「モブプロ とい聞いて思い浮かぶものは?」を考えて共有する 体験会の効果をわかりやすくするためにするのと、事前に皆でモブプロに認識を共 有することでスムーズにモブプロを⾏えるようにしたい 問題のドメインや使⽤する技術に対する⾃信を共有してもいいかもしれない xx⾔語得意な⼈ 逆ポーランド記法知っている⼈

  16. モブプロ⾃体の解説 タイピストとその他のモブという役割の説明 タイピスト キーボードを触る唯⼀の⼈ 10分などのサイクルで交代し、原則全員がタイピストになるように回す スマートなインプット作業者 その他のモブがしてくれと頼んだことを理解する 指⽰が理解できないときはわかるまで質問する 頼まれたことをコードとして実装する その他のモブを信頼し、⾃分ではしないような実装も躊躇せず試す

    議論には参加して意⾒は⾔うが全てを⾃分1⼈で決めないようにする
  17. モブプロ⾃体の解説 その他のモブ キーボードを触らない⼈。2〜5⼈くらいがおすすめ 問題解決につながる次の論理的ステップを⾒つけるために協⼒する 理解できるまで質問する モブ全体の理解の⽔準を上げるために貢献する 眼の前の問題に集中する 他のメンバーの意⾒に傾聴する システムの中に改善すべき部分を探す

  18. モブプロ⾃体の解説 ⼼構え ⾃分がしないような他のメンバーのアプローチを受け⼊れましょう! それをコードにし 検証することにも意義があります 対⽴的にならないようにしましょう! モブは「わたしたち」で⾏うもの。主語は「わた し」や「あなた」ではなく、常に「わたしたち」を意識しましょう 考えていることをどんどん声に出しましょう 原則としてタイピストのディスプレイをみるようにしましょう

  19. モブプロ⾃体の解説 モブ時間、進⾏の説明 今回は12分交代 10〜20分交代くらいが体感的なおすすめ タイマーは皆が同期が取れるWEBタイマーのcuckooを使⽤

  20. モブプロ⾃体の解説 Remoteにおけるtips zoomはdesktop共有(もしみられたくない通知とかなければ) zoomの注釈/annotation機能を使ってコメントやお絵かき (共有解除で消える) 次のタイピストは準備しておく zoomを全画⾯にしておくと画⾯共有時にも顔が⾒える

  21. モブプロ実施中のポイント モブプロ経験者として体験会をリードする⼈(ファシリテーター)がいる場合 開発のやり⽅には⼝出ししない 要件が曖昧な記述にしてあるので、Product Ownerの役割をする モブプロ⾃体やモブプロのやり⽅に関する質問は回答する ひとまずはタイピストやモブの振る舞いや交代タイミングなどはチームによってちょうど いい感じのものを⾒つけていく必要はあると思うが、ひとまずは型を体験してもらう ファシリテーターなしでもやれるはず

  22. お題について

  23. 逆ポーランド記法電卓 1. ⽂字列を数字で受け取り、それを数字と認識し表⽰する input: '1' output: 1 2. ⾜し算を計算する (1演算のみ)

    input: '1 2 +' output: 3 3. ⾜し算を計算する (2演算以上) input: '1 2 + 3 4 + +' output: 10
  24. 逆ポーランド記法電卓 4. 引き算、掛け算、割り算を計算する input: '2 3 * 3 1 -

    /' output: 3 5. 例のような1引数関数を実装する input: 'F[. . +]; 1 F ' output: 2 6. 2引数関数を実装する (ここまでくるとフィボナッチ数列が計算できる) input: 'F[a b +]; 1 2 F ' output: 3
  25. 問題のポイント インクリメンタルに開発できる あまり前提知識がいらない、困ったら最初の⽅の解法はWebで調べられる 多くのチームが⾜し算を計算する (2演算以上)とこまではできて達成感できる 全部解くのはチャレンジング(基本的には難しい) ⾔語の縛りがないので好きな⾔語を選べる Ueyamaさんの簡単なプログラミング⾔語をライブコーディングで作るを参考にしてる

  26. 振り返り Fun & Done & Learn できることや学びにフォーカスするので、ポジティブな印象を持ちやすい それほど時間かからずに気軽にできる 時間が余れば、実務で取り⼊れるとしたらどんなとき、どんなことが障害になりそうとい ったことも考えてもらう

  27. 体験者の声 知識共有系 知識がn倍で進む 他の⼈の発想のスピード感を味わえた 同じ課題に対して皆がそれぞれ違うアプローチを持っていることを知った 実装⽅針を共有できた 新しい⾔語を学ぶのにいい⽅法 他の⼈がどのようにコーディングするか学んだ テストファーストなど良いコーディングの習慣を学んだ 他の⼈のやり⽅を聞くのが⾯⽩い

  28. 体験者の声 集合知系 1⼈でやったら時間がかかるところがすぐに解決できた どう実装するかわかっていなかったことがわかっていく明確になっていく過程が楽しい デバッグがめちゃくちゃ早い 謎を簡単に解決できた 意外とシンプルに作れた リードタイム系 対応スピードが早く出来た気がする リードタイムが短い

  29. 体験者の声 リモートならでは系 解決策を議論するのが普通より簡単 ⼤きなスクリーン⾒るより、画⾯共有の⽅が⾒やすい remoteでも意外とうまくいく 楽しい系 プログラミングは楽しい 強調して働くのは楽しいと学んだ みんなで問題を解くのは楽しい ディスカッションしながらのコーディングは楽しい

    ゲームみたい
  30. 体験者の声 難しい系 思考をうまく伝えられないことを学んだ ⾃分の思考を⾔葉で伝えるのが難しい 喋るの難しい 気を使ってしまうとディスカッションに⼊れなくなる メンバーが置いてけぼりになっていないか気をつけないといけない

  31. 体験者の声 その他 とりあえずコードを書いて議論した⽅が良さそう 他⼈にアイデアを説明する⽅法を学んだ 議論の重要性を学んだ とても時間が短く感じた 時間が短かったのでスリリングさがあった みんないろいろなことを考えているので発⾔しまくるといい 皆が優秀なエンジニアだと再確認できた

  32. ご静聴ありがとうございます! みなさま良いモブライフ を!