あなたはペアを組んでプログラミングを行う「ペアプログラミング」について、メリット・デメリットや詳細をどれくらい知っていますか?この記事ではペアプログラミングの作業方法や「ペアプログラミングをするとエンジニアはどう成長することができるのか」など、良いところも悪いところも徹底解説します。
プログラマーとして活躍し始めた新人さんにとっては、職場で今後体験するであろうペアプログラミングの意義を確認することができる記事となっています。
この記事の目次
ペアプログラミングとは
2人のプログラマーによる共同の開発
ペアプログラミングとは、2人のプログラマーが共同でソフトウェア開発を行う手法のことで、相補的な作業を行います。
キーボードを操作してコードを書く方を「ドライバ」と呼び、ドライバに対して助言や提案をする方を「パートナー」「オブザーバー」「ナビゲータ」と呼びます。
ドライバは、ナビゲータがやってくれることを踏まえてキーボードを操作し、途中でナビゲータと交代しても良いとされています。
ナビゲータは、エラーチェック・APIの検索・コードのより良い構造を考える、などの作業を行います。
30分毎、あるいは単体テストを1つ完成させる度に役割を交代するのが良いとされています。
また、1日1度の頻度でパートナーを変えることも、作業効率化に良いとされています。
2人で行うことによって規範意識が増え、個人の作業よりも怠けることなく作業を進める事ができる可能性も高くなります。
また、より良いコードを作れることや相乗効果により、設計の質が向上することも期待されます。
アジャイル開発(特にXP)でよく採用される
アジャイルソフトウェア開発とは、ソフトウェア工学において迅速かつ適応的にソフトウェア開発を行う軽量な開発手法群の総称です。
近年ではこの開発法が数多く考案されており、主な手法例としてエクストリーム・プログラミング(XP)などがあります。
これまでは開発が進むにつれて変更コストが大きくなることを前提に開発手法が構築されていましたが、これに対してXPは自動テストを導入するなど様々な対策をすることにより、開発が進んでも変更コストが大きくならないように工夫されています。
つまり、変更に対する柔軟性が実現されているのです。
また、XPは比較的少人数の開発に最も適用しやすくなっており、5つの価値と19の具体的なプラクティスが定義されています。
XPはドキュメントよりもソースコードを使用し、組織的開発の歯車となることよりも個人の責任と勇気を重んじる人間中心の開発プロセスであるとしています。
ペアプログラミングの作業方法
ペアプログラミングではまずはじめに、インデントや括弧の付け方などの人の好みに左右されやすい細かいことに関するルールを定義します。そして、ペアプログラミングでする作業内容を決めます。1~2時間で終わらせることのできる、はっきりとした仕事を決めることが多いです。
作業に入ってからはコミュニケーションをしっかり取り、お互いの作業内容を確認し合いながら進めていきます。
それぞれが細かく伝え合うことで作業ミスをなくすだけでなく、より良いプログラムをつくることが可能になってくるのです。
相手の作業内容を5分確認しないだけで、一人でプログラミングを書いているのと同じことになってしまいます。そのため、お互いがお互いを頼りにし、支え合いながら進めていくことがとても大切です。
また、ドライバの作業では集中力を使いますし、ナビゲータは観察力を必要とします。
30分以上保つことは難しいとされているので、作業は休憩を挟みながら交代して行っていくのが良いとされています。
また、ミスに気づいてもすぐ指摘をするのではなく、その行を書き終わるまで待ちます。途中で話しかけてしまうと気が散って集中力が切れてしまう恐れがあるからです。
このように、ドライバになると、打ち込むことで作業を覚えることができるので、経験の少ない方は数多くドライバの仕事をすると良いでしょう。
ペアプログラミングのメリット
新人がベテランからノウハウを学習できる
ペアを組むことによって、一人でプログラミングしている時と同じ状況を作らないようにするためにも、相手とコミュニケーションを取りながら作業を進めていくことが必要不可欠になってきます。
自分より経験があり技術力がある人に見てもらってペアプログラミングすることにより、一人でコードを書いているよりもコーディングの勉強になる上に、開発を行う際にもどのように実装されたかをリアルタイムで見ることができるので、情報共有がしやすくなります。
また、一人がコードを書いている時、もう一人はそのコードを同時に見ているので、問題点があればその場で指摘ができるうえ、解決もその場で行うことができます。
以上のように、新人がドライバになってコードを打ち込んでいる時は、ベテランの方に確認してもらうことができますし、新人がナビゲータになって観察力を磨いているときは、ベテランの仕事の仕方を勉強することができるというメリットがあります。
作業効率アップ
ソースコードを確認する時間が短縮できるため、Gitでソースコードを管理しているときにもメリットがあります。
GitでPull Requestを送って他者にマージしてもらう場合を想定します。
リクエストを送った人が、リクエスト送信先とペアプログラミングをしていれば作業は大きく効率化されます。リクエストを受け取った人は、コードを読むのに時間をかけなくてもどういう実装がされているのかがわかるので、すぐにマージをすることができルカらです。
また、2人で作業することにより、コーティングとコードレビューをほぼ同時に行うことができます。
さらに2人以上がコードを書き、確認することで自分の書いたコードへの責任意識が強くなります。万が一障害などが起こった場合でも、その部分のコードを書いたのが誰なのかが把握しやすく、対処のスピードが早くなります。
その他に「リモートペアプログラミング」というテレワークと呼ばれる勤労形態の一種の作業の仕方もあります。これは、情報通信機器等を活用し、時間や場所の制約を受けずに柔軟に働くことができるものです。
何らかの理由で遠隔地で作業する場合は、文字を入力する度に相手側のコンピュータに変更がリアルタイムで反映されるエディタや統合開発環境を使用したり、画面転送のためのソフトウェアを使用したりして行われます。
知識の相乗効果
ペアプログラミングを行った場合には個々の知識をチーム全体で共有することができます。
また2人以上の知識を出し合うことでより良いコードを作成することができ、相乗効果により設計の質が向上することが期待されます。
その他、勤労意欲の向上も見られます。
チームの各人がお互いをよりよく知ることができるため、結束力を生み出しやすくなり、1人で作業するよりも楽しいと感じる開発者もいるのです。
経験豊富なプログラマであれば、さまざまなアルゴリズムや実装のテクニックを思いつくことができますが、そのようなプログラマがチーム内に多く存在するケースは稀です。
ペアプログラミングは、どのようなコードを作成するか1人で悩みこんでしまうことをなくし、より良いアルゴリズム・コードにブラッシュアップしていくことが可能になります。
知恵を出し合うことがペアプログラミングなので、結果的にチーム内で「アルゴリズム」や「実装のテクニック」の共有が進み、新人プログラマはベテランプログラマから多くのことを学ぶことになります。
この記事のハッシュタグ
ペアプログラミングのデメリット
良いことばかりのようにも思えるペアプログラミングですが、デメリットもないわけではありません。
意見が衝突することがある
経験を積んだ技術者は、非常に正確なコードを書きます。
ペアプログラミングの目的は、正確性の向上だけではなく、知識や技術の共有という面もあります。
エクストリーム・プログラミングなどではコーティング・スタイルは統一すべきとしています。とはいえ実際には、コーティング・スタイルの違いによっての意見の食い違いが生じる可能性はそれなりに大きいです。
また、2人で1つのプログラミングを行うため、作業の生産性が落ちてしまうことがあるようです。
しかし、一方でペアプログラミングにより生産性が大きく向上したという報告も多々あるため、自分たちのチームに適しているかどうかを見極めることが大切になります。
生産性が落ちてしまったとしても、教育的配慮は必要です。
難しい選択をしなければならない時もあるようですが、先輩がナビゲータをし、新入社員がドライバになって実践していくことで、スキルアップに繋がります。
まとめ
一人でプログラミングする場合とペアを組んでプログラミングする場合では、作業の進め方も違いますし、それぞれの好みや個性が出て意見が食い違うこともあるため、ペアプログラミングを苦手とする方もいます。
しかし、逆に自分以外のやり方や考え方から新たな発見ができたり、集中力や観察力が増してスキルアップに繋がることもあります。
自分がベテランになったとき、新人の教育をしてあげられる先輩になれる様、作業の仕方を身に付けておきましょう。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。