ペアプログラミングで効率を高め、バグを減らす - TechRepublic

ペアプログラミングで効率を高め、バグを減らす - TechRepublic

Justin James は、ペアプログラミングを使用する 2 つの方法について説明し、この演習の作業設定とスキル レベルに関して考慮すべき事項についてヒントを提供します。

何年も前に、エクストリームプログラミング(XP)という概念に触れました。XPの特徴の一つは、プログラマーがコードレビューをペアで、あるいは非常に緊密に連携して行うという点です。当時の私は、これはほとんど愚かなことだと思っていました。確かにコードレビューは役立ちますが、プログラマーがそれほど優秀なら、なぜこのように連携して作業する必要があるのでしょうか?リソースの無駄遣いではないでしょうか?生産性は個別に作業するよりも半分しか上がらないのではないでしょうか?何年も経つうちに私の考え方は変わり、XPをフルタイムの手法として採用したわけではありませんが、ペアプログラミングには計り知れない価値があると考えています。

私が実際にペアプログラミングを実践した経験は、大きく分けて2つあります。1つ目は、2人が真にチームとして一緒にプログラミングを行う方法です。同じ机に座ったり、広い部屋を共有したりして共同作業を行います。一方が作業を「主導」し、もう一方が実際に作業を行います。このアプローチの利点は、両方のプログラマーが同時に作業を確認し、問題に対する革新的な解決策を導き出せることです。多くの場合、片方がもう片方にない知識や情報を持っていることが分かり、この演習を通してその情報が共有されます。また、経験豊富な開発者が経験の浅い開発者に新しいテクニックを教えるのに最適な方法でもあります。

このように働くためには、適切なワークスペースが必要です。2 人が快適に一緒に座れる物理的なスペースが十分に必要です。私のオフィスでは、全員に 6 フィート x 8 フィートのキュービクルが与えられています。これはキュービクルとしては非常に広く、一緒に座るのに十分なスペースがあります。さらに良いことに、大きなテーブルとプロジェクターを備えた会議室があります。もう 1 つの重要な要素は、お互いに話すことができることです。あまりにも多くのオフィスでは、話すことが他の人の大きな気を散らすようなレイアウトになっています。私たちのフロア プランは少しオープンですが、外部のノイズや、会議室で作業しているときのノイズを遮断するために、全員がヘッドフォンを持っています (会議室はノイズを遮断するのには適した部屋ではありません)。このスペースに移転したとき、最初から必要に応じていつでもペアプログラミングを実行できるようにしたいと考えていましたが、この設定で非常にうまくいきました。プログラマーが別のオフィスにいることもあります。 GoToMeeting と電話用の優れたヘッドセット (私は Jabra GN9350 シリーズを愛用しています) を使用すると、中断されることなく何時間もチームとして作業できます。

私がペアプログラミングを活用するもう一つの方法は、徹底的なコードレビューです。このような状況では、コードは既に書かれていますが、書いた人が他の人にそのコードを確認します。状況は、実際に一緒に作業している時と同じです。これは、コードのバグを見つけたり、作業の妥当性を検証したりするのに最適です。直接一緒に作業することの利点は、相手にかかる時間が大幅に短縮されることです。欠点は、ミスが後になって発見され、修正にかかる時間が無駄になるという点です。

ペアプログラミングを行うには、適切な人材が必要です。何をすべきか分からない二人を一緒にやっても、良い結果は得られません。経験の浅い人と非常に経験豊富な人を一緒にやっても、あまり効果はないでしょう。せいぜい実践的なトレーニングセッションになるだけです。知識の共有はペアプログラミングの期待される望ましい成果ですが、生産性の低下は避けたいものです。しかし、経験レベルや経験分野が異なる人同士が協力し合うことで、セッション中だけでなく、その後も生産性が倍増する効果が得られます。

総じて、ペアプログラミングの経験は私自身とチームにとって非常に役立っています。ペアプログラミングをまだ試したことがない方は、ぜひ一度試してみることをお勧めします。

J.Ja

TechRepublic の「あなたの将来には「ペアプログラミング」がありますか?」と「アンケート: 他の開発者とどのように共同作業しますか?」もお読みください。

毎週火曜日に配信される TechRepublic の無料ソフトウェア エンジニア ニュースレターにサインアップして、エンジニアリング スキルを最新の状態に保ってください。

記事をシェア
ジャスティン・ジェームズの画像

ジャスティン・ジェームズ

私は万能なIT人間です。IT業界で一般的な職種があれば、おそらく一度ならず、何度も経験したことがあるでしょう。プログラマー、システム管理者、データベース管理者、PC技術者/修理担当者、ヘルプデスク、ウェブマスター、ウェブデザイナー、ウェブ開発者、アプリケーション開発者、ネットワークエンジニア。どういうわけか、どれもこれも、私の中ではたらきかけているんです!

Tagged: