Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

モブプロ 体験会 Agenda . 集合・アイスブレイク / 10 min . 概要・ルール説明 / 10 min . ワークショップ準備 / 5-10 min . モブプログラミング / 60 min . ふりかえりと質問 / 30 min

Slide 7

Slide 7 text

体験会の様⼦

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

体験会のポイント

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

事前準備 達成感を味わってもらうための事前準備 体験会中に⽤意してある課題をある程度のところまで進み達成感を味わってもらいたいので、 体験会前にチャットツールなどで以下を準備しておいておきたい 使⽤する⾔語を選ぶ コードの共有⽅法を選ぶ github VS Code Live Share githubでコードを共有する場合、皆が触れるレポジトリに雛形をフォークしてもらう 参加者皆が振り返りのためのmiro(miroじゃなくても何かしら)のオンラインホワイトボー ドにログインする 参加者皆が開発環境を整える

Slide 15

Slide 15 text

アイスブレイク 体験会の効果をわかりやすくするアイスブレイク 「モブプロ とい聞いて思い浮かぶものは?」を考えて共有する 体験会の効果をわかりやすくするためにするのと、事前に皆でモブプロに認識を共 有することでスムーズにモブプロを⾏えるようにしたい 問題のドメインや使⽤する技術に対する⾃信を共有してもいいかもしれない xx⾔語得意な⼈ 逆ポーランド記法知っている⼈

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

お題について

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

逆ポーランド記法電卓 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

Slide 25

Slide 25 text

問題のポイント インクリメンタルに開発できる あまり前提知識がいらない、困ったら最初の⽅の解法はWebで調べられる 多くのチームが⾜し算を計算する (2演算以上)とこまではできて達成感できる 全部解くのはチャレンジング(基本的には難しい) ⾔語の縛りがないので好きな⾔語を選べる Ueyamaさんの簡単なプログラミング⾔語をライブコーディングで作るを参考にしてる

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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