FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

ペアプログラミングの勧め

みなさま、こんにちは。

昨年、11月に中途で入社しました堀越というものでございます。

つい最近のお話ですが、業務でペアプログラミングなるものを実施しました。

良いなと感じる点が多かったので説明も兼ねて共有します。

ペアプログラミング

2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。

引用元:ペアプログラミング - Wikipedia

ペアプログラミング実施の背景

弊社では、4月よりスクラムの取り組みを改善する施策をしており、

目標の一つに複数の開発チームがそれぞれが所有する開発タスクを

チーム間を跨いで対応可能にするというものがあります。

ただし、その為には他のチームが抱えるプロダクトや業務に関する知識が備わっている前提となるため、

この課題に対する一部アクションとして他チームメンバとペアプログラミングの実施に至ったという背景があります。

ペアプログラミングを始める前に

1. パートナーを探す

ペアプログラミングは1人ではできません。

勇気を出して気になるあの子を誘ってみましょう。

2. ドライバーとナビゲータに分担する

ペアプログラミングは2人で作業を進めるとはいうものの、

端末を一台しか使いませんのでドライバーとナビゲータを決めましょう。

ドライバはコードを書く人、ナビゲータは作業指示をする人というのが私の理解ですが、

ナビゲータは作業指示ではなく、作業を促すようなコメントをするのが良いとする文献もあるようです。

3. ドライバーとナビゲータの交代サイクル

作業分担が長時間同じだと疲れてしまうので、

ドライバーとナビゲータの交代時間を決めましょう。

私の場合、おおよそ30分間隔だったと記憶しています。

4. 着手する作業を決める

作業を開始してから何するか考えるのは時間がもったいないですね。

あらかじめ着手する作業内容を決めておきましょう。

その際、どこまでの作業をゴールとするのか目標設定しておくと尚良いでしょう

実際にやってみて良いなと思った点

開発Tipsを共有できる

CUI のコマンドや、IDEのショートカットに何を使うか等の

細かいキーボード操作や、仕事の仕方など実際に一人で作業していると

なかなか共有する機会が無いと思います。

ペアプログラミングをしていく中でパートナーの作業風景から

得るものが少なからずあると思います。

私はこの結果、生産性が3倍向上した気持ちになりました。

一人よりも二人のほうが問題解決できることが多い

1人で作業していたら時間がかかっていた、ハマっていたであろうことが、

2人で立ち向かうことでさほど問題にならないことが多いと思います。

何かの問題に直面した際、パートナーに状況を説明することで、

頭が整理されて自己解決したなんてこともあると思います。

プルリクに出すコードの品質があがる

ドライバーがコードを書いている最中、ナビゲータはコードレビューする形になるので、

実装不備があった時点ですぐに指摘することができます。

そのため、プルリクを出す時点である程度品質が担保された状態になります。

所感

個人的には自身の成長につながる部分が多かったのでペアプログラミングお勧めです。

ただし、成果物を出すのに2人分のリソースを割くので全体での時間はかかっているかもしませんし、

一人で作業することを好み、自身の作業スタイルを貫きたいエンジニアにとっては、

ストレスに感じてしまうところもあるかもしれません。

メリット、デメリットを考慮して、必要に応じて実施するのが良いのではないでしょうか。

最後に

僕とペアプロ…、しませんか?

お誘いお待ちしてます。