背景
これからペアプログラミングを行なうことになったため改めてペアプロについて調べて
メリット/デメリットをまとめてみた
ペアプログラミングとは
- 2人のプログラマーが同じコンピューターを使用して同じプログラムを作成する方法
ドライバー(コードを書く人)/ナビゲーター(指示する人)に分かれるパターンや
テストを書く人/テストに通る実装を行う人に分かれて毎回その役割を交代するパターン
があるみたいです。
メリット
-
コードの質向上
ソロプロで開発を進めている場合プルリクエスト後のコードレビューの際、実装者がなぜそのような実装をしたのかのWhyの部分がわかりづらいため、コード仕様上問題あるコード以外の指摘がレビューから漏れて潜在的なバグになることもある。
また、ペアプロにより思考を共有することでなぜそのコードが書かれたのかという過程を知ることができるのでコードに対してより深い議論をペアと行うことができ、潜在的バグの発生が抑えられコードの質が向上する。
さらに、常にペアに見られるていることを意識したコードを書くようになる。 -
コードレビューが端折れる
変更量の多いコードレビューはレビュワーの負担になるがペアプロを行うことで実装しながらコードレビューが行えるためレビュワーの負担が軽減される。
※開発現場においてはペアプロをしつつコードレビューもするところもあるみたいです。 -
学習の効率up
ソロプロだとわからないことに一人で悩む時間が多くなり無駄な時間を過ごしがちだがペアプロの場合相方が理解していることならその場ですぐに教えてもらえるので調べるコストがかからず効率的。
他にもしょうもない文法ミス、設定ミスがあっても他の人が見ればすぐに解決するパターンが多い。無駄な時間を過ごさなくて良くなり、本来のコーディングに集中できる。 -
チームワークの向上
ペアプロによりチームメンバーとコミュニケーションをとることができチームワークの向上につながる。
デメリット
-
高コスト
単純にリソースが2人分必要になる。
※ペアプロによるコードの質、効率化を踏まえるとペイできるという考え方もある。 -
コミュニケーションのハードルが高い
どちらか片方でもコミュニケーション能力が欠如している場合、作業効率が低下する。 -
スケジュール管理や調整が難しい
ペアと予定を合わせる必要がある。 -
初心者同士ではメリットがほぼない
正しい指示や正しいコーディングがわからない状態での作業になるため -
スキル差のある場合は退屈になる
上級者にとって一方的に教えるだけの簡単な作業になってしまいがち。
※初級者にもわかりやすく教えることで自分の知識をより深めることもできる
まとめ
メリデメは色々あるが上級者-初級者ペアでの人材育成には最適。
そしてとにかくコミュニケーションが大事。リモートだと特に顔や声から相手の
理解度を読み取ることが困難(マスクしてると尚更)なため積極的な
意思表示(相槌や質問するなど)が大事。
とりあえず自分は足引っ張らないようタイピングの練習しようと思いました。
参考
これ面白かったです