エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【WEB+DB PRESS】Vol.102 はじめてのペアプロ/モブプロ

目次

  1. ペアプロ/モブプロとは何か
  2. ペアプログラミングの基本
  3. ペアプログラミングの実践ノウハウ
  4. モブプログラミングの基本
  5. モブプログラミングの実践ノウハウ

まとめメモ

ペアプログラミングとは

2人でプログラミング(および分析、設計、テスト)とプログラムの改良を同時に行うやりとりのこと

モブプログラミングとは

ペア(2人)ではなく、モブ(チーム全体)でプログラミングを行う。

思うのだが、タイピングする人は、いろんな人からあれこれ支持されて、ストレスたまらないのかな?

役割

ドライバー

キーボードの前にいて、コードを書き進めていく人

ナビゲーター

ドライバーの隣に座り、ドライバーと会話しながら導く人

ペアプログラミングの歴史

XPを最も強く体現したプラクティスがペアプログラミングだった。
モブプログラミングは、XPのプラクティスをベースとして開発された発展的な手法。

ペアプロ/モブプロの効果

作業への集中と質の向上

  • リアルタイムでコードレビューしてコードに反映
  • 相互監視されることで、目標がブレを防止
  • 会話による思考整理
  • 集合知の結集
  • ケアレスミスの減少

知識と学びの共有

  • 技術力の底上げと高い教育
  • 過程(プログラミング)から学ぶ
  • 属人性の減少
  • 暗黙知の共有

ペアプログラミングの進め方

  • コードを書く前に方向付けを行う
  • コードを書きながら会話し、考えを共有する
  • ロールを交代する

組み合わせ

ベテランと新人の関係は、相互補完の関係にあり、理想形。
ベテラン同士は、揉めたりする可能性もある。
いわゆる音楽性の違いみたいなのが発生する。
新人同士は、学習の機会が少なく、あまり成果が得られない可能性が高い。

ペアプログラミングの実践ノウハウ

なるべく開発環境は、統一する。
しかし、現実的な解決策ではないので、エディタやIDEの依存度を下げるリアルタイム共同編集機能を備えた環境を作る。

ペアプロの強制はしてはいけない。
どうしても受け入れられない人もいるので、そのことは認めなくてはいけない。

知識はペア内にしか残らないので、ペアのローテーションをする。
その際、意図を残すプログラミングを心がける。
※それは普通のことな気もするが。。。

モブプログラミングの基本

モブプログラミングの始め方

  • 大画面のディスプレイを用意する
  • 解決する課題を絞る
  • ドライバーが積極的に助けを求める
  • ナビゲーターは手分けして調査

日本だとデカいディスプレイは高いので、プロジェクターにしたほうがいい気がする。

モブプログラミングを支える文化

スウォーミング

課題を複数のタスクに分散して作業すること。
変化に対する対応能力を高く保てる。

高度な意思決定

情報が常に集まってくるので、感覚の同期や意思決定の作業が迅速に行える。

高速な意思決定に必要なことは、迅速なフィードバック、ふりかえり、技術負債の認識。
実施する上で、上記のことを認識してやる。

外部との信頼関係

生産性に疑問を持つ人は多い。
近年のプログラミングは、定型文のコピペではないので、そのことを理解してもらう必要がある。

モブプログラミングの実践ノウハウ

モブプログラミングを支える技術

メインブランチでの開発

全員で開発するのでレビュー時に戻りが発生する可能性を下げる。
マージ作業がいらなくなるので、苦痛が減る。

変更したらすぐにデプロイ

モブプログラミングにかぎらずではあるが。。。

技術的負債の解消

集合知を活かして、どこで問題解決するかを選定する。
リスクを減らして対応できる可能性が高い。

感想

集合してやるのは、良さそうな感じはするが、誰かに頼り切っている奴らが多いと、破綻しそうな気がする。
構成するメンバーの価値観が、似通ってないとキツそう。
読んでて思ったのは、個を高めることに貪欲な人でないと、正の循環が生まれず、やってもメリット薄いような気がした。