TEAM-8-5

クライテリア

ペアプログラミング/モブプログラミングを実施しているか。

タイプ

バリューストリーム最適化

観点

プラクティス

FAQ

Q. 1人で行える作業を2人で実施するのは効率が悪い気がします。なぜやる必要があるのでしょうか?

ペアプログラミングによって、コードの正確性(品質)が担保されます。結果生産性の向上につながります。

用語解説

ペアプログラミング/モブプログラミング

ペアプログラミングはソフトウェア開発の手法の一つで、2人のエンジニアが共同でプログラミングを行う手法。メンバー同士で知識を共有でき、特定の業務が属人化しないためチームの技術力向上が見込めます。これを複数人で行う場合、モブプログラミングといいます。

参考資料

モブプログラミングを実際にやってみた - Qiita
「巷で噂のモブプログラミングってどうなんだろう?」と興味を集まったメンバーで集まって、実際にモブプロをしてみました。参考までに簡単にまとめておきます。 モブプログラミングは、2012年頃にHunter Industies社で取り組みが始まりました。そこで得た知見をWoody Zuillさん達がカンファレンス等で紹介することで広まっていきました。 以下の動画を見ると、実際にモブプログラミングをしている様子を見ることができます。 さらに2016年の様子のビデオが下記です。複数のモブが動いている様子を見ることができます。 モブプロは簡単に言うと、みんなで画面をみながらわいわいプログラミング(またはそれに準じた作業)をすることです。基本的な進め方・コツ・現場で出てきそうな問題点は、ペアプログラミングと似ていると思います。 場所:モニターのある会議室 環境:プログラミングするためのPC お題:牛尾さんが公開されている ゼロから始める DevOps メンバー:愉快な仲間たち(全5名) お題の動画を見ながら実装する ドライバー以外はみんなナビゲーター ドライバー交代は特に取り決めせずに流れに任せる 終わった後にふりかえり モブプログラミング 牛尾さんのデモ(VSTSを使って.NETのアプリケーションをAzure WebAppsに自動デプロイする)を実際につくる 入れ替わりのタイミングがわからない 志村うしろうしろ問題がよく起こる 志村うしろうしろ問題とは、ドライバー以外がガヤ芸人のように「もうちょい上!!」「右上!!」「うしろ!!」と指示しまくる現象のこと 得意なことを補完し合いながら進められるのがよい 一方でチームが変なテンションになってこだわってドハマリをしてしまうことがあった 現場でやる場合はメンバーの組み合わせ次第で工夫が必要そう ファシリテーターを明確に立てる 実際の現場でできそうなところからやってみる 体験後に実際に現場でやってみる場合について議論をしました。結論はないですが、参考までに個人的に思ったことも含めて以下にまとめておきます。 生産性が下がるのではないか問題 ペアプロで出てくる問題と同じ 手戻り・レビュー・テストを含めてホントにそうなんだろうか モブプログラミングをすることでチームのムードが悪くなる これはモブプログラミングの問題ではなさそう ふりかえりやコードレビューと同じで未来志向で進められるとよさそう 批判・否定してもよい結果は絶対に生まれないのでNo Blameで進める 参加するメンバーの組み合わせによる問題 発言しなくなってしまいそうな人にはドライバーをやってもらう 無理に全員でやる必要はなさそう できるところからはじめる 体験の共有に価値があること、全員が理解・実施可能になったほうがよいこと Continuous Deliveryの初期設定 フレームワークの設定・初期開発 意思決定を行いながら進めたほうがよいこと 重要な機能の実装 難しい問題・バグにぶち当たった時 最低限のルール(マナー)を定義する No Blame 否定ではなく提案をする(✕「それはないわー」◯「こうやったらどう?」) 最初にその日の作業の流れを書き出してからはじめる ファシリテーターを置く 毎回ふりかえりを実施する Let's モブモブ!! ここで得た知見をもとにいろんなアウトプットをしているのでリンクだけ紹介しておきます。