目次
まとめメモ
ペアプログラミングとは
2人でプログラミング(および分析、設計、テスト)とプログラムの改良を同時に行うやりとりのこと
モブプログラミングとは
ペア(2人)ではなく、モブ(チーム全体)でプログラミングを行う。
思うのだが、タイピングする人は、いろんな人からあれこれ支持されて、ストレスたまらないのかな?
役割
ドライバー
キーボードの前にいて、コードを書き進めていく人
ナビゲーター
ドライバーの隣に座り、ドライバーと会話しながら導く人
ペアプログラミングの歴史
XPを最も強く体現したプラクティスがペアプログラミングだった。
モブプログラミングは、XPのプラクティスをベースとして開発された発展的な手法。
ペアプロ/モブプロの効果
作業への集中と質の向上
知識と学びの共有
- 技術力の底上げと高い教育
- 過程(プログラミング)から学ぶ
- 属人性の減少
- 暗黙知の共有
ペアプログラミングの進め方
- コードを書く前に方向付けを行う
- コードを書きながら会話し、考えを共有する
- ロールを交代する
組み合わせ
ベテランと新人の関係は、相互補完の関係にあり、理想形。
ベテラン同士は、揉めたりする可能性もある。
いわゆる音楽性の違いみたいなのが発生する。
新人同士は、学習の機会が少なく、あまり成果が得られない可能性が高い。
ペアプログラミングの実践ノウハウ
なるべく開発環境は、統一する。
しかし、現実的な解決策ではないので、エディタやIDEの依存度を下げるリアルタイム共同編集機能を備えた環境を作る。
ペアプロの強制はしてはいけない。
どうしても受け入れられない人もいるので、そのことは認めなくてはいけない。
知識はペア内にしか残らないので、ペアのローテーションをする。
その際、意図を残すプログラミングを心がける。
※それは普通のことな気もするが。。。
モブプログラミングの基本
モブプログラミングの始め方
- 大画面のディスプレイを用意する
- 解決する課題を絞る
- ドライバーが積極的に助けを求める
- ナビゲーターは手分けして調査
日本だとデカいディスプレイは高いので、プロジェクターにしたほうがいい気がする。
モブプログラミングを支える文化
スウォーミング
課題を複数のタスクに分散して作業すること。
変化に対する対応能力を高く保てる。
高度な意思決定
情報が常に集まってくるので、感覚の同期や意思決定の作業が迅速に行える。
高速な意思決定に必要なことは、迅速なフィードバック、ふりかえり、技術負債の認識。
実施する上で、上記のことを認識してやる。
外部との信頼関係
生産性に疑問を持つ人は多い。
近年のプログラミングは、定型文のコピペではないので、そのことを理解してもらう必要がある。
モブプログラミングの実践ノウハウ
モブプログラミングを支える技術
メインブランチでの開発
全員で開発するのでレビュー時に戻りが発生する可能性を下げる。
マージ作業がいらなくなるので、苦痛が減る。
変更したらすぐにデプロイ
モブプログラミングにかぎらずではあるが。。。
技術的負債の解消
集合知を活かして、どこで問題解決するかを選定する。
リスクを減らして対応できる可能性が高い。
感想
集合してやるのは、良さそうな感じはするが、誰かに頼り切っている奴らが多いと、破綻しそうな気がする。
構成するメンバーの価値観が、似通ってないとキツそう。
読んでて思ったのは、個を高めることに貪欲な人でないと、正の循環が生まれず、やってもメリット薄いような気がした。