Open1
ペアプログラミング

ペアプログラミング導入にあたる資料を作成する
スライド作成の参考資料
背景
1. 現状の開発課題
- 作った人が退職しており修正に時間がかかる
- ドキュメントがない、間違っている、古い
- コードが複雑で何か書いているかわからない
- 誰かが休むと仕事が止まる
- キャリアチェンジしにくい(フロントからバックなど)
属人化により運用が大変
2. ありたい姿
- 急な人の入れ替わりが発生しても問題なく開発ができる
- ジョブチェンジ
- キャリアチェンジ
- 長期休暇
人の移動を前提とした開発体制作り
課題
3. 課題
- 個人任せの開発スタイル
- とりあえず動くものを早くお客様に届けることが評価される文化
- 品質より多機能(一部顧客しか利用しない機能)が良いとされる文化
- 運用フェーズのことを考えていない
とりあえず動くものを早くお客様に届けることが評価される文化を変えることが大事
解決策
4. アジャイル開発の登場
短いサイクルを開発することで要求に素早く対応する開発手法
- XP
- 変更への対応力を高めた手法
- テスト駆動開発
- ペアプログラミング
- リファクタリング
- スクラム
- スケジューリングや進捗を重視する手法
- デイリースクラム
- スプリントプランニング
属人化を和らげ、柔軟に開発できる
5. アジャイル開発の問題
スクラムは開発チーム各人の高いスキルが求められ、すぐに全て採用は難しい
6. ペアプログラミングの提案
- アジャイル開発とともに採用される
- ペアプログラミングとは、2人で1つのエディターを利用してコードを書く
効果
メリット
- キャリアチェンジしやすい
- フロント、バックどちらもチャレンジしやすい環境
- 新しい人は入りやすいし、転職しやすい
- 属人化を軽減することができる
- 相互確認でミスを防止できる
- レビューも兼ねるので、コードの品質も保て、スキルアップできる
- リモートによるコミュニケーション不足の解消
- コードの書き方だけでなくエディターの使い方、コマンド操作も学べる
デメリット
- 単純計算で工数が倍になる
- 1人日が2人日になる
- 毎月のリリースを減らす必要がある
- 対立が起きると効率が下がる
採用している会社
- メルカリ
- サイボウズ
https://blog.cybozu.io/entry/2022/06/08/141944
https://blog.cybozu.io/entry/2022/04/14/170000 - layerX
- Yahoo
- ZOZO
- グロービス
- クラスメソッド
- ホワイトプラス
サイボウズでの事例1
毎日実施
参加人数は2〜4人
ドライバー
- 自主的にどんどん記述
- 行き詰まったらナビゲータと解決に向けて調査
ナビゲーター
- ドライバーの意図を読み取り、リファクタの指示などしたりする
- つまづいた点、参考になった点などメモに残す(ナレッジ形成)
サイボウズでの事例2:ソロプロとモブプロを両立したスウォーミング
チーム全体が慣れるまでの間ペアプロ・モブプロをずっと行う
慣れた段階でスウォーミングの導入
サイボウズ事例2:スウォーミングとは
Swarming を直訳すると「群れる」です。ソフトウェア開発の文脈では 1 つの問題やタスクを皆で群がって解決するという意味合い
サイボウズ事例2:スウォーミングの方法
優先順位が高いタスクを振られた人をキャプテンとして、キャプテンから招集がかかれば、直ちにメンバーは今の作業を止めて、モブプログラミングを行い早急解決に努める
サイボウズ事例2:スウォーミング導入の結果
スプリントの中盤から完了するようになり、ペロシティが安定するようになった
使うツール
VSCode LiveShare
方法:設計
設計とテスト作成はペア・モブで行う
ペア
- バックエンド1名、フロント1名
- バック2名
- フロント2名
方法:実装
ドライバー:コードを書く
ナビゲーター:ドライバーの補佐をする
時間(1時間など)を決めてドライバーとナビゲーターを交代する