CONTENT
こんにちは、東京エンジニアのS.Wです。
前回の記事でアジャイル開発とはどういうものかわかっていただけたと思います。
今回はさらに踏み込んで、アジャイル開発に採用される具体的な開発手法である、ペアプログラミングについて特徴をまとめておきたいと思います。
■ペアプログラミング
ペアプログラミングとは、二人一組で1つのプログラム(機能)を開発する手法です。二人がそれぞれの役割で協力して開発を行うことで、様々なメリットが得られます。
■進め方
一人がドライバー、もう一人がナビゲーターという役割で、1台のPCを使い開発・プログラミングを行います。ドライバーは実際にコーディング行う人で、ナビゲーターは要件や仕様に合わせてどのような処理またはコード設計にするのかをドライバーに指示します。
■メリット
・品質の向上
実装するコードはナビゲーターにより常にレビューされている状態なので、コード品質の向上が見込めます。一人でコーディングをしていると、自分にしか分からないようなコードや、意図せず複雑な処理を書いてしまっていることに気付きにくいことがよくあります。ペアプログラミングによりこういったことは減り、標準化されたコードが作成できるようになります。
・コード、知識の共有
コードに対してのノウハウや知識を共有することによる、属人化を防ぐ効果が見込めます。「このコードはあの人に聞かないと分からない」といったことは開発現場ではよくある話ですが、こういった問題の解消も目的とされています。
・教育的効果
プロジェクトのメンバーのスキルは全員が高いわけではないので、スキルの高いメンバーとスキル不足のメンバーを組ませることで、結果としてプロジェクトメンバー全体のスキル向上が見込めます。
・仕様理解
ペアで作業することにより、質疑応答やディスカッションを常にできるため、早い段階で仕様理解が可能になります。結果として進捗の遅れや手戻りといった負の要素が少なくなります。
■デメリット
・コスト増
二人で一つの機能を実装するので単純に製造コストが増えます。
・メンバーのペアプログラミングへの理解
特にベテランメンバーの中には「一人で実装したほうが早い」や「自分には得られるものがない」といった声が上がることもあります。
確かにそうなんですが、アジャイルに限らず開発プロジェクトはチームプレイです。自分だけが効率的に進めても全体の進捗が悪ければプロジェクトは失敗します。メンバー一人一人に目的・趣旨を十分理解してもらう必要があります。
■デメリット
ペアプログラミングの効果を高めるためにすること
・ペアの定期的な入れ替え
ペアを定期的に入れ替えることで、スキルやノウハウ、仕様を全体に浸透させることができます。イテレーションごとに入れ替えるとよいでしょう。
・役割の入れ替えと休憩
ドライバーとナビゲーターの役割は固定せずに1時間や半日などで作業を区切って入れ替えるとよいとされています。
また、ずっとペアで作業というのは神経も相当使います。適度に休憩をはさんで進めましょう。
■最後に
今回はペアプログラミングについて紹介しましたが必ず効果が出るとは言い切れないので、チームで話し合い必要に応じて改善、もしくは止めることも検討しなくてはなりません。大切なのは「顧客にとって価値のあるものを提供し続けること」です。
次回は「アジャイル開発におけるリファクタリング」について紹介します。